CentOS 7 Docker 安装与部署操作手册
·
CentOS 7 Docker 安装与部署操作手册
本手册针对 CentOS 7 x86_64 系统,提供从安装、配置、镜像 / 容器管理到应用部署的完整实操流程,可直接用于教学与生产环境。
Docker 背景介绍
1. 什么是 Docker
Docker 是一个开源的应用容器化引擎,基于 Go 语言开发,遵循 Apache 2.0 开源协议。
它可以将应用程序及其依赖环境、配置文件等打包到一个轻量级、可移植的容器中,实现 “一次构建,到处运行”。
容器之间相互隔离,共享宿主机内核,具有启动快、资源占用低、环境一致性强等特点。
2. Docker 容器技术与虚拟机的区别
| 对比维度 | Docker 容器 | 虚拟机 |
|---|---|---|
| 底层架构 | 直接复用宿主机操作系统内核,无需虚拟硬件 | 需通过 Hypervisor 虚拟出完整硬件层,运行独立 Guest OS |
| 启动速度 | 秒级启动,几乎瞬时 | 分钟级启动,需完整引导操作系统 |
| 资源占用 | 轻量,仅包含应用及必要依赖,体积小 | 笨重,需分配独立 CPU、内存、磁盘等资源,体积大 |
| 运行效率 | 性能接近原生,开销极低 | 存在虚拟化层损耗,性能相对较低 |
| 隔离性 | 进程级隔离,通过 Namespace/Cgroup 实现 | 系统级隔离,安全性更高 |
| 可移植性 | 容器镜像跨平台运行,兼容性强 | 受虚拟机格式、Hypervisor 类型限制,可移植性弱 |
3. 通过 Docker 架构图初步了解 Docker
Docker 采用 Client-Server(C/S)架构,核心组件如下:
- Docker Client:用户与 Docker 交互的入口,通过命令行或 API 发送指令(如
docker run、docker build)。 - Docker Daemon:运行在宿主机的后台服务,负责管理镜像、容器、网络、数据卷等资源,接收并执行 Client 指令。
- Docker Registry:存储和分发 Docker 镜像的仓库,如 Docker Hub、阿里云镜像仓库等。
- 核心对象:
- 镜像(Image):只读模板,包含运行容器所需的文件系统和配置,是容器的 “模板”。
- 容器(Container):镜像的运行实例,是一个独立、隔离的运行环境,可启动、停止、删除。
- 网络(Network):实现容器与宿主机、容器与容器之间的通信。
- 数据卷(Volume):实现容器数据的持久化与共享,避免容器删除后数据丢失。
4. Docker 特性
- 轻量级:共享宿主机内核,容器启动快、资源占用低,适合高密度部署。
- 可移植性:容器镜像可在任意支持 Docker 的环境中运行,保证环境一致性,解决 “在我电脑上能跑” 的问题。
- 隔离性:通过 Namespace 实现进程、网络、文件系统等资源隔离,通过 Cgroup 限制资源使用,避免相互干扰。
- 可扩展性:支持水平扩展,可快速启动、销毁容器,适配微服务架构。
- 版本控制:镜像支持分层存储和版本管理,便于回滚、复用和分发。
- 生态丰富:拥有海量官方 / 社区镜像,覆盖各类应用场景,同时支持 Docker Compose、Kubernetes 等工具实现容器编排。
一、安装前检查(必做)
1. 系统要求
- CentOS 7 64 位(内核 ≥ 3.10)
- 开启 CPU 虚拟化(云服务器默认开启,本地虚拟机需在 BIOS 开启)
- 网络正常,关闭防火墙 / SELinux(或开放对应端口)
2. 检查命令
# 查看内核版本(≥3.10)
uname -r
# 查看系统位数(必须x86_64)
uname -m
# 检查虚拟化(有输出即开启)
grep -E 'vmx|svm' /proc/cpuinfo
二、安装步骤(官方 YUM 源,推荐)
1. 卸载旧版本(如有)
sudo yum remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
docker-ce \
docker-ce-cli \
containerd.io
2. 安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3. 添加 Docker 官方 YUM 源(国内用阿里云镜像更快)
# 阿里云源(推荐)
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 替换源地址(加速)
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# 官方源(备用)
# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4. 安装 Docker Engine 与插件
sudo yum makecache fast
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
5. 启动服务并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 查看状态(active (running) 即正常)
sudo systemctl status docker
6. 验证安装
# 查看版本
docker --version
# 测试容器(输出Hello from Docker! 即成功)
sudo docker run hello-world
运行出错:

解决方案:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://docker.hpcloud.cloud",
"https://docker.m.daocloud.io",
"https://docker.unsee.tech",
"https://docker.1panel.live",
"http://mirrors.ustc.edu.cn",
"https://docker.chenby.cn",
"http://mirror.azure.cn",
"https://dockerpull.org",
"https://dockerhub.icu",
"https://hub.rat.dev"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 测试容器(输出Hello from Docker! 即成功)
sudo docker run hello-world
7. (可选)配置免 sudo 运行
sudo usermod -aG docker $USER
newgrp docker # 立即生效,无需重启
三、安装后核心配置
关闭防火墙 / SELinux(生产环境按需配置)
# 临时关闭
sudo systemctl stop firewalld
sudo setenforce 0
# 永久关闭(重启生效)
sudo systemctl disable firewalld
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
四、Docker 基础命令(必掌握)
1. 镜像操作
# 查看本地镜像
docker images
# 拉取镜像(如Nginx 1.24)
docker pull nginx:1.24-alpine
# 删除镜像
docker rmi nginx:1.24-alpine
# 搜索镜像
docker search nginx #这个会报错,因为走的是官方源
2. 容器操作
# 后台运行容器(端口映射+命名+开机自启)
docker run -d --name my-nginx -p 8080:80 --restart=always nginx:1.24-alpine
# 查看运行中容器
docker ps
# 查看所有容器(含停止)
docker ps -a
# 进入容
#进入后常用操作
#看配置文件:cat /etc/nginx/nginx.conf
#看网页目录:ls /usr/share/nginx/html
#退出容器:exit
# 停止/启动/删除容器
docker stop my-nginx
docker start my-nginx
docker rm my-nginx # 需先停止
# 查看容器日志
docker logs -f my-nginx
3. Docker Compose(v2 已集成)
# 查看版本
docker compose version
# 启动服务(-d后台)
docker compose up -d
# 停止服务
docker compose stop
# 停止并删除容器/网络
docker compose down
# 查看服务状态
docker compose ps
五、应用部署实战(Nginx 示例)
1. 快速部署 Nginx(挂载配置 + 网页)
# 创建本地目录
mkdir -p ~/nginx/conf.d ~/nginx/html
# 运行容器(持久化+端口映射)
docker run -d \
--name my-nginx \
-p 80:80 \
-v ~/nginx/conf.d:/etc/nginx/conf.d:ro \
-v ~/nginx/html:/usr/share/nginx/html \
--restart=always \
nginx:1.24-alpine
# 验证(浏览器访问服务器IP)
curl http://10.13.208.129:8080
2. 自定义镜像构建(Dockerfile)
(1)编写 Dockerfile(Node.js 应用)
# 基础镜像
FROM node:18-alpine
# 设置工作目录
WORKDIR /app
# 拷贝依赖
COPY package*.json ./
RUN npm ci --only=production
# 拷贝源码
COPY . .
# 暴露端口
EXPOSE 3000
# 启动命令
CMD ["node", "app.js"]
(2)构建镜像
docker build -t my-node-app:v1 .
(3)运行自定义容器
docker run -d --name my-node-app -p 3000:3000 --restart=always my-node-app:v1
3. 多容器部署(Docker Compose)
(1)编写docker-compose.yml(Nginx+Node.js+Redis)
version: '3.8'
services:
redis:
image: redis:7-alpine
container_name: app-redis
volumes:
- redis-data:/data
restart: always
networks:
- app-net
api:
build: .
container_name: app-api
environment:
- NODE_ENV=production
- REDIS_HOST=redis
depends_on:
- redis
restart: always
networks:
- app-net
nginx:
image: nginx:1.24-alpine
container_name: app-nginx
ports:
- "80:80"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d:ro
depends_on:
- api
restart: always
networks:
- app-net
volumes:
redis-data:
networks:
app-net:
driver: bridge
(2)启动服务
docker compose up -d
image: nginx:1.24-alpine
container_name: app-nginx
ports:
- “80:80”
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d:ro
depends_on:
- api
restart: always
networks:
- app-net
volumes:
redis-data:
networks:
app-net:
driver: bridge
#### (2)启动服务
docker compose up -d
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)