Skip to main content

redhat 9.7 安装docker,关闭selinux,及其他常规操作

在没有正版授权的情况下,无法直接使用 Red Hat 官方的软件仓库。不过,你可以通过配置第三方软件源来在线安装 Docker 等软件。

对于 Red Hat 系统,推荐使用 Docker 官方为 RHEL 提供的通用基础镜像(UBI)对应的软件仓库,这是合规且稳定的方式。

🚀 在线安装 Docker

你可以通过以下步骤,将 Docker 的官方仓库地址替换为国内的镜像源(以北京外国语大学镜像站为例),然后进行安装。

  1. 移除旧版本
    如果你的系统上安装过旧版本的 Docker,建议先将其卸载。

    sudo dnf remove docker \
                    docker-client \
                    docker-client-latest \
                    docker-common \
                    docker-latest \
                    docker-latest-logrotate \
                    docker-logrotate \
                    docker-engine
    
  2. 安装依赖并添加仓库
    首先安装必要的工具,然后添加 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
    
  3. 安装 Docker Engine
    完成以上配置后,就可以直接通过 yum 命令安装 Docker 了。

    sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  4. 启动并验证
    安装完成后,启动 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 在系统启动时完全不加载。

      1. 执行命令添加内核参数
        使用 grubby 工具向内核启动参数中添加 selinux=0。这会自动修改 GRUB 配置,无需手动编辑文件。

        sudo grubby --update-kernel ALL --args selinux=0
        
      2. 重启系统
        修改内核参数后,必须重启才能生效。

        sudo reboot
        
      3. 验证状态
        重启后,输入以下命令查看状态:

        getenforce
        
        • 如果输出 Disabled,说明 SELinux 已彻底关闭。
        • 你也可以通过查看内核命令行来确认参数是否生效:
          cat /proc/cmdline
          
          (输出中应包含 selinux=0

      📝 方法二:修改配置文件(传统方式,RHEL 9 中不彻底)

      如果你只是想让 SELinux 停止拦截操作(即切换到宽容模式),或者在无法使用 grubby 的特殊环境下,可以使用此方法。但在 RHEL 9 中,这不会像旧版本那样完全卸载 SELinux。

      1. 编辑配置文件
        打开 SELinux 的主配置文件:

        sudo vim /etc/selinux/config
        
      2. 修改参数
        找到 SELINUX=enforcing 这一行,将其修改为 disabled

        # 修改前
        SELINUX=enforcing
        
        # 修改后
        SELINUX=disabled
        

        (注:如果你不想彻底关闭,只是想让服务不报错,建议改为 permissive,这样既能记录日志又不会拦截操作。)

      3. 保存并重启
        保存文件(在 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