1.安装前的准备
docker支持RHEL8-9的所有小版本,且对内核版本也有要求,RHEL 8 ≥ 4.18 ; RHEL 9 ≥ 5.14。7及其更早的版本docker官方不再支持和维护,所以安装前先确定自己的版本(hostnamectl)

2.配置 Docker 阿里云 YUM 源并安装docker
由于Red Hat 官方软件源里,默认不包含 Docker 软件包,你需要使用 Docker 官方提供的 YUM 源。但 Docker 官方源的服务器在国外,国内访问会遇到两个致命问题:
(1)下载速度极慢,甚至直接超时失败
(2)部分地区网络不稳定,无法正常拉取软件包所以,我们才会选择 国内镜像源(阿里云) 来替代。
为了复习一下我之前学的内容,自己特地写了个配置脚本,平时自己做的话不用这样


安装docker:
dnf install docker-ce -y

阿里镜像站地址:
https://developer.aliyun.com/
3.配置内核网络转发
首先我们要知道不管是容器主动访问外网 ,还是外部访问容器(端口映射),流量都必须经过宿主机内核的转发,路径是:
- 容器
eth0→veth pair→docker0网桥 → 宿主机内核 → 物理网卡 - 外部请求 → 物理网卡 → 宿主机内核 →
docker0网桥 →veth pair→ 容器eth0
内核转发配置,就是给这条路径开绿灯,让流量能跨接口转发。
我们安装并启动docker后,它会自动创建一个 名为docker 0的 网桥,所有容器默认连接到这个网桥。

我们先随便运一个镜像就能验证"容器默认都连到了 docker0 网桥"

接着我再开了一个名为test2-docker的镜像,并用"ip link"命令发现,每启动一个默认网络模式的容器,就会多一个 veth 接口挂在 docker0 上。

veth pair是 Linux 内核提供的一种成对的虚拟网络设备,你可以把它理解成一根 "虚拟网线",一头在容器里(eth0),一头在宿主机上(vethxxxx),专门用来打通容器和宿主机之间的网络。举例:
上图我启动了一个名为test-nginx的 容
- Docker 创建了一对
veth pair:- 容器里:
eth0,IP172.17.0.2 - 宿主机上:
veth464be13,挂在docker0网桥上
- 容器里:
- 当容器里的 Nginx 要发网络请求时:
- 数据包从
eth0发出,通过veth pair直接传到宿主机上的veth464be13 - 再由
docker0网桥转发到宿主机内核,最终发到外网
- 数据包从
4.配置镜像加速器
由于Docker 默认从国外官方仓库拉镜像(Docker Hub),国内网络访问国外服务器慢、经常超时、拉不下来。所以要配个加速器,以后docker pull xxx的时候会自动在国内的镜像站拉取镜像。
需要先在/etc/docker/ 这个目录下新建一个名为"daemon.json"的文件,这个daemon.json文件默认是没有的,也就是说需要我们在安装docker后自己手动创建。daemon.json是Docker 守护进程的全局配置文件,我们敲的所有 docker 命令,最终都是交给 docker daemon 去执行。

配完后记得重启docker:systemctl restart docker
然后查看docker的信息看加速器地址是否存在
