Docker在Ubuntu中的部署全流程
本文介紹在Linux操作系統(tǒng)Ubuntu的18.04
及以上版本中,配置開源容器化平臺(tái)和工具集Docker的詳細(xì)方法;其中,我們以配置Docker平臺(tái)的核心組件之一——Docker Engine為例來詳細(xì)介紹。
首先,大家需要明確,我們常說的Docker,其實(shí)就是指的Docker Desktop或Docker Engine這兩個(gè)東西。其中,Docker Desktop軟件是適合于桌面操作系統(tǒng)的、完整的Docker,而Docker Engine則是Docker的核心運(yùn)行引擎;Docker Desktop軟件包含了Docker Engine和其他一些附加的功能。關(guān)于下載Docker Desktop還是Docker Engine,簡(jiǎn)單來說,就是如果在桌面操作系統(tǒng)(比如Windows電腦、Mac電腦中),就下載Docker Desktop軟件,因?yàn)槠淇梢酝ㄟ^圖形化的界面來實(shí)現(xiàn)多種Docker功能;若是在服務(wù)器、Linux電腦等平臺(tái),則下載Docker Engine即可,因?yàn)槠淇梢酝ㄟ^命令行來完成各項(xiàng)Docker功能。關(guān)于二者的更詳細(xì)介紹與區(qū)分,大家可以參考Docker官網(wǎng),這里就不再贅述。
話不多說,我們開始Docker Engine的具體配置。其中,本文所涉及的全部代碼,都在終端中執(zhí)行即可。
1 預(yù)處理
首先,我們需要確保電腦中沒有老版本的Docker及其組件。例如,我這里的電腦雖然沒有Docker應(yīng)用,但是還是能搜索到一些關(guān)于docker
的文件或文件夾;如下圖所示。
因此,除非大家的電腦是剛剛買回來、什么都沒有配置過的新電腦,其他情況下都建議大家首先執(zhí)行如下的代碼。
sudo apt-get remove docker docker-engine docker.io containerd runc
上述代碼使用apt-get
命令來移除Docker相關(guān)軟件包和容器運(yùn)行時(shí)的命令。其中,sudo
是一個(gè)用于以超級(jí)用戶(root)權(quán)限運(yùn)行命令的關(guān)鍵詞;通過使用sudo
,可以執(zhí)行需要管理員權(quán)限的操作。隨后的apt-get
是用于在Debian和Ubuntu等基于Debian的Linux發(fā)行版中進(jìn)行軟件包管理的命令行工具。remove
是apt-get
命令的一個(gè)選項(xiàng),用于從系統(tǒng)中卸載指定的軟件包。docker
、docker-engine
、docker.io
、containerd
和runc
都是要卸載的軟件包的名稱,指定了Docker及其相關(guān)組件的軟件包名稱。通過在命令中列出這些軟件包的名稱,apt-get
將卸載它們及其相關(guān)的文件和配置。
運(yùn)行上述代碼,如下圖所示??梢钥吹剑业碾娔X中其實(shí)之前也并沒有什么Docker的相關(guān)文件。
此外,我們還可以用Docker官網(wǎng)提供的一句代碼來實(shí)現(xiàn)上述類似的功能;它的作用和前述代碼一致。
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
運(yùn)行上述代碼,如下圖所示。
接下來,我們需要更新一下系統(tǒng)的軟件包列表;通過如下的代碼即可實(shí)現(xiàn)這一需求。
sudo apt-get update
運(yùn)行上述代碼,系統(tǒng)會(huì)連接到軟件包倉(cāng)庫(kù)服務(wù)器,并檢查是否有可用的更新版本和新的軟件包。這個(gè)命令會(huì)更新本地系統(tǒng)中的軟件包列表,以反映最新的可用軟件包信息。
在運(yùn)行其他apt-get
命令(如安裝軟件包、升級(jí)系統(tǒng)等)之前,通常建議先運(yùn)行上述代碼,確保系統(tǒng)獲得最新的軟件包列表。這樣可以確保我們從最新的軟件包倉(cāng)庫(kù)中獲取軟件包,并減少因?yàn)榕f版本軟件包而可能導(dǎo)致的問題。
需要注意,apt-get update
只會(huì)更新軟件包列表,而不會(huì)實(shí)際下載或安裝軟件包。如果后面我們要安裝或升級(jí)軟件包,需要進(jìn)一步使用apt-get install
或apt-get upgrade
才可以。
運(yùn)行上述代碼,如下圖所示。其中紫色框內(nèi)是我們輸入電腦賬戶密碼的地方。
運(yùn)行上述代碼,有的時(shí)候會(huì)有一些報(bào)錯(cuò),如下圖所示。但一般情況下,這些報(bào)錯(cuò)都不會(huì)影響我們后續(xù)的正常操作。
2 存儲(chǔ)庫(kù)配置
接下來,我們需要通過如下的代碼,使得apt
可以通過HTTPS來使用倉(cāng)庫(kù)(這個(gè)是Docker必要的條件)。
sudo apt-get install ca-certificates curl gnupg
其中,ca-certificates
是一個(gè)軟件包名稱,它包含了一組根證書和中間證書,用于驗(yàn)證HTTPS連接的安全性;安裝ca-certificates
軟件包可以確保系統(tǒng)具有最新的根證書列表。curl
是一個(gè)用于在命令行中進(jìn)行網(wǎng)絡(luò)請(qǐng)求的工具,它支持多種協(xié)議,如HTTP、HTTPS、FTP等;安裝curl
軟件包可以讓我們?cè)诮K端中方便地進(jìn)行網(wǎng)絡(luò)請(qǐng)求和下載文件。gnupg
是GNU隱私衛(wèi)士(GNU Privacy Guard)的縮寫,也稱為GPG;它是一個(gè)用于加密和簽名數(shù)據(jù)的工具集,安裝gnupg
軟件包可以在系統(tǒng)中使用GPG密鑰和加密功能。
運(yùn)行上述代碼,如下圖所示。
接下來,我們通過如下代碼,設(shè)置Docker軟件源的GPG密鑰;這個(gè)GPG是一個(gè)用于加密和簽名數(shù)據(jù)的工具。
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
首先,-m 0755
是設(shè)置文件或目錄的權(quán)限的選項(xiàng),0755
表示所有者具有讀、寫和執(zhí)行權(quán)限,而其他用戶具有讀和執(zhí)行權(quán)限。隨后的-d /etc/apt/keyrings
指定要?jiǎng)?chuàng)建的目錄路徑,其創(chuàng)建一個(gè)名為/etc/apt/keyrings
的目錄。該命令的目的是創(chuàng)建/etc/apt/keyrings
目錄,該目錄將用于存放密鑰文件。
接下來,-fsSL
是curl
命令的選項(xiàng),用于指定請(qǐng)求的方式和參數(shù);其中,-fsSL
意味著以靜默模式發(fā)送請(qǐng)求(不顯示進(jìn)度信息),并跟隨重定向。其后的鏈接,則是要獲取的GPG密鑰的URL。再隨后的|
是管道符號(hào),用于將前一個(gè)命令的輸出作為后一個(gè)命令的輸入。--dearmor
用于將二進(jìn)制格式的GPG密鑰轉(zhuǎn)換為文本格式,并隨后指定將轉(zhuǎn)換后的GPG密鑰保存到/etc/apt/keyrings/docker.gpg
文件中。該命令的目的是使用curl
從指定的URL下載Docker軟件源的GPG密鑰,并將其轉(zhuǎn)換為文本格式后保存。
其次,chmod
是一個(gè)用于修改文件或目錄權(quán)限的命令,a+r
表示將讀權(quán)限授予所有用戶,最后的路徑則是要修改權(quán)限的文件路徑。該命令的目的是將GPG密鑰文件的讀權(quán)限授予所有用戶,以確保所有用戶都能夠讀取該文件中的密鑰信息。
運(yùn)行上述代碼,如下圖所示。
接下來,我們需要配置Docker存儲(chǔ)庫(kù),代碼如下。
echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
首先,echo
是一個(gè)用于在終端輸出文本的命令,引號(hào)內(nèi)的內(nèi)容則是要輸出的文本。這里的[arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg]
是一個(gè)APT源的配置選項(xiàng),用于指定軟件體系結(jié)構(gòu)和GPG密鑰的位置;其中的$(dpkg --print-architecture)
是一個(gè)子命令,用于獲取當(dāng)前系統(tǒng)的體系結(jié)構(gòu)。隨后的鏈接,則是Docker軟件源的URL。
接下來,$(. /etc/os-release && echo "$VERSION_CODENAME")
是一個(gè)子命令,用于獲取當(dāng)前系統(tǒng)的Ubuntu版本代號(hào)(codename
),其后的/etc/os-release
文件包含有關(guān)操作系統(tǒng)的信息。stable
表示要使用Docker軟件源的穩(wěn)定版本。
隨后,tee
是一個(gè)用于從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù)并將其寫入文件的命令。/etc/apt/sources.list.d/docker.list
是要寫入數(shù)據(jù)的文件路徑。> /dev/null
是將命令的輸出重定向到空設(shè)備(null
設(shè)備),即丟棄輸出。該命令的目的是使用sudo
權(quán)限將Docker軟件源的配置信息寫入到/etc/apt/sources.list.d/docker.list
文件中,并將輸出重定向到空設(shè)備,以避免輸出到終端。
運(yùn)行上述代碼,如下圖所示。
接下來,不知為何,按照官網(wǎng)的流程,我們還需要再更新一下系統(tǒng)的軟件包列表;我們就按照官網(wǎng)的說法照做即可。
sudo apt-get update
運(yùn)行上述代碼,如下圖所示。
3 Docker Engine配置
接下來,我們就可以開始配置Docker Engine自身了。配置Docker Engine的流程還是很簡(jiǎn)單的,直接執(zhí)行如下的代碼即可。
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
其中,docker-ce
即Docker社區(qū)版,是Docker的核心組件;docker-ce-cli
表示Docker CLI (命令行界面),用于與Docker進(jìn)行交互和管理容器。containerd
用于管理容器的生命周期。docker-buildx-plugin
是Docker Buildx插件,用于構(gòu)建多平臺(tái)的Docker鏡像;同樣的,docker-compose-plugin
也是Docker Compose插件,用于定義和管理多容器應(yīng)用的編排和部署。
運(yùn)行上述代碼,如下圖所示。
4 Docker Engine配置驗(yàn)證
隨后,我們驗(yàn)證一下Docker Engine的配置成功與否。通過如下的代碼即可加以驗(yàn)證。該命令會(huì)下載一個(gè)測(cè)試映像并在容器中運(yùn)行它。
sudo docker run hello-world
運(yùn)行上述代碼,如下圖所示。
出現(xiàn)如上圖所示的字樣,就說明我們的Docker Engine配置已經(jīng)成功了。
需要說明的是,我們這篇文章只介紹了Docker Engine的下載、配置方法;關(guān)于以非root用戶管理Docker的方法,以及Docker Engine具體的使用方法,我們將在后續(xù)的博客中加以詳細(xì)的介紹。
至此,大功告成。
以上就是Docker在Ubuntu中的部署全流程的詳細(xì)內(nèi)容,更多關(guān)于Docker在Ubuntu中部署的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解如何在 Docker 中設(shè)置 Go 并部署應(yīng)用
在本教程中,我們將學(xué)習(xí)如何使用 docker 部署 golang web 應(yīng)用程序。 具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03Docker中安裝Redis并開啟遠(yuǎn)程訪問的詳細(xì)步驟
這篇文章主要介紹了Docker中安裝Redis并開啟遠(yuǎn)程訪問的詳細(xì)步驟,文中有詳細(xì)的代碼示例供大家參考,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2025-01-01安裝harbor作為docker鏡像倉(cāng)庫(kù)的問題
這篇文章主要介紹了安裝harbor作為docker鏡像倉(cāng)庫(kù),主要包括docker和docker-compose離線部署,安裝harbor作為本地的倉(cāng)庫(kù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06idea整合docker快速部署springboot應(yīng)用的詳細(xì)過程
這篇文章主要介紹了idea整合docker快速部署springboot應(yīng)用,文中給大家提到關(guān)于安裝docker步驟,idea連接遠(yuǎn)程docker的方法,需要的朋友可以參考下2021-10-10Docker實(shí)踐—CentOS7上部署Kubernetes詳解
kubernetes作為docker的管理工具是由Google開源提供,但是kubernetes的安裝一直折磨著運(yùn)維人員,在這一系列的文章中我將會(huì)由kubernetes的安裝講起為大家介紹kubernetes的安裝使用等過程,也作為自己的學(xué)習(xí)筆記。2017-01-01