本安装教程也适用于centos8stream
docker的安装方式有很多种,本篇是docker官方的安装方式。
- 移除可能的docker旧版本
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
- 开始安装
yum install -y yum-utils yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo yum install docker-ce docker-ce-cli containerd.io
- 启动docker
systemctl start docker
- 另外一种安装方式——官方一键安装
wget -qO- get.docker.com | bash systemctl start docker
- docker的防火墙问题
实际部署发现,docker可以绕过firewalld的管理,直接开通iptables的规则,并且在firewall-cmd 上无法实现管理,原因时docker直接在iptables上添加了规则和路由。
1)查看pulic规则
firewall-cmd --list-all
使得主机的ip能够直接访问docker镜像所在的ip
2)查看docker新建的防火墙区域
firewall-cmd --get-active-zones
3)docker区域的接口
firewall-cmd --list-all --zone=docker
从上图可以看出,docker并没有在firewalld上新建规则
4)查询docker的网络
docker network ls
docker镜像创建了4个本地可以访问的网桥
5)iptables上的规则
iptables -L DOCKER
host上的特定端口被docker镜像所在的内网ip接管特定的接口,上图标识了协议和用途
iptables -nL DOCKER
上图更加详细的显示了占用的端口
6)查看所有的iptables的表
iptables --list
iptables -L -n
docker实际开启的端口,这些端绕开firewalld的管理,直接在iptables上实现接管
7)查看docker的状态
systemctl status docker
8)临时处理方式
实际测试时,存在iptables修改后,重启设置生效的问题,但是iptables删除某条规则后理解生效。因此可以删除掉特定的规则,而不重启。
防火墙问题导致docker镜像无法访问,处理如下:
firewall-cmd --permanent --zone=trusted --add-interface=docker0 firewall-cmd --reload
参考资料:
- https://docs.docker.com/engine/install/centos/