redhat 9.7 安装docker,关闭selinux,及其他常规操作
在没有正版授权的情况下,无法直接使用 Red Hat 官方的软件仓库。不过,你可以通过配置第三方软件源来在线安装 Docker 等软件。
对于 Red Hat 系统,推荐使用 Docker 官方为 RHEL 提供的通用基础镜像(UBI)对应的软件仓库,这是合规且稳定的方式。
🚀 在线安装 Docker
你可以通过以下步骤,将 Docker 的官方仓库地址替换为国内的镜像源(以北京外国语大学镜像站为例),然后进行安装。
-
移除旧版本
如果你的系统上安装过旧版本的 Docker,建议先将其卸载。sudo dnf remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine -
安装依赖并添加仓库
首先安装必要的工具,然后添加 Docker 的官方仓库配置文件,并立即将其中的下载链接替换为国内镜像源地址。# 安装 dnf 插件 sudo dnf -y install dnf-plugins-core # 添加 Docker 官方仓库 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 将仓库地址替换为国内镜像源 sudo sed -i 's+https://download.docker.com+https://mirrors.bfsu.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo -
安装 Docker Engine
完成以上配置后,就可以直接通过yum命令安装 Docker 了。sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
启动并验证
安装完成后,启动 Docker 服务并检查其状态。# 启动 Docker 服务 sudo systemctl start docker # 设置开机自启 sudo systemctl enable docker # 验证安装是否成功 sudo docker run hello-world
💡 补充说明
- 关于 CentOS Vault:你可能会看到一些资料提到将 RHEL/CentOS 的源指向
vault.centos.org。这是因为 CentOS 7 已经停止维护(EOL),官方源已失效。但对于 RHEL 系统,更推荐上述使用 Docker 官方 UBI 源的方式,它更直接且专为 RHEL 设计。 - 其他镜像源:如果上述镜像源访问不畅,你也可以尝试替换为其他国内镜像源,例如:
- 阿里云:
https://developer.aliyun.com/mirror/docker-ce - 清华大学:
https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/在 Red Hat Enterprise Linux 9.7 中,关闭 SELinux 的方式与旧版本(RHEL 8 及以前)有显著不同。
核心提示: 在 RHEL 9 中,仅修改配置文件将 SELinux 设置为
disabled并不能从内核层面彻底禁用它,系统仍会加载 SELinux 模块但处于“无策略”状态,这可能会消耗系统资源或在某些极端情况下导致服务启动异常。要在 RHEL 9.7 中彻底且正确地关闭 SELinux,推荐使用内核参数方式。
以下是两种方法的详细步骤:
🚀 方法一:内核参数禁用(RHEL 9 推荐,彻底生效)
这是 RHEL 9 官方推荐的方式,能够确保 SELinux 在系统启动时完全不加载。
-
执行命令添加内核参数
使用grubby工具向内核启动参数中添加selinux=0。这会自动修改 GRUB 配置,无需手动编辑文件。sudo grubby --update-kernel ALL --args selinux=0 -
重启系统
修改内核参数后,必须重启才能生效。sudo reboot -
验证状态
重启后,输入以下命令查看状态:getenforce- 如果输出
Disabled,说明 SELinux 已彻底关闭。 - 你也可以通过查看内核命令行来确认参数是否生效:
(输出中应包含cat /proc/cmdlineselinux=0)
- 如果输出
📝 方法二:修改配置文件(传统方式,RHEL 9 中不彻底)
如果你只是想让 SELinux 停止拦截操作(即切换到宽容模式),或者在无法使用
grubby的特殊环境下,可以使用此方法。但在 RHEL 9 中,这不会像旧版本那样完全卸载 SELinux。-
编辑配置文件
打开 SELinux 的主配置文件:sudo vim /etc/selinux/config -
修改参数
找到SELINUX=enforcing这一行,将其修改为disabled。# 修改前 SELINUX=enforcing # 修改后 SELINUX=disabled(注:如果你不想彻底关闭,只是想让服务不报错,建议改为
permissive,这样既能记录日志又不会拦截操作。) -
保存并重启
保存文件(在 vim 中按Esc,输入:wq回车),然后重启系统。sudo reboot
🛑 临时关闭(无需重启)
如果你正在排查故障,不想重启服务器,可以临时将 SELinux 切换为宽容模式(Permissive)。这不会彻底关闭它,但会停止拦截行为。
# 临时切换为宽容模式(只记录日志,不拦截) sudo setenforce 0 # 查看当前状态 getenforce # 输出应为 Permissive注意:
setenforce 0只是临时生效,重启后会恢复配置文件中的设置。📊 总结对比
方式 命令/操作 适用场景 RHEL 9 特性 彻底禁用 grubby --update-kernel ALL --args selinux=0生产环境、彻底移除 SELinux 影响 推荐,内核级完全禁用 配置禁用 修改 /etc/selinux/config为disabled一般测试 不推荐,RHEL 9 中仅停止加载策略,仍占资源 临时宽容 setenforce 0故障排查、调试 立即生效,重启失效 回滚方法:
如果你想重新开启 SELinux,只需执行以下命令移除参数并重启:sudo grubby --update-kernel ALL --remove-args selinux sudo reboot -
- 阿里云:
No Comments