将ansible应用程序安装到docker容器

问题描述 投票:0回答:2

我有一个可以安装ansible的应用程序。不,我想创建包含已安装应用程序的docker镜像。

我的想法是在从外部机器开始安装到此docker容器之后从一些基本映像启动docker容器。之后,从此容器创建图像。

我刚刚开始使用码头工人,请问您是否有好主意,我该怎么做?

docker ansible dockerfile
2个回答
1
投票

这不是创建Docker镜像的标准方法,它不是我要做的,但它会起作用。考虑一下像Hashicorp的Packer这样可以自动化这个序列的工具。

忽略这些工具的具体细节,docker build序列的重要之处在于您将一些文件检入源代码控制,自动化进程可以使用它来构建Docker镜像。 Ansible手册与Packer JSON模板相结合将满足同样的基本要求。

但重要的是,Docker运行时环境与您通常使用Ansible配置的裸机系统或VM之间存在一些关键差异:您不太可能未经修改地使用现有的Playbook。例如,如果您的playbook尝试配置系统守护程序,安装systemd单元文件,添加ssh用户或其他标准系统管理任务,这些通常在Docker中不相关或无用。

我建议至少尝试使用标准Dockerfile打包您的应用程序,以实际了解生态系统。不要期望能够在Docker环境中使用未经修改的Ansible剧本;但如果您的组织有很多Ansible经验,并且您可以轻松地将“安装应用程序”与“配置服务器”分开,那么您建议的路径在技术上很好。


0
投票

你可以在Docker中使用multi-stage builds,这可能是一个很好的解决方案:

FROM ansible/centos7-ansible:stable as builder
COPY playbook.yaml .
RUN ansible-playbook playbook.yaml

FROM alpine:latest # Include whatever image you need for your application
# Add required setup for your app
COPY --from=builder . . # Copy files build in the ansible image, aka your app
CMD ["<command to run your app>"]

希望这个示例足够清晰,您可以创建Dockerfile

© www.soinside.com 2019 - 2024. All rights reserved.