serversideup/ansible 是一个轻量级解决方案,用于在容器化环境中运行Ansible。该项目基于从 https://github.com/willhallonline/docker-ansible 学到的经验构建,提供安全隔离的Ansible任务运行环境,支持Alpine和Debian发行版,可作为非特权用户运行,避免文件权限问题。
适用于需要在不同环境中一致运行Ansible任务的场景,包括开发、测试和生产环境。特别适合需要隔离Ansible运行环境、避免主机依赖冲突,或需要灵活配置用户权限的场景。提供两种镜像变体满足不同需求:
| 变体 | 镜像大小 | 描述 |
|---|---|---|
serversideup/ansible-core | 轻量级的Ansible核心安装 | |
serversideup/ansible | "开箱即用"的Ansible完整安装 |
Docker镜像采用全面的标签系统,提供灵活性和特异性。
| 组件 | 示例 |
|---|---|
| Ansible版本 | 2.17.3, 2.17 |
| 基础操作系统 | alpine3.20, bullseye |
| Python版本 | python3.11 |
| 操作系统系列 | alpine, debian |
| 标签 | 含义 |
|---|---|
2.17.3-alpine3.20-python3.11 | 最具体的标签(指定Ansible版本、OS版本和Python版本) |
2.17.3-alpine3.20 | 指定Ansible版本和OS版本,使用最新Python |
2.17.3 | 指定Ansible版本,使用最新OS和Python |
2.17-alpine3.20-python3.11 | 指定Ansible次要版本和补丁版本,OS版本和Python版本 |
2.17-alpine-python3.11 | 基于操作系统系列的标签 |
[!IMPORTANT]
在几乎所有情况下,您需要将卷挂载到Ansible"工作目录"(默认:/ansible)和SSH配置(通常为~/.ssh)。
bashdocker run --rm -it \ -v "$HOME/.ssh:/ssh" \ -v "$(pwd):/ansible" \ serversideup/ansible:latest ansible-playbook playbook.yml
bashdocker run --rm -it \ -v "$HOME/.ssh:/ssh" \ -v "$(pwd):/ansible" \ -e PUID=9999 -e PGID=9999 \ -e RUN_AS_USER=bob \ serversideup/ansible:latest ansible-playbook playbook.yml
bashdocker run --rm -it \ -v "$HOME/.ssh:/ssh" \ -v "$(pwd):/ansible" \ serversideup/ansible:latest /bin/sh
[!NOTE]
使用SSH密钥可能比较复杂,特别是动态设置RUN_AS_USER时。我们提供了一些工具来简化配置。
/ssh目录
默认情况下,/ssh目录通过符号链接链接到~/.ssh,作为SSH密钥和配置的统一来源。如果设置RUN_AS_USER,入口点将在/home/${RUN_AS_USER}创建主目录,并从/home/${RUN_AS_USER}/.ssh符号链接到/ssh,方便灵活设置运行用户。
挂载SSH认证套接字
SSH认证套接字是SSH代理用于与其他进程通信的Unix套接字,支持安全密钥管理。
macOS:
bashdocker run --rm -it \ -v "$HOME/.ssh:/ssh:ro" \ -v "$HOME/.ssh/known_hosts:/ssh/known_hosts:rw" \ -v "$(pwd):/ansible" \ -v "/run/host-services/ssh-auth.sock:/run/host-services/ssh-auth.sock" \ -e SSH_AUTH_SOCK="/run/host-services/ssh-auth.sock" \ serversideup/ansible:latest ansible-playbook playbook.yml
Linux:
bashdocker run --rm -it \ -v "$HOME/.ssh:/ssh:ro" \ -v "$HOME/.ssh/known_hosts:/ssh/known_hosts:rw" \ -v "$(pwd):/ansible" \ -v "$SSH_AUTH_SOCK:$SSH_AUTH_SOCK" \ -e SSH_AUTH_SOCK="$SSH_AUTH_SOCK" \ serversideup/ansible:latest ansible-playbook playbook.yml
可通过以下环境变量自定义镜像:
| 变量 | 默认值 | 描述 |
|---|---|---|
PUID | 1000 | 设置运行Ansible的用户ID |
PGID | 1000 | 设置运行Ansible的组ID |
RUN_AS_USER | ansible | 运行Ansible的用户名(将自动创建,默认为非特权用户) |
DEBUG | false | 启用容器启动的调试输出 |
作为开源项目,我们致力于开发过程的透明度和协作。非常感谢社区成员提供的任何贡献。无论您是修复错误、提出功能建议、改进文档还是传播项目,您的参与都将增强项目。请查看我们的行为准则,了解我们如何尊重地合作。
我们是Dan和Jay——一个热爱开源产品的两人团队。我们创建了Server Side Up来分享我们学到的知识。
如果您喜欢这个项目,一定要查看我们的其他项目。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务