前言

在云原生与 DevOps 落地场景中,Docker 已成为应用容器化的标准底座。本文基于 CentOS 7 环境,从系统初始化、Docker CE 安装、镜像 / 容器运维、私有 Registry 搭建、Dockerfile 自定义镜像、Docker Compose 服务编排六大核心环节,提供可直接用于实训 / 生产的标准化部署方案,兼顾操作规范性与工程实用性,助力快速完成从环境搭建到服务上线的全链路闭环。


一、环境前置准备(Server + Client 双节点)

1. 基础配置规范

表格

节点主机名内存静态 IP网关DNS
服务端server4G10.31.3.137/2410.31.3.1114.114.114.114
客户端client4G10.31.3.138/2410.31.3.1114.114.114.114

2. 系统安全与网络优化

  1. 主机名配置
    hostnamectl set-hostname server
    bash
  2. 关闭防火墙与 SELinux(生产可按需开放端口)
    systemctl stop firewalld && systemctl disable firewalld
    setenforce 0
    sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  3. 开启内核转发(Docker 网络必需)
    cat >> /etc/sysctl.conf << EOF
    net.ipv4.ip_forward = 1
    net.ipv4.conf.default.rp_filter = 0
    net.ipv4.conf.all.rp_filter = 0
    EOF
    sysctl -p
  4. 配置 hosts 解析
    cat >> /etc/hosts << EOF
    10.XX.3.137 server
    10.XX.3.138 client
    EOF

3. YUM 源与 FTP 服务配置

  1. 替换腾讯 CentOS 基础源
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tencent.com/repo/centos7_base.repo
    yum clean all && yum makecache
  2. 部署 vsftpd 提供 ISO 镜像共享
    yum install -y vsftpd
    echo "anon_root=/opt/" >> /etc/vsftpd/vsftpd.conf
    systemctl start vsftpd && systemctl enable vsftpd
  3. 挂载 ISO 并构建本地 YUM 仓库
    mount /dev/cdrom /mnt
    mkdir -p /opt/paas /opt/centos
    cp -rvf /mnt/* /opt/paas
    umount /mnt
    yum install -y createrepo
    createrepo /opt/paas

二、Docker CE 安装与基础命令实战

1. 本地 / 在线安装 Docker 社区版

# 本地 ISO 安装
yum install -y docker-ce
# 启动并开机自启
systemctl start docker && systemctl enable docker

2. 核心运维命令实操

  1. 版本与信息查看
    docker version
    docker info
  2. 镜像加载与容器创建
    # 加载 httpd 镜像
    docker load -i /opt/paas/images/httpd-2.2.32.tar
    docker images
    # 后台启动并端口映射
    docker run -d --restart=unless-stopped -p 8080:80 <镜像ID>
    docker ps
  3. 访问验证与容器内操作
    # Client 访问测试
    curl http://server:8080
    # 进入容器执行命令
    docker exec -it <容器ID> bash
    uname -a && ip addr && ls -l
    exit
  4. 容器停止与删除
    docker stop <容器ID>
    docker rm <容器ID>

三、私有 Docker Registry 仓库搭建

1. 部署本地 Registry

# 加载 registry 镜像
docker load -i /opt/images/registry.tar
# 启动私有仓库(数据持久化 + 端口映射)
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 \
--restart=always --name registry registry:latest
# 验证服务
curl -v http://server:5000/v2

2. 配置 HTTP 非安全仓库(必需)

cat > /etc/docker/daemon.json << EOF
{
    "insecure-registries": ["server:5000"]
}
EOF
systemctl daemon-reload && systemctl restart docker

3. 镜像打标与推送

docker tag httpd:2.2.32 server:5000/httpd:2.2.32
docker push server:5000/httpd:2.2.32
# 查看仓库镜像列表
curl http://server:5000/v2/_catalog

4. Client 拉取验证

# Client 同步配置 daemon.json
docker pull server:5000/httpd:2.2.32
docker images

四、Dockerfile 自定义 Redis 镜像

1. 基础环境准备

mkdir -p /root/redis && cd /root/redis
# 加载 CentOS 基础镜像并推送到私有仓
docker load -i /opt/paas/images/centos-centos7.5.1804.tar
docker tag <镜像ID> server:5000/centos
docker push server:5000/centos

2. 编写 Dockerfile 与 YUM 源

  1. Dockerfile 内容
    FROM server:5000/centos
    MAINTAINER your-name
    RUN rm -rf /etc/yum.repos.d/*
    COPY ./local.repo /etc/yum.repos.d/
    RUN yum install redis -y && \
    sed -i 's/^bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis.conf && \
    sed -i 's/^protected-mode yes/protected-mode no/g' /etc/redis.conf
    EXPOSE 6379
    CMD ["redis-server","/etc/redis.conf"]
  2. local.repo 本地源配置
    [docker]
    name=docker
    baseurl=ftp://10.XX.3.137/paas
    gpgcheck=0
    enabled=1

3. 构建、推送与归档

docker build -t your-redis:v1.1 .
docker tag <镜像ID> server:5000/your-redis:v1.1
docker push server:5000/your-redis:v1.1
# 导出镜像文件
docker save -o your-redis.tar your-redis:v1.1

五、Docker Compose 一键编排服务

1. 安装 Docker Compose

wget ftp://server/paas/docker-compose/v1.25.5-docker-compose-Linux-x86_64
mv v1.25.5-* /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
docker-compose -v

2. 编写 Compose 配置文件

version: '2.0'
services:
  redis:
    hostname: your-redis
    container_name: your-redis
    image: server:5000/your-redis:v1.1
    ports:
      - 6379:6379
    restart: always

3. 启动与功能验证

docker-compose up -d
docker ps | grep redis
# 进入容器测试 Redis
docker exec -it <容器ID> redis-cli
set name your-name
get name
exit

六、关键要点总结

  1. 环境基石:内核转发、hosts 解析、SELinux / 防火墙是 Docker 稳定运行的前提。
  2. 镜像管理:私有 Registry 实现镜像私有化,tag/push/pull 是核心流程。
  3. 镜像构建:Dockerfile 遵循最小镜像、分层构建、固化配置原则。
  4. 服务编排:Compose 用 YAML 声明式定义服务,实现一键启停与依赖管理。
  5. 生产建议:启用 TLS 加密 Registry、配置镜像加速、限制容器资源、使用数据卷持久化。

结语

本文覆盖 CentOS 7 下 Docker 从环境初始化到服务编排的全流程,命令可直接复用、配置可直接落地,既适用于技能实训,也可作为中小企业容器化部署参考。遵循标准化流程,可大幅降低环境差异带来的故障风险,提升应用交付效率。

Logo

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

更多推荐