Ubuntu下安裝docker方法詳解

從19年開始,在華爲的一次面試中第一次聽到docker,後來因爲找工作和入職開發任務繁忙沒有太多的去研究這一塊,直到最近我們公司的軟件供應商交付的產品是用docker作爲承載來開發,這一次必須來研究研究如何部署docker了。

  1. 部署之前的準備
  2. 準備好相應的軟件
  3. 測試
    4.結語

一、部署之前的準備

部署之前必須得說一句,我之前用的是window7系統32位,但是拿到官方文檔一看才知道,用現在的系統可能永遠都用不上docker了(因爲當時我的第一想法是直接使用docker Desktop for windows),所以我把電腦先從win7 32位更新到win10 32位,後來又更新成64位的。
docker官網對於安裝環境的要求裝了win10 64位才發現還是有坑,因爲docker desktop for Windows只支持win10專業版,並且版本號要在15603以上。當時彼時我還是沒有馬上啓動虛擬機的決定,因爲在查閱資料後發現可以通過DockerToolbox的方式來兼容win10 15603以下的版本,於是我下載之後嘗試通過Docker Toolbox的方式來完成docker來安裝,在安裝完成之後電腦桌面上多出來這幾個軟件圖標, 安裝完成之後多出來的三個軟件當然第一時間我打開了最左邊的Docker Quickstart Terminal。
但是出現了這樣的不友好的頁面,在來來回回嘗試了幾回之後我發現這種方式體驗並不好,而且最終在同事的幫助下也沒能完成開發環境的搭建。
Docker Quckstart 啓動之後
在同事的建議之下,我在VirtualBox裏面安裝了Ubuntu虛擬機16.04,當然安裝虛擬機會花費大概1~2小時左右的時間,這點要有心理準備,在安裝好了之後,我發現原生的Ubuntu16.04並不能直接爲我所用,比如說當我在終端執行apt-get install git的時候顯示沒有候選的安裝包
在這裏插入圖片描述Google之發現是下載源的問題。Ubuntu因爲是國外的系統,所以默認提供的源是國外的網址,一是下載速度慢,另一點是一些安裝包不完整,這時候最明智的做法是,替換成國內的鏡像源。替換之前建議備份一下。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

然後,修改sources.list的權限,使其可編輯:

sudo chmod 777 /etc/apt/sources.list

接着,編輯sources.list文件(這裏建議是用gedit):

sudo gedit /etc/apt/sources.list

把裏面的內容替換成阿里或者清華的源:

阿里源:
1
	
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

清華的源:

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

在替換完成之後,一定要做的事情是update一下軟件列表:

sudo apt-get update

至此,換源完成。

More:在這裏想多說一點是什麼呢,可能有些開發人員也和我一樣,在更換完源之後在執行sudo apt-get install [軟件包名稱] 的時候,還是會報錯,類似E:Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavialable)
E: Unable to acquire the dpkg fronted lock (/var/lib/dpkg/lock-frontend), is another process using it?
這種一般是因爲鎖的問題,對應的解決方法是:刪掉之前遺留下來的進程

sudo rm /var/cache/apt/archives/lock-frontend
sudo rm /var/lib/dpkg/lock-frontend

當然,我們要根據實際情況來執行相應的命令,如果錯誤提示如下:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavialable)
這時需要修改命令爲:

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

二、開始部署

在解決了部署的環境問題之後,我們着手開始部署docker。目前,docker CE支持的Ubuntu版本有:
Bionic 18.04 (LTS)
.Xenial 16.04 (LTS)
.Trusty 14.04 (LTS) (Docker CE v18.06 及以下版本)
***

Docker CE 可以安裝在 64 位的 x86 平臺或 ARM 平臺上。Ubuntu 發行版中,
LTS(Long-Term-Support)長期支持版本,會獲得 5 年的升級維護支持,這樣的
版本會更穩定,因此在生產環境中推薦使用 LTS 版本。
首先,卸載舊版的docker(如果存在的話)

sudo apt-get remove docker \
	docker-engine \
	docker.io

Ubuntu16.04
Ubuntu16.04上的Docker CE默認使用overlay2 存儲層驅動,無需手動配置。
使用APT安裝
由於 apt 源使用 HTTPS 以確保軟件下載過程中不被篡改。因此,我們首先需要
添加使用 HTTPS 傳輸的軟件包以及 CA 證書。

sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get install ca-certificates
sudo apt-get install curl
sudo apt-get install software-properties-common

爲了確認所下載軟件包的合法性,還需要添加軟件源的 GPG 密鑰。

$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/
gpg | sudo apt-key add -

引用的是國內中科大的鏡像源

然後,我們需要向source.list 中添加Docker軟件源

sudo apt-add-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linu
x/ubuntu \
$(lsb_release -cs) \
stable"

官方源:

#$ sudo add-apt-repository \
# "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
# $(lsb_release -cs) \
# stable"

(以上命令會添加穩定版本的 Docker CE APT 鏡像源,如果需要測試或每日構
建版本的 Docker CE 請將 stable 改爲 test 或者 nightly。)

安裝Docker CE
更新aptr軟件包緩存,並安裝docker-ce:

sudo apt-get update
sudo apt-get install docker-ce

在這裏我想說的是,我使用的是Ubuntu16.04LTS,但是在實際執行的過程中,並沒有出現想要的效果,相反報錯找不到候選的源
報錯提示
然後我又按提示,準備安裝docker-ce-cli:amd64,同樣安裝不成功
在這裏插入圖片描述最後,在嘗試安裝依賴包的時候,我發現了替代方案,安裝docker.io

sudo apt-get install docker.io

成功,然後啓動docker。

sudo systemctl enable docker
sudo systemctl start docker

Ubuntu 14.04使用如下命令啓動:

sudo service docker start

三、 測試docker是否安裝成功

在terminal裏面輸入:

sudo docker run hello-world

但是,在這裏並沒有出現預期的成功提示,而是提示:
在這裏插入圖片描述這個時候我才明白,我少配置了一個東西,導致docker無法在本地找到hello-world的鏡像源,也無法從docker的庫裏去拉去鏡像源,出現這個問題的原因是因爲我們沒有配置鏡像加速器,解決這個問題我們可以通過阿里雲官方鏡像加速幫助文檔來獲取,在頁面的最下面,找到加速器地址的鏈接,通過登錄阿里雲帳號,每個人都可以生成自己的鏡像加速器地址:
在這裏插入圖片描述然後,切換到/etc/docker目錄下面,編輯daemon.json文件,通常這個文件是沒有的,需要我們先用touch命令創建好,然後再把剛纔生成的加速器地址放到裏面來:

"registry-mirrors":["https://yoururl.mirror.aliyuncs.com"],

注意:因爲在這裏對docker做了重新配置,所以要求我們對docker服務器進行重啓。

sudo systemctl restart docker

重啓之後,可以通過

sudo systemctl status docker

來查看docker的狀態。
啓動結果發現是正常啓動的,然後我們來測試。

sudo docker run hello-world

當看到下面的界面的時候,表示我們已經成功了。
在這裏插入圖片描述docker正式在虛擬機上跑起來了。👏

四、結語:

除了Ubuntu,docker 也可以在Fedora、Debian、CentOS、MacOS上部署運行,但是目前對於windows的支持還是比較有限,這也決定了大多數時候docker的移植性比較強,在一般用來做服務器的系統上都可以跑起來,加上docker在資源利用上的高效和CICD方面的優秀性能,相信在未來一定會成爲越來越多開發人員的選擇。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章