步骤 0:消除冲突
此步骤适用于从 Fedora 30 或 31 升级的任何用户。如果全新安装的 Fedora 32,那么可以跳到步骤 1。
删除 docker 及其所有相关组件:
-
sudo dnf remove docker-*
-
sudo dnf config-manager --disable docker-*
步骤 1:系统准备
在 Fedora 的最后两个版本中,操作系统已迁移到两项新技术: CGroups 和用于防火墙的 NFTables。尽管这些新技术的详细信息不在本教程的讨论范围之内,但是令人遗憾的是,Docker 还不支持这些新技术。因此,你必须进行一些更改才能在 Fedora 上使用 Docker。
启用旧的 CGroups
Fedora 仍然支持 CGroups 的先前实现,可以使用以下命令启用它:
-
sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"
在防火墙中将 Docker 列入白名单
为了让 Docker 具有网络访问权限,需要两个命令:
-
sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0
-
sudo firewall-cmd --permanent --zone=FedoraWorkstation --add-masquerade
第一个命令将 Docker 接口添加到受信任的环境,它允许 Docker 建立远程连接。第二个命令将允许 Docker 建立本地连接。当有多个 Docker 容器作为开发环境时,这特别有用。
步骤 2:安装 Moby
是 Docker 的开源白牌版本。它基于相同的代码,但不带商标。它包含在 Fedora 的主仓库中,因此很容易安装:
-
sudo dnf install moby-engine docker-compose
这将安装 moby-engine
、docker-compose
、containerd
和其他一些相关的库。安装完成后,你必须启用系统级守护程序才能运行 Docker:
-
sudo systemctl enable docker
步骤 3:重新启动并测试
为了确保正确处理所有系统和设置,你现在必须重启计算机:
-
sudo systemctl reboot
之后,你可以使用 Docker hello-world 包来验证安装:
-
sudo docker run hello-world
除非遇到问题,不然你就会看到来自 Docker 的问候!
以管理员身份运行
可选地,你现在还可以将用户添加到 Docker 的组帐户中,以便无需输入 sudo
即可启动 Docker 镜像:
-
sudo groupadd docker
-
sudo usermod -aG docker $USER
注销并登录以使更改生效。如果以管理员权限运行容器的想法让你有所顾虑,那么你应该研究 Podman。