在Fedora 32上運行Docker
隨著 Fedora 32 的發(fā)布,Docker 的普通用戶面臨著一個小挑戰(zhàn)。在編寫本文時,F(xiàn)edora 32 不支持 Docker。雖然還有其他選擇,例如 Podman 和 Buildah,但是對于許多現(xiàn)有用戶而言,現(xiàn)在切換可能不是最佳時機。因此,本文可以幫助你在 Fedora 32 上設(shè)置 Docker 環(huán)境。
步驟 0:消除沖突
此步驟適用于從 Fedora 30 或 31 升級的任何用戶。如果全新安裝的 Fedora 32,那么可以跳到步驟 1。
刪除 docker 及其所有相關(guān)組件:
sudo dnf remove docker-*
sudo dnf config-manager --disable docker-*
步驟 1:系統(tǒng)準(zhǔn)備
在 Fedora 的最后兩個版本中,操作系統(tǒng)已遷移到兩項新技術(shù): CGroups 和用于防火墻的 NFTables。盡管這些新技術(shù)的詳細(xì)信息不在本教程的討論范圍之內(nèi),但是令人遺憾的是,Docker 還不支持這些新技術(shù)。因此,你必須進行一些更改才能在 Fedora 上使用 Docker。
啟用舊的 CGroups
Fedora 仍然支持 CGroups 的先前實現(xiàn),可以使用以下命令啟用它:
sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"
在防火墻中將 Docker 列入白名單
為了讓 Docker 具有網(wǎng)絡(luò)訪問權(quán)限,需要兩個命令:
sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0
sudo firewall-cmd --permanent --zone=FedoraWorkstation --add-masquerade
第一個命令將 Docker 接口添加到受信任的環(huán)境,它允許 Docker 建立遠(yuǎn)程連接。第二個命令將允許 Docker 建立本地連接。當(dāng)有多個 Docker 容器作為開發(fā)環(huán)境時,這特別有用。
步驟 2:安裝 Moby
Moby 是 Docker 的開源白牌版本。它基于相同的代碼,但不帶商標(biāo)。它包含在 Fedora 的主倉庫中,因此很容易安裝:
sudo dnf install moby-engine docker-compose
這將安裝 moby-engine
、docker-compose
、containerd
和其他一些相關(guān)的庫。安裝完成后,你必須啟用系統(tǒng)級守護程序才能運行 Docker:
sudo systemctl enable docker
步驟 3:重新啟動并測試
為了確保正確處理所有系統(tǒng)和設(shè)置,你現(xiàn)在必須重啟計算機:
sudo systemctl reboot
之后,你可以使用 Docker hello-world 包來驗證安裝:
sudo docker run hello-world
除非遇到問題,不然你就會看到來自 Docker 的問候!
以管理員身份運行
可選地,你現(xiàn)在還可以將用戶添加到 Docker 的組帳戶中,以便無需輸入 sudo
即可啟動 Docker 鏡像:
sudo groupadd docker
sudo usermod -aG docker $USER
注銷并登錄以使更改生效。如果以管理員權(quán)限運行容器的想法讓你有所顧慮,那么你應(yīng)該研究 Podman。
總結(jié)
從現(xiàn)在起,Docker 將按照你的習(xí)慣工作,包括 docker-compose
和所有與 docker
相關(guān)的工具。不要忘記查看官方文檔,這在很多情況下可以為你提供幫助。
Fedora 32 上 Docker 的當(dāng)前狀態(tài)并不理想。缺少官方軟件包可能會困擾一些人,有一個上游問題對此進行了討論。對 CGroups 和 NFTables 缺少支持更多是技術(shù)問題,但是你可以查看它們在其公共問題上的進展。
這些指導(dǎo)應(yīng)可以讓你就像什么都沒有發(fā)生一樣繼續(xù)工作。如果這不能滿足你的需求,請不要忘記到 Moby 或 Docker Github 頁面去尋求解決你的技術(shù)問題,或者看看 Podman,長期來看,它可能會更加強大。