# Red Hat Enterprise Linux 9.7 离线部署docker 及 docker compose

下面给出在 **Red Hat Enterprise Linux 9.7** 上的完整操作流程，包括：

1. 关闭 SELinux
2. 离线安装 **Docker**
3. 离线安装 **Docker Compose**

整个流程适合 **完全离线环境**（无法访问互联网）。

---

# 一、关闭 SELinux

## 1 临时关闭（立即生效）

```bash
setenforce 0

```

检查状态：

```bash
getenforce

```

如果返回：

```
Permissive

```

说明已临时关闭。

---

## 2 永久关闭

编辑配置文件：

```bash
vi /etc/selinux/config

```

修改：

```ini
SELINUX=disabled

```

原始可能是：

```ini
SELINUX=enforcing

```

保存后 **重启系统**：

```bash
reboot

```

验证：

```bash
getenforce

```

输出应为：

```
Disabled

```

---

# 二、准备 Docker 离线安装包

需要从一台 **可以联网的 Linux 机器** 下载以下 RPM：

Docker 在 RHEL9 需要这些包：

```
docker-ce
docker-ce-cli
containerd.io
docker-buildx-plugin
docker-compose-plugin

```

官方下载地址：

```
https://download.docker.com/linux/centos/9/x86_64/stable/Packages/

```

说明：

虽然是 CentOS 路径，但 **RHEL9 完全兼容**。

---

## 推荐下载版本（稳定）

例如：

```
containerd.io
docker-ce
docker-ce-cli
docker-buildx-plugin
docker-compose-plugin

```

下载示例：

```bash
wget https://download.docker.com/linux/centos/9/x86_64/stable/Packages/containerd.io-*.rpm
wget https://download.docker.com/linux/centos/9/x86_64/stable/Packages/docker-ce-*.rpm
wget https://download.docker.com/linux/centos/9/x86_64/stable/Packages/docker-ce-cli-*.rpm
wget https://download.docker.com/linux/centos/9/x86_64/stable/Packages/docker-buildx-plugin-*.rpm
wget https://download.docker.com/linux/centos/9/x86_64/stable/Packages/docker-compose-plugin-*.rpm

```

然后打包：

```bash
tar czvf docker-rhel9.tar.gz *.rpm

```

拷贝到离线服务器。

---

# 三、离线安装 Docker

进入 RPM 目录：

```bash
cd /root/docker-rpm

```

安装：

```bash
dnf install -y *.rpm

```

如果没有 dnf repo：

```bash
rpm -ivh *.rpm

```

推荐：

```bash
dnf install *.rpm

```

dnf 会自动处理依赖。

---

# 四、启动 Docker

安装完成后：

启动：

```bash
systemctl start docker

```

设置开机启动：

```bash
systemctl enable docker

```

查看状态：

```bash
systemctl status docker

```

---

# 五、验证 Docker

```bash
docker version

```

示例输出：

```
Client: Docker Engine
Server: Docker Engine

```

测试：

```bash
docker info

```

---

# 六、Docker Compose

RHEL9 推荐使用 **docker compose plugin**。

验证：

```bash
docker compose version

```

如果正常：

```
Docker Compose version v2.x

```

使用方法：

```bash
docker compose up -d

```

注意：

RHEL9 不再推荐旧命令：

```
docker-compose

```

而是：

```
docker compose

```

---

# 七、常见离线依赖问题

RHEL9 可能缺少：

```
libcgroup
iptables
container-selinux

```

如果安装报错，需要额外下载：

```
container-selinux

```

下载地址：

```
https://rpmfind.net/linux/rpm2html/search.php?query=container-selinux

```

---

# 八、生产环境建议配置

编辑：

```bash
vi /etc/docker/daemon.json

```

推荐：

```json
{
 "log-driver": "json-file",
 "log-opts": {
   "max-size": "100m",
   "max-file": "3"
 },
 "storage-driver": "overlay2"
}

```

重启：

```bash
systemctl restart docker

```

---

# 九、开放 Docker API（如果需要）

Docker 默认端口：

```
2375
2376

```

如果使用 **firewalld**：

```bash
firewall-cmd --permanent --add-port=2375/tcp
firewall-cmd --reload

```

---

# 十、验证容器运行

导入测试镜像（离线）：

```bash
docker load -i nginx.tar

```

运行：

```bash
docker run -d -p 80:80 nginx

```

查看：

```bash
docker ps

```

---

# 十一、运维经验（RHEL9 + Docker）

生产服务器建议：

1️⃣ 关闭 SELinux 或设为 permissive  
2️⃣ 使用 **overlay2 存储驱动**  
3️⃣ `/var/lib/docker` 单独磁盘  
4️⃣ 开启日志轮转  
5️⃣ 防火墙限制 docker API

---

💡 如果需要，我可以再给你一份 **“RHEL9 Docker 完整离线安装包结构”**（企业运维常用），特点：

- **只需一个 tar 包**
- 解压后一条命令安装
- 自动解决所有依赖
- 支持 **docker + compose + buildx**

很多数据中心离线部署都是这种方式。