导读:本期聚焦于小雨创作的《AlmaLinux 9如何安装配置Docker?详细步骤、示例与练习题及常见问题全解析》,敬请观看详情。为什么在AlmaLinux 9上安装Docker总是遇到各种报错?系统自带的podman和Docker到底该怎么选?本文以AlmaLinux 9环境为例,完整演示Docker CE的安装全过程,包括卸载冲突组件、配置yum仓库、启动服务与开机自启、镜像加速设置等关键步骤,同时配套提供容器运行、镜像管理、端口映射等实用示例,并附上适合新手的练习题和常见问题排查方法,帮助你快速搭建稳定的容器化运行环境,避开yum源、防火墙、权限等常见坑点。

AlmaLinux 9作为CentOS Stream的理想替代品,在企业服务器市场的占有率越来越高。容器化部署已经成为当下的主流方案,而Docker仍然是使用最广泛的容器运行时之一。不过在AlmaLinux 9上安装Docker并不像想象中那么顺利,系统默认内置的podman会和Docker产生冲突,官方仓库的配置也需要额外注意。本文将手把手完成整个安装配置流程,并配合实际示例、练习题和常见问题说明,帮助你一次性搭建成功。

AlmaLinux 9如何安装配置Docker?详细步骤、示例与练习题及常见问题全解析

一、安装前的准备工作

AlmaLinux 9默认安装了podman和buildah,它们与Docker在功能上高度重合,如果同时保留,后续使用docker命令时可能会出现混乱,甚至某些工具脚本会误调用podman。所以在正式安装Docker CE之前,建议先把这几个组件清理干净:

# 移除系统自带的容器工具,避免与Docker冲突
sudo dnf remove -y podman buildah runc

# 更新系统到最新状态(建议先做,避免依赖问题)
sudo dnf update -y

清理完成后,还需要安装一些必要的工具包,比如yum-utils,它提供了yum-config-manager命令,后面添加Docker官方仓库时会用到。如果服务器在国内网络环境,建议提前确认网络能否访问Docker官方源,如果不通,直接使用国内镜像源即可,这一点在下文会详细说明。

另外要确认系统时间和时区是否正确,Docker的证书校验对时间敏感,时间偏差过大时拉取镜像会报TLS错误。可以用timedatectl命令检查并修正。

二、安装Docker CE并完成基础配置

1. 添加Docker仓库

Docker官方为RHEL系发行版提供了yum仓库,AlmaLinux 9完全兼容。执行以下命令添加仓库:

sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

如果访问官方源速度慢或超时,可以改用阿里云提供的镜像仓库,仓库内容完全一致,只是下载节点在国内:

sudo dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2. 安装Docker引擎

仓库添加好后,直接安装Docker引擎、命令行工具和containerd运行时:

sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

安装过程中如果提示GPG密钥问题,确认导入的是download.docker.com或阿里云对应的公钥即可放心继续。安装完成后先不要急着启动,建议先把普通用户加入docker组,这样日常操作不需要每次都加sudo

# 将当前用户加入docker组
sudo usermod -aG docker $USER

# 让组权限立即生效(或重新登录)
newgrp docker

# 启动Docker并设置开机自启
sudo systemctl enable --now docker

# 验证安装结果
docker run hello-world

看到“Hello from Docker!”的输出,说明整个链路已经打通。如果这里报权限错误,多半是用户组设置还没生效,重新登录一次终端即可。

3. 配置镜像加速器

国内环境直接从Docker Hub拉取镜像经常超时,配置加速器是必做的一步。编辑/etc/docker/daemon.json文件:

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "3"
  }
}

除了镜像加速,上面的配置还限制了容器日志的单文件大小和数量。这一点非常重要,长期运行的服务如果不限制日志,/var/lib/docker/containers目录会不断膨胀,最终把磁盘占满。修改完成后重启服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

# 查看配置是否生效
docker info | grep -A 3 "Registry Mirrors"

三、配套使用示例与练习题

1. 实用示例:运行一个Web服务

下面用Nginx演示容器的完整生命周期操作,包括后台运行、端口映射和文件挂载:

# 拉取Nginx镜像
docker pull nginx:stable

# 后台运行容器,把宿主机8080端口映射到容器80端口
docker run -d --name my-nginx -p 8080:80 nginx:stable

# 查看容器状态和日志
docker ps
docker logs my-nginx

# 进入容器内部查看
docker exec -it my-nginx bash

# 停止并删除容器
docker stop my-nginx
docker rm my-nginx

端口映射时要注意,如果宿主机的8080端口已被占用,容器会启动失败,可以用ss -tlnp | grep 8080提前检查端口占用情况。另外防火墙放行也不能忘:

sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

2. 练习题推荐

掌握Docker的关键在于动手练习,以下几道题目由浅入深,适合初学者巩固知识:

  • 练习一:拉取alpine镜像,运行一个容器并输出“Hello Docker”,完成后用docker imagesdocker ps -a观察镜像与容器的关系。
  • 练习二:运行一个MySQL 8容器,通过环境变量设置root密码,并用宿主机的客户端工具连接验证。
  • 练习三:使用数据卷持久化MySQL的数据目录,删除容器后重新创建,验证数据是否还在。
  • 练习四:编写一个简单的Dockerfile,把自己的静态网页打包成镜像并对外提供服务。
  • 练习五:用docker compose一键启动一个包含Nginx和PHP-FPM的小型站点。

这些练习覆盖了镜像、容器、网络、存储四大核心概念,全部做完基本就能独立完成常规的容器化部署任务了。

四、常见问题与注意事项

1. 启动报错Failed to start docker.service

这是最常见的报错之一,排查思路是先看详细日志:

sudo journalctl -u docker.service -n 50 --no-pager

常见原因有三个:一是daemon.json文件格式写错,多了一个逗号或者少了引号都会导致启动失败,可以用cat /etc/docker/daemon.json逐字检查;二是内核模块没有加载,执行sudo modprobe overlay br_netfilter后重试;三是磁盘空间不足,用df -h检查根分区和/var/lib/docker所在分区。

2. 拉取镜像超时或被拒绝

遇到timeouttoomanyrequests错误,说明加速器配置未生效或加速节点不可用。可以先换一个加速器地址再试,也可以直接测试加速器连通性:

curl -I https://docker.m.daocloud.io/v2/

返回200或401状态码都属正常,说明节点可用。如果返回超时,就需要更换其他加速地址。

3. 其他注意事项

第一,/var/lib/docker目录会随着镜像和容器数量增长而变大,规划磁盘时建议单独分区或挂载大容量磁盘。第二,定期清理无用的镜像和停止的容器,命令是docker system prune,但执行前务必确认没有需要保留的资源,这个命令默认会删除所有已停止的容器。第三,SELinux在AlmaLinux 9上默认是Enforcing模式,绝大多数情况下Docker可以与之共存,但如果遇到奇怪的权限问题,可以临时setenforce 0测试是否是SELinux引起,定位后再针对性调整策略而不是长期关闭。

到这里,从安装、配置到实战练习和问题排查的完整流程就介绍完了。Docker的学习重在实践,建议按照文中的练习题逐一动手操作,遇到问题先看日志再查配置,绝大多数故障都能快速定位解决。

AlmaLinux 9Docker安装Docker配置修改时间:2026-09-08 23:19:08

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260908/53040.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。