Docker 实战系列(五):将 Ansible 打包为轻量化镜像,打造最小自动化运维环境
在自动化运维中,Ansible 是一款非常好用的无代理(Agentless)自动化工具,常用于批量配置、部署和管理服务器。
本篇我们会从零开始,将 Ansible 打包成一个足够小的 Docker 镜像,作为自动化运维的基础环境,镜像中只包含必要的包,避免多余依赖和编译步骤。
一、目标与原则
目标:
- 构建一个 < 100MB 的 Ansible 镜像
- 使用轻量级基础镜像(
python:alpine) - 只包含 Ansible 必要运行依赖
- 无编译步骤(不安装 build 工具链)
原则: - 选择合适的基础镜像(alpine 变种)
- 用
pip安装官方发布的预编译包(wheel),避免源码编译 - 清理 pip 缓存,减少镜像层大小
二、项目目录
ansible-docker/
└── Dockerfile
三、编写 Dockerfile
# 使用 Python Alpine 作为基础镜像(小巧+自带 Python)
FROM python:3.11-alpine
LABEL maintainer="Your Name <you@example.com>" \
description="Minimal Ansible Docker image for automation tasks"
# 避免交互式安装
ENV PYTHONUNBUFFERED=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1 \
PIP_NO_CACHE_DIR=1
# 安装 Ansible 及必要依赖
RUN apk add --no-cache \
openssh-client \
sshpass \
bash \
&& pip install --no-cache-dir --no-compile ansible-core==2.16.4
# 设置工作目录
WORKDIR /ansible
# 默认进入 ansible --version
CMD ["ansible", "--version"]
如果你不想运行基础镜像后就直接退出,可以将 CMD 命令改为 tail -f /dev/null
四、构建镜像
在项目目录执行:
docker build -t ansible-minimal:1.0 .
注:如果你的 Docker Engine ≥ v23.0 ,版本构建时可能出现以下提示,这是 Docker 在构建镜像时发出的弃用警告,官方建议安装并使用 docker buildx 插件来构建镜像,但我们这次学习还是使用 doc

最低0.47元/天 解锁文章
561

被折叠的 条评论
为什么被折叠?



