温馨提示×

CentOS Docker镜像构建流程是怎样的

小樊
54
2025-10-06 22:24:37
栏目: 智能运维

CentOS Docker镜像构建流程

1. 准备环境:安装Docker

在CentOS系统上构建镜像前,需先安装Docker。常见步骤如下:

  • 更新系统包:sudo yum update -y
  • 安装依赖:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  • 添加Docker官方仓库:sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 安装Docker CE:sudo yum install -y docker-ce docker-ce-cli containerd.io
  • 启动服务并设置开机自启:sudo systemctl start docker && sudo systemctl enable docker
  • 验证安装:docker --version(显示版本信息则说明安装成功)

2. 编写Dockerfile:定义镜像构建规则

Dockerfile是构建镜像的核心文本文件,需包含基础镜像、维护者信息、操作指令、启动命令等内容。以下是针对CentOS的典型示例及关键说明:

# 1. 基础镜像(必须为第一行有效指令,推荐使用官方镜像)
FROM centos:7  # 或 centos:latest(根据需求选择版本)

# 2. 维护者信息(可选但建议添加)
LABEL maintainer="your-email@example.com"

# 3. 镜像操作指令
RUN yum -y update && \  # 更新系统包(建议合并为一步减少层数)
    yum -y install epel-release vim wget curl net-tools && \  # 安装常用工具
    yum clean all  # 清理缓存(减小镜像体积)

# 4. 设置工作目录(容器内的默认路径)
WORKDIR /app

# 5. 暴露端口(声明容器内服务监听的端口,非宿主机映射)
EXPOSE 80

# 6. 启动命令(容器启动时执行的命令)
CMD ["/bin/bash"]  # 交互式shell,可根据需求改为服务启动命令(如 CMD ["httpd", "-D", "FOREGROUND"])

关键规范

  • 合并RUN指令(如将yum updateyum install合并),减少镜像层数;
  • 清理临时文件(如yum clean all),避免缓存占用空间;
  • 使用WORKDIR替代RUN cd(避免后续指令路径混乱);
  • 指定包版本(如yum install -y httpd-2.4.6),避免latest导致版本不一致

3. 构建镜像:生成自定义镜像

在Dockerfile所在目录下,执行以下命令构建镜像:

docker build -t my-centos-image:1.0 .  # -t 指定镜像名称及标签(如1.0),. 表示当前目录(Dockerfile所在路径)

说明

  • 构建过程中,Docker会逐行执行Dockerfile指令,每一步都会生成一个镜像层(Layer);
  • 若构建失败,可根据错误信息修改Dockerfile后重新执行命令

4. 验证镜像:检查镜像是否存在

构建完成后,通过以下命令查看本地镜像列表:

docker images

输出结果中,若存在my-centos-image:1.0(名称与标签需与构建时一致),则说明镜像构建成功

5. 运行容器:测试镜像功能

使用构建的镜像启动一个容器,验证其是否符合预期:

docker run -it --name my-centos-container my-centos-image:1.0  # -it 表示交互模式,--name 指定容器名称

验证内容

  • 进入容器后,执行cat /etc/centos-release(查看CentOS版本);
  • 执行vim --version(查看是否安装vim);
  • 若Dockerfile中暴露了端口(如EXPOSE 80),可通过curl localhost(容器内)或curl 宿主机IP(宿主机)测试端口连通性

6. (可选)推送镜像到Docker Hub:分享镜像

若需将镜像分享给他人或在其他环境使用,可将其推送到Docker Hub(公共仓库):

docker login  # 登录Docker Hub账号(需提前注册)
docker tag my-centos-image:1.0 your-dockerhub-username/my-centos-image:1.0  # 为镜像打标签(格式:用户名/镜像名:标签)
docker push your-dockerhub-username/my-centos-image:1.0  # 推送镜像到Docker Hub

说明:推送前需确保镜像标签包含Docker Hub用户名,否则无法推送

0