使用 Jenkins 构建 Docker 镜像
配置 Jenkins 作业,在代码发生更改时自动构建 Docker 镜像并将其推送到镜像仓库
使用 Jenkins 构建 Docker 镜像 是 CoddyKit 上的免费 Docker & DevOps Fundamentals 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Docker & DevOps Fundamentals 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Docker & DevOps Fundamentals 课程共包含 4 节课。
自动化构建 Docker 镜像
手动构建 Docker 镜像可能速度慢、结果不一致,而且容易出错。在团队环境中,或者代码频繁更改时,这一点尤其明显。
自动化是实现可靠、高效软件交付的关键。本课将学习如何将 Jenkins 与 Docker 集成,以自动创建并推送镜像。

Jenkins 与 Docker 的前置条件
要让 Jenkins 构建 Docker 镜像,它需要与 Docker 守护进程交互。这意味着,运行 Jenkins 任务的机器或代理上必须安装 Docker 客户端。
您还需要:
- 正在运行的 Jenkins 服务器(来自第 1 课)
- Docker 镜像仓库的访问权限(例如 Docker Hub)
- 一个示例应用程序及其 Dockerfile
在 Jenkins 主机上安装 Docker
若要让 Jenkins 执行 Docker 命令,请确保 Jenkins 服务器或代理上已安装并配置好 Docker。Jenkins 用户通常需要具备与 Docker 守护进程交互的权限。
下面介绍如何在 Linux 系统上进行设置:
sudo apt-get update
sudo apt-get install -y docker.io
sudo usermod -aG docker jenkins
sudo systemctl restart docker
sudo systemctl restart jenkins保护镜像仓库凭据
若要将镜像推送到 Docker 镜像仓库,Jenkins 需要凭据。请务必安全地存储这些凭据,不要直接写入 Jenkinsfile 或任务配置中。
Jenkins 内置的凭据功能非常适合完成此操作:
- 进入管理 Jenkins > 管理凭据。
- 为您的 Docker 镜像仓库添加新的用户名和密码凭据。
- 为其设置一个具有描述性的 ID(例如
dockerhub-credentials),以便之后引用。
Flask 应用示例
我们来使用一个非常简单的 Python Flask 应用。我们会将其放在名为 app.py 的文件中。它将提供一条基本的“Hello”消息。
我们还需要一个 requirements.txt 文件,用于指定 Python 依赖项。
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello from CoddyKit!'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
# requirements.txt
Flask==2.0.2创建 Dockerfile
接下来,我们将使用 Dockerfile 定义 Docker 镜像。这个文件会告诉 Docker 如何构建应用镜像。
请将此 Dockerfile 放在与 app.py 和 requirements.txt 相同的目录中。
# Dockerfile
FROM python:3.9-slim-buster
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
EXPOSE 5000
CMD ["python", "app.py"]Jenkins 任务:构建步骤
现在,我们来配置一个 Jenkins Freestyle 任务。在构建步骤部分,添加一个执行 shell步骤。此命令会构建您的 Docker 镜像。
请记得将 yourusername 替换为您的 Docker Hub 用户名或镜像仓库路径。
# In Jenkins 'Execute shell' build step:
docker build -t yourusername/coddykit-app:latest .Jenkins 任务:登录和推送步骤
构建镜像后,我们需要将其推送到 Docker 镜像仓库。这通常需要先登录。我们将使用之前存储的凭据。
再添加一个执行 shell步骤。如果配置正确,Jenkins 会将凭据注入为环境变量(例如 DOCKER_USER、DOCKER_PASS)。
# In Jenkins 'Execute shell' build step:
echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
docker push yourusername/coddykit-app:latest自动化构建触发器
CI/CD 的强大之处在于自动化。Jenkins 可以根据各种事件自动触发这些构建和推送任务:
- SCM 轮询:Jenkins 定期检查您的 Git 仓库是否有新的提交。
- Webhook:每当代码被推送时,您的 Git 服务提供商(GitHub、GitLab、Bitbucket)都会向 Jenkins 发送通知。
- 上游项目:在另一个 Jenkins 任务成功完成后触发。
测试 Jenkins 任务
配置好构建步骤和触发器后,保存您的 Jenkins 任务。您可以手动触发一次构建来测试它。请查看控制台输出,确认 Docker 镜像已成功构建并推送。
成功运行意味着您的 CI 流水线现在可以在代码发生变化时,自动生成并存储新的 Docker 镜像!
快速检查
您已经设置了一个用于构建和推送 Docker 镜像的 Jenkins 任务。您的 Git 仓库中有新的代码变更。
回顾:构建和推送
做得很好!在本课中,您学习了如何:
- 为 Docker 交互准备 Jenkins 环境。
- 在 Jenkins 中安全地管理 Docker 镜像仓库凭据。
- 配置 Jenkins 任务,使用 Dockerfile 构建 Docker 镜像。
- 将新构建的镜像推送到 Docker 镜像仓库。
- 了解触发自动化构建的不同方式。
自动化这些步骤是持续集成的核心部分,也为持续交付奠定了基础!
常见问题解答
「使用 Jenkins 构建 Docker 镜像」课时是免费的吗?
是的 — 「使用 Jenkins 构建 Docker 镜像」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Docker & DevOps Fundamentals 课程的其余内容,请升级到 CoddyKit PRO。 Docker & DevOps Fundamentals 课程共包含 4 节课。
「使用 Jenkins 构建 Docker 镜像」这节课中我会学到什么?
配置 Jenkins 作业,在代码发生更改时自动构建 Docker 镜像并将其推送到镜像仓库 你通过在浏览器中直接运行的动手代码来练习 Docker & DevOps Fundamentals,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Docker & DevOps Fundamentals 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Docker & DevOps Fundamentals 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「使用 Jenkins 构建 Docker 镜像」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Docker & DevOps Fundamentals 课中编写并运行代码吗?
能。每节 Docker & DevOps Fundamentals 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Jenkins 简介
- 使用 Jenkins 构建 Docker 镜像
- 使用 Jenkins 自动部署
- 使用 Jenkinsfile 将 Jenkins Pipeline 定义为代码