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 rundocker 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


Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐