1 安装问题处理

redhat做了自己的容器解决方案,并在软件源中限制了containerd.io 的新版本安装。 Red Hat 在 RHEL/CentOS 8 中默认使用 podman 和 buildah 作为容器解决方案,直接安装 Docker CE 可能会遇到依赖问题。
Building, running, and managing containers
centos8目前直接安装会提示containerd.io版本不支持的问题,此时可以通过–nobest选项安装,不过这样安装,每次更新时都会有警告提示。所以最好还是先装好高版本的containerd.io再装docker-ce。

1.1 配置镜像源

dnf config-manager –add-repo=http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.2 查看版本

dnf list containerd.io –showduplicates | sort -r

1.3 安装

1
2
3
4
#需预先查看containerd.io rpm包在线地址
dnf install http://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/Packages/containerd.io-<version>.el8.x86_64.rpm
#
dnf install docker-ce

docker的rpm官方源地址为:https://download.docker.com/linux/centos
也可使用镜像地址:http://mirrors.aliyun.com/docker-ce/linux/centos

update 2021/1/26: centos 8 stream 已无需手动安装containerd.io

1.4 启动 Docker

1
systemctl enable --now docker

2 dns问题处理#

由于centos 8 将iptables替换为nftables,docker存在兼容性问题,会出现DNS无法解析的bug。你可以busybox容器校验

1
docker run busybox nslookup baidu.com

参考
https://forums.centos.org/viewtopic.php?f=54&t=74270
https://github.com/docker/for-linux/issues/957#issuecomment-658649036

有三种方式可以处理DNS的兼容性问题,推荐使用第1方案。如不想使用第1方案,可将2,3配合使用。

2.1 1.让firewalld使用iptables

修改/etc/firewalld/firewalld.conf#FirewallBackend=nftables改为FirewallBackend=iptables

1
2
sudo sed -i 's/FirewallBackend=nftables/FirewallBackend=iptables/' /etc/firewalld/firewalld.conf
sudo systemctl restart firewalld.service

参考
https://github.com/docker/for-linux/issues/957#issuecomment-627166787

2.2 2.启用masquerade

注意:–publish发布的端口 需额外设置防火墙开放

1
2
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --reload

参考
https://linuxconfig.org/how-to-install-docker-in-rhel-8 中的评论

2.3 3.添加docker0网口为信任

注意:docker-compose中仍存在dns解析问题

1
firewall-cmd --permanent --zone=trusted --add-interface=docker0

参考
https://forums.centos.org/viewtopic.php?f=54&t=74270

3 参考

https://www.techrepublic.com/article/a-better-way-to-install-docker-on-centos-8/
https://linuxconfig.org/how-to-install-docker-in-rhel-8
https://yq.aliyun.com/articles/110806
https://docs.docker.com/network/iptables/#integration-with-firewalld
fedora cgroup v2:
https://medium.com/nttlabs/cgroup-v2-596d035be4d7
https://linuxconfig.org/how-to-install-docker-on-fedora-31