ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Docker—— 镜像构建原因

2026/8/9 16:37:53 拓冰建站 浏览量
Docker—— 镜像构建原因

在现代软件开发和运维中,Docker已成为一种非常流行的工具,它通过容器化应用程序来简化部署过程。然而,默认的官方镜像往往只能满足基础需求,无法涵盖所有特定项目的具体要求。

原因说明
系统级改动无法通过 volume 实现修改用户、删除命令、安装系统组件等只能在镜像层完成
安全加固要求可复制、可验证你不能让每个节点手动执行一遍加固脚本,必须统一标准
合规性要求可追溯构建镜像可以打标签、记录作者和时间,方便审计和版本管理

镜像 vs Volume 的适用场景对比表

场景是否需要构建镜像使用 Volume 是否足够
修改系统组件(如安装包、删命令)必须构建镜像不够
用户权限、安全策略调整必须构建镜像不够
日志配置、访问控制等应用级配置可以用 volume足够
数据持久化、网站静态资源可以用 volume足够
安全合规、标准化部署必须构建镜像不够

自定义HTTP镜像

在 CentOS 7 容器中安装 httpd,并提交为新镜像 my-httpd-image

启动容器并进入交互式 shell

docker run -it --name my-httpd-container centos:7 /bin/bash

这会创建一个名为 my-httpd-container 的容器,并进入它的 bash 环境。

在容器内安装 httpd

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repoyum clean all
yum makecacheyum install -y httpd

配置启动服务

做一些简单配置,比如添加一个测试页面:

echo "Hello from Apache in Docker!" > /var/www/html/index.html

退出容器:

exit

提交容器为新镜像

docker commit my-httpd-container my-httpd-image:latest

查看镜像信息

docker images | grep my-httpd

你应该看到类似输出:

my-httpd-image   latest   xxxxxxxxxxxx   ...  

运行该镜像并启动 Apache

为了运行这个镜像并启动 Apache,可以这样运行:

docker run -d -p 8080:80 --name my-running-httpd my-httpd-image /usr/sbin/httpd -DFOREGROUND

解释:

  • -d: 后台运行

  • -p 8080:80: 映射宿主机端口 8080 到容器的 80 端口

  • /usr/sbin/httpd -DFOREGROUND: 强制 Apache 前台运行(避免容器立即退出)