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 小时前
Docker 高级管理 —— 容器通信技术与数据持久化
docker
徐子元竟然被占了!!1 小时前
TURN协议
运维
乐hh1 小时前
DM8配置SSL
数据库·docker·ssl
Cat_Rocky2 小时前
kubernetes ingress粗浅学习
学习·容器·kubernetes
霍格沃兹测试学院-小舟畅学2 小时前
Browserbase Skills:让 Claude Code 具备浏览器自动化能力的开源框架
运维·开源·自动化
小娄~~2 小时前
进程间通信
linux·运维·服务器
极客先躯2 小时前
高级java每日一道面试题-2025年12月05日-实战篇[Dockerj]-Docker 安装后的默认存储路径是什么?如何修改?
java·docker·默认存储路径在不同系统上的区别·linux overlay2·修改存储路径的理论方法·修改流程中的关键理论点
qq_452396232 小时前
第十九篇:《视觉回归测试:让UI自动化检测样式异常》
运维·ui·自动化
凤舞飘伶2 小时前
windows安装docker-desk
windows·docker·容器