跳到主要内容CentOS 7.9 Docker 安装、配置与实战指南 | 极客日志Shell / Bash
CentOS 7.9 Docker 安装、配置与实战指南
CentOS 7.9 系统下 Docker 的安装、配置及实战操作指南。涵盖前置检查、官方源安装指定版本、用户权限配置、国内镜像加速器设置、核心命令实战示例(Nginx、MySQL、自定义 Python 镜像)、服务管理及常见问题排查。适用于开发、测试及生产环境的容器化部署需求。
观心803 浏览 CentOS 7.9 是企业级常用系统,Docker 在其上运行稳定且轻量(无需图形化界面,直接基于内核运行)。以下是完整实操流程,包括安装、配置优化、核心命令使用、实战案例(如运行 Nginx、MySQL)及常见问题排查,全程贴合生产环境需求。
一、前置检查(必做)
1. 确认系统版本
先确保系统是 CentOS 7.9,避免版本不兼容:
cat /etc/centos-release
uname -r
2. 关闭防火墙(可选,测试环境推荐)
Docker 网络与防火墙可能冲突,测试环境可直接关闭(生产环境需配置防火墙规则,下文有说明):
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl status firewalld
3. 关闭 SELinux(必做,避免权限拦截)
SELinux 会限制 Docker 容器的资源访问,需永久关闭:
sudo vim /etc/selinux/config
将 SELINUX=enforcing 改为 SELINUX=disabled,保存退出后重启系统生效:
二、Docker 安装步骤(精准版)
1. 卸载旧版本(若有)
CentOS 7 可能预装旧版 Docker(如 docker 或 docker-engine),先卸载避免冲突:
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
2. 安装依赖工具
Docker 安装需依赖 yum-utils(用于管理软件源)等工具:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3. 配置 Docker 官方软件源(稳定版)
使用 Docker 官方源(避免第三方源的兼容性问题):
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4. 安装 Docker Engine(指定稳定版本,推荐 24.0.x)
不指定版本可能安装最新版,生产环境建议指定稳定版(如 docker-ce-24.0.9):
yum list docker-ce --showduplicates | sort -r
sudo yum install -y docker-ce-24.0.9 docker-ce-cli-24.0.9 containerd.io docker-buildx-plugin docker-compose-plugin
5. 启动 Docker 并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
6. 验证安装成功
运行官方测试镜像 hello-world,若能输出欢迎信息,则安装成功:
sudo docker run hello-world
Hello from Docker! This message shows that your installation appears to be working correctly. ...
三、核心配置(生产环境必备)
1. 配置普通用户权限(免 sudo 操作 Docker)
默认需用 sudo 执行 Docker 命令,配置后普通用户可直接操作:
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world
2. 配置镜像加速器(解决拉取镜像慢 / 超时)
Docker Hub 国内访问慢,配置国内加速器(以阿里云、网易云为例,免费可用):
sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://xxxxxx.mirror.aliyuncs.com"
]
}
- 阿里云加速器获取:注册阿里云账号 → 进入 容器镜像服务 → 左侧「镜像工具 → 镜像加速器」→ 复制专属地址。
sudo systemctl daemon-reload
sudo systemctl restart docker
docker info | grep "Registry Mirrors"
3. 生产环境防火墙配置(若未关闭防火墙)
若需开启防火墙,需放行 Docker 相关端口(以常用端口为例):
sudo firewall-cmd --permanent --add-port=2375/tcp
sudo firewall-cmd --permanent --add-port=2376/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
四、Docker 核心命令实战(CentOS 7.9 常用)
以下命令覆盖「镜像管理、容器管理、网络 / 数据卷」核心场景,结合实例说明:
1. 镜像管理(拉取、查看、删除)
| 命令 | 作用 | 实战示例 |
|---|
docker pull 镜像名:版本 | 拉取镜像(版本可选,默认 latest) | docker pull nginx:1.24(拉取 Nginx 1.24 稳定版) |
docker images | 查看本地所有镜像 | docker images(输出镜像名、版本、ID 等) |
docker rmi 镜像 ID/镜像名 | 删除镜像(需先删除依赖该镜像的容器) | docker rmi nginx:1.24 或 docker rmi 5a3221f0137b(镜像 ID 前几位即可) |
docker search 镜像名 | 搜索 Docker Hub 镜像 | docker search mysql(搜索 MySQL 相关镜像) |
2. 容器管理(创建、启动、停止、删除)
核心命令:docker run(创建并启动容器),参数说明:
-d:后台运行容器(守护态);
-p 宿主机端口:容器端口:端口映射(外部访问宿主机端口 → 容器端口);
--name 容器名:指定容器名称(唯一);
-e 环境变量:设置容器环境变量(如 MySQL 密码);
-v 宿主机目录:容器目录:数据卷挂载(持久化容器数据);
--restart=always:容器随 Docker 服务自动启动(生产必备)。
实战 1:运行 Nginx 容器(Web 服务)
docker run -d -p 80:80 --name my-nginx --restart=always nginx:1.24
验证:访问宿主机 IP(如 http://192.168.1.100),能看到 Nginx 默认页面则成功。
实战 2:运行 MySQL 容器(数据库服务,持久化数据)
mkdir -p /data/mysql/data /data/mysql/conf
docker run -d -p 3306:3306 --name my-mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf:/etc/mysql/conf.d \
--restart=always \
mysql:8.0
验证:用 MySQL 客户端连接宿主机 IP:3306,用户名 root,密码 123456,能连接则成功。
其他常用容器命令:
docker ps
docker ps -a
docker stop my-nginx
docker start my-nginx
docker restart my-nginx
docker logs -f my-nginx
docker exec -it my-nginx /bin/bash
docker stop my-nginx && docker rm my-nginx
docker rm $(docker ps -a -q)
3. 数据卷管理(持久化数据)
容器默认数据存储在内部,删除容器后数据丢失,需通过 -v 挂载宿主机目录或 Docker 数据卷:
docker volume ls
docker volume inspect 数据卷名
docker volume prune
docker cp my-nginx:/usr/share/nginx/html/index.html /data/nginx/html/
docker stop my-nginx && docker rm my-nginx
docker run -d -p 80:80 --name my-nginx \
-v /data/nginx/html:/usr/share/nginx/html \
--restart=always nginx:1.24
vim /data/nginx/html/index.html
4. 自定义镜像(通过 Dockerfile 打包应用)
步骤 1:创建应用目录和文件
mkdir -p /data/python-app && cd /data/python-app
echo 'print("Hello Docker on CentOS 7.9!")' > app.py
vim Dockerfile
步骤 2:编写 Dockerfile
# 基础镜像(Python 3.11 官方镜像)
FROM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 复制应用代码到容器
COPY app.py /app
# 容器启动时执行的命令
CMD ["python", "app.py"]
步骤 3:构建镜像并运行
docker build -t my-python-app:1.0 .
docker run my-python-app:1.0
五、Docker 服务管理(CentOS 7.9 特有)
1. 启动 / 停止 / 重启 Docker 服务
sudo systemctl start docker
sudo systemctl stop docker
sudo systemctl restart docker
2. 查看 Docker 服务日志(排查启动故障)
sudo journalctl -u docker -f
3. 禁止 Docker 开机自启
sudo systemctl disable docker
六、常见问题排查(CentOS 7.9 高频问题)
1. 安装时提示'没有可用软件包 docker-ce'
- 原因:未正确配置 Docker 官方源,或系统内核版本过低;
- 解决:
- 重新执行
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo;
- 清理 yum 缓存:
sudo yum clean all && sudo yum makecache fast;
- 再次安装指定版本的 docker-ce。
2. 运行容器报错'permission denied'
- 原因:普通用户未加入 docker 组,或 SELinux 未关闭;
- 解决:
- 重新执行「配置普通用户权限」步骤;
- 确认 SELinux 已关闭:
getenforce 输出 Disabled(未关闭则重启系统)。
3. 拉取镜像超时(Timeout)
- 原因:未配置镜像加速器,或网络不通;
- 解决:
- 检查
daemon.json 中的加速器配置,重启 Docker;
- 测试网络:
ping hub-mirror.c.163.com,能通则正常。
4. 容器启动后外部无法访问(如 Nginx 80 端口)
- 原因:防火墙未放行端口,或端口映射错误;
- 解决:
- 关闭防火墙(测试环境):
sudo systemctl stop firewalld;
- 生产环境放行端口:
sudo firewall-cmd --permanent --add-port=80/tcp && sudo firewall-cmd --reload;
- 检查端口映射:
docker ps 确认「PORTS」列显示 0.0.0.0:80->80/tcp。
5. Docker 启动失败(提示'containerd not running')
- 原因:containerd 服务未启动(Docker 依赖 containerd);
- 解决:
sudo systemctl start containerd
sudo systemctl enable containerd
sudo systemctl restart docker
七、总结
CentOS 7.9 上 Docker 的核心流程:
- 前置准备:关闭 SELinux、配置防火墙(或关闭);
- 安装:通过官方源安装指定稳定版本的 Docker Engine;
- 配置:普通用户权限、镜像加速器(生产必备);
- 使用:重点掌握
docker run 命令(端口映射、数据挂载、环境变量),结合 Nginx/MySQL 实战案例理解容器运行逻辑。
通过以上步骤,即可在 CentOS 7.9 上搭建稳定的 Docker 环境,满足开发、测试或生产环境的容器化需求。后续可结合 docker-compose 编排多容器应用(如前端 + 后端 + 数据库),进一步提升部署效率。
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
- HTML转Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
- JSON 压缩
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
- JSON美化和格式化
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online