Docker镜像定制与容器内配置:从Dockerfile到Yum仓库部署实战

📅 2026/7/25 16:21:59 👁️ 阅读次数 📝 编程学习
Docker镜像定制与容器内配置:从Dockerfile到Yum仓库部署实战

1. 先搞清楚“定制镜像”和“容器内配置”到底要解决什么

很多人一看到 Docker 就想到docker rundocker pull,但真到了自己动手定制环境、在容器里装软件的时候,反而容易卡住。这篇文章不绕远,直接解决两个核心问题:如何把一个普通的 Linux 容器,变成你想要的、带特定服务的环境

这通常分两步走:

  1. 定制镜像:就像先做好一个包含基础系统和工具的“模具”,以后所有容器都从这个模具里出来,自带了你预先装好的环境。这是为了标准化和复用
  2. 容器内配置与部署:有时候,你可能需要在一个已经运行的容器里临时改点东西,比如换个软件源、装个新服务。这更偏向于临时调试或动态调整

很多人会把这两步混在一起,导致 Dockerfile 写得复杂,容器启动后又手忙脚乱地进去敲命令。我的建议是:先想清楚你的最终目标是不是要一个可复用的镜像。如果是,那所有操作尽量在 Dockerfile 里完成;如果只是临时测试,再进入容器操作。

下面,我会从最基础的“定制一个简单镜像”开始,带你走完从编写 Dockerfile、构建镜像,到运行容器、进入容器配置 Yum 仓库、安装部署服务(比如 Nginx)的全过程。过程中会解释为什么这么做,以及哪里最容易踩坑。

2. 环境准备与核心概念对齐

在动手之前,确保你的操作环境是干净的,并且理解几个关键点,这能避免后面很多“莫名其妙”的错误。

2.1 基础环境确认

你需要一台安装了 Docker 的 Linux 机器(Windows/macOS 用 Docker Desktop 原理类似,但路径和部分命令可能有差异)。首先,确认 Docker 已经就绪:

# 1. 检查 Docker 是否安装及版本 docker --version # 2. 更重要的,检查 Docker 服务是否在运行 systemctl status docker | grep Active # 或者 sudo docker info

如果 Docker 没安装,可以参考网络上的教程进行安装。这里提一个关键点:安装 Docker 本身和配置容器内的 Yum 仓库是两回事。安装 Docker 是为宿主机(你的物理机或虚拟机)安装容器运行时;而配置容器内的 Yum 仓库,是在容器内部这个“小系统”里配置它的软件包管理器。

2.2 理解镜像、容器与 Dockerfile 的关系

这是 Docker 最核心的三个概念,理解错了,后面的操作全是徒劳。

  • 镜像:一个只读的模板。它包含了运行某个软件所需的所有内容:代码、运行时、库、环境变量和配置文件。镜像是分层的,每一层都是对前一层的增量修改。centos:7ubuntu:20.04这些都是基础镜像。
  • 容器:镜像的一个运行实例。你可以把它理解成一个轻量级的、隔离的虚拟机进程。容器运行时,会在镜像层之上创建一个可写的“容器层”,所有修改都发生在这里。容器停止后,这个可写层默认会保留,除非你删除容器。
  • Dockerfile:一个文本文件,里面包含了一系列的指令。Docker 引擎通过读取 Dockerfile 中的指令,可以自动构建出镜像。Dockerfile 是创建可复用镜像的标准方式。

简单比喻:Dockerfile 是菜谱,镜像是根据菜谱做好的半成品菜(已打包好),容器是加热后端上桌的那盘菜(正在运行)。

2.3 工作目录规划

不要在任何地方随意执行命令。先创建一个清晰的工作目录:

mkdir -p ~/docker-demo && cd ~/docker-demo

后续所有操作,如编写 Dockerfile、存放配置文件等,都在这个目录下进行。这能让你清楚地知道构建上下文(Build Context)里有什么,避免把不必要的文件打包进镜像,导致镜像体积臃肿。

3. 动手定制你的第一个简单镜像

我们从最经典的场景开始:基于 CentOS 7 官方镜像,定制一个安装了vimwget的工具镜像。

3.1 编写第一个 Dockerfile