docker的安装(RHEL9)

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.配置内核网络转发

首先我们要知道不管是容器主动访问外网 ,还是外部访问容器(端口映射),流量都必须经过宿主机内核的转发,路径是:

  1. 容器 eth0veth pairdocker0 网桥 → 宿主机内核 → 物理网卡
  2. 外部请求 → 物理网卡 → 宿主机内核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,IP 172.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的信息看加速器地址是否存在

相关推荐
枕星而眠1 小时前
【数据结构】红黑树入门指南
运维·数据结构·c++·后端
扶疏5252 小时前
Kubernetes Dashboard、动态卷供应、StatefulSet
容器·kubernetes
snow@li3 小时前
深入理解内核与操作系统的关系
运维·服务器·microsoft
星融元asterfusion4 小时前
高效网卡部署与自动化运维:EasyRoCE Toolkit NC 配置指南
运维·自动化
prettybug1254 小时前
OBS背景音乐_气氛实战指南
运维·服务器
无足鸟ICT4 小时前
【RHCA+】管道符
linux·运维·服务器
老约家的可汗4 小时前
Linux的库制作和原理
linux·运维·服务器
云烟成雨TD5 小时前
Kubernetes 系列【14】对象元数据:标签、标签选择器、命名空间、字段选择器
云原生·容器·kubernetes
技术民工之路5 小时前
RAG 在真实业务项目落地全流程(从需求到上线运维)
运维
leoZ2315 小时前
Skill 技能系统完全指南(四):实战 Skill——DevOps 部署
运维·devops