怎么做網(wǎng)站百度貼吧網(wǎng)站seo快速排名優(yōu)化的軟件
在 Ubuntu Server 22.04 上安裝 Docker 的詳細(xì)步驟
本文檔詳細(xì)記錄了在 Ubuntu Server 22.04 上安裝 Docker 的完整過(guò)程,包括解決過(guò)程中遇到的問(wèn)題。希望能對(duì)讀者有所幫助。
安裝過(guò)程,重點(diǎn)需要看官方文檔。https://docs.docker.com/engine/install/ubuntu/
目錄
- 卸載沖突的軟件包
- 更新系統(tǒng)軟件包
- 安裝依賴(lài)包
- 添加 Docker 中科大 GPG 密鑰
- 添加 Docker 中科大鏡像穩(wěn)定版軟件源
- 再次更新軟件包
- 安裝最新版本的 Docker
- 配置 Docker 使用鏡像加速器(hub)
- 重新啟動(dòng) Docker 服務(wù)
- 驗(yàn)證 Docker 安裝
- 實(shí)時(shí)查看 Docker 服務(wù)日志
- 附加資源
- 總結(jié)
步驟 1:卸載沖突的軟件包
在安裝 Docker Engine 之前,您需要卸載所有有沖突的軟件包。發(fā)行版維護(hù)者在 APT 中提供了 Docker 軟件包的非官方發(fā)行版。您必須先卸載這些軟件包,然后才能安裝 Docker Engine 的正式版本。
要卸載的非官方軟件包包括:
- docker.io
- docker-compose
- docker-compose-v2
- docker-doc
- podman-docker
此外,Docker Engine 依賴(lài)于 containerd
和 runc
。Docker Engine 將這些依賴(lài)項(xiàng)捆綁為一個(gè)包:containerd.io
。如果您之前安裝了 containerd
或 runc
,請(qǐng)卸載它們以避免與 Docker Engine 捆綁的版本發(fā)生沖突。
運(yùn)行以下命令來(lái)卸載所有沖突的包:
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
apt-get
可能會(huì)報(bào)告您沒(méi)有安裝這些包。
注意:卸載 Docker 時(shí),不會(huì)自動(dòng)刪除存儲(chǔ)在 /var/lib/docker/
中的圖像、容器、卷和網(wǎng)絡(luò)。如果您想從全新安裝開(kāi)始,并且希望清理所有現(xiàn)有數(shù)據(jù),請(qǐng)閱讀 卸載 Docker Engine 部分。
步驟 2:更新系統(tǒng)軟件包
首先,更新系統(tǒng)中的現(xiàn)有軟件包:
sudo apt update
步驟 3:安裝依賴(lài)包
安裝必要的依賴(lài)包,這些包用于通過(guò) HTTPS 獲取軟件倉(cāng)庫(kù):
sudo apt install apt-transport-https ca-certificates curl software-properties-common
步驟 4:添加 Docker 中科大 GPG 密鑰
為了確保下載的 Docker 軟件包的真實(shí)性和完整性,我們需要添加 Docker 的 GPG 密鑰:
sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL http://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
可能的問(wèn)題
-
無(wú)法下載 GPG 密鑰:
- 錯(cuò)誤信息:
curl: (6) Could not resolve host: mirrors.ustc.edu.cn
- 解決方案:在網(wǎng)上搜索其他鏡像站點(diǎn)。參考連接:https://blog.csdn.net/m0_46471328/article/details/138043873
背景知識(shí):GPG 密鑰用于驗(yàn)證軟件包的完整性和真實(shí)性,確保下載的軟件包沒(méi)有被篡改。
- 錯(cuò)誤信息:
步驟 5:添加 Docker 中科大鏡像穩(wěn)定版軟件源
我們使用中科大的鏡像源來(lái)加快下載速度:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] http://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
可能的問(wèn)題
-
鏡像源添加失敗:
- 錯(cuò)誤信息:
bash: /etc/apt/sources.list.d/docker.list: Permission denied
- 解決方案:確保使用
sudo
運(yùn)行命令以獲得必要的權(quán)限。
背景知識(shí):軟件源是存儲(chǔ)軟件包的服務(wù)器地址,添加 Docker 的中科大鏡像源可以加快下載速度,并提高可靠性。
- 錯(cuò)誤信息:
步驟 6:再次更新軟件包
添加新的 Docker 軟件源后,再次更新系統(tǒng)中的軟件包索引:
sudo apt update
可能的問(wèn)題
-
更新失敗:
- 錯(cuò)誤信息:
Failed to fetch http://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/dists/focal/stable/binary-amd64/Packages 404 Not Found
- 解決方案:檢查
sources.list.d/docker.list
文件中的鏡像源地址是否正確,并確認(rèn)中科大鏡像源可用。
背景知識(shí):更新軟件包索引是為了讓系統(tǒng)知道最新的軟件包信息,包括新添加的軟件源中的包。
- 錯(cuò)誤信息:
步驟 7:安裝最新版本的 Docker
安裝 Docker 及其依賴(lài)包:
sudo apt install docker-ce docker-ce-cli containerd.io
可能的問(wèn)題
-
安裝失敗:
- 錯(cuò)誤信息:
E: Unable to locate package docker-ce
- 解決方案:確保之前步驟中的鏡像源已正確添加并更新了軟件包索引。
背景知識(shí):Docker 是一個(gè)開(kāi)源的平臺(tái),用于開(kāi)發(fā)、交付和運(yùn)行應(yīng)用程序。它將應(yīng)用程序及其依賴(lài)項(xiàng)打包到一個(gè)標(biāo)準(zhǔn)化的單元中,稱(chēng)為容器。
- 錯(cuò)誤信息:
步驟 8:配置 Docker 使用鏡像加速器(hub)
由于國(guó)內(nèi)訪問(wèn) Docker Hub 可能會(huì)有速度和連接問(wèn)題,我們配置 Docker 使用騰訊云的鏡像加速器:
sudo mkdir -p /etc/docker
echo '{"registry-mirrors": ["https://ccr.ccs.tencentyun.com"]
}' | sudo tee /etc/docker/daemon.json > /dev/null
可能的問(wèn)題
-
無(wú)法訪問(wèn)鏡像加速器:
- 錯(cuò)誤信息:
dial tcp: lookup ccr.ccs.tencentyun.com on 127.0.0.53:53: no such host
- 解決方案:確保配置的鏡像加速器地址正確并可訪問(wèn),可能需要更換其他地址。地址 127.0.0.53:53 是一個(gè)本地 DNS 緩存服務(wù),通常是由系統(tǒng)的 systemd-resolved 服務(wù)提供的。
背景知識(shí):鏡像加速器可以提高從 Docker Hub 拉取鏡像的速度,特別是在國(guó)內(nèi)網(wǎng)絡(luò)環(huán)境下。
- 錯(cuò)誤信息:
步驟 9:重新啟動(dòng) Docker 服務(wù)
使配置生效,重新啟動(dòng) Docker 服務(wù):
sudo systemctl daemon-reload
sudo systemctl restart docker
步驟 10:驗(yàn)證 Docker 安裝
運(yùn)行一個(gè)簡(jiǎn)單的 Docker 容器來(lái)驗(yàn)證安裝是否成功:
sudo docker run hello-world
可能的問(wèn)題
-
無(wú)法訪問(wèn) Docker Hub:
- 錯(cuò)誤信息:
denied: requested access to the resource is denied unauthorized: authentication required
- 解決方案:通過(guò)以下命令登錄 Docker Hub:
sudo docker login
按照提示輸入 Docker Hub 用戶(hù)名和密碼即可。
- 錯(cuò)誤信息:
-
網(wǎng)絡(luò)連接問(wèn)題:
- 錯(cuò)誤信息:
dial tcp: lookup registry-1.docker.io on 127.0.0.53:53: no such host
- 解決方案:配置鏡像加速器并重啟 Docker 服務(wù)后,再次嘗試?yán)$R像。
背景知識(shí):
hello-world
鏡像是一個(gè)非常小的鏡像,用于驗(yàn)證 Docker 是否正常工作。 - 錯(cuò)誤信息:
實(shí)時(shí)查看 Docker 服務(wù)日志
你可以使用以下命令實(shí)時(shí)查看 Docker 服務(wù)的日志:
sudo journalctl -u docker.service -f
這個(gè)命令的作用是:
sudo
:以超級(jí)用戶(hù)權(quán)限運(yùn)行命令。journalctl
:查看系統(tǒng)日志的命令。-u docker.service
:指定查看 Docker 服務(wù)的日志。-f
:實(shí)時(shí)查看日志輸出,類(lèi)似于tail -f
。
附加資源
- Docker 官方文檔
- Docker Hub
- Docker 入門(mén)指南
- Docker 社區(qū)支持
總結(jié)
通過(guò)上述步驟,我成功在 Ubuntu Server 22.04 上安裝并配置了 Docker。主要就是鏡像地址問(wèn)題,通過(guò)調(diào)整配置文件和更換鏡像源,我順利解決了這些問(wèn)題。希望你也一樣。