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

将ansible应用程序安装到docker容器,docker,ansible,dockerfile,Docker,Ansible,Dockerfile,我有一个可以用ansible安装的应用程序。否我想创建包含已安装应用程序的docker映像 我的想法是将docker容器从某个基础映像中升级,然后从外部机器开始安装,然后安装到此docker容器。之后,从该容器创建图像 我只是从Docker开始,你能告诉我这是不是一个好主意,我怎么做吗?你可以在Docker中使用,这可能是一个很好的解决方案: FROM ansible/centos7-ansible:stable as builder COPY playbook.yaml . RUN ansib

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

我的想法是将docker容器从某个基础映像中升级,然后从外部机器开始安装,然后安装到此docker容器。之后,从该容器创建图像

我只是从Docker开始,你能告诉我这是不是一个好主意,我怎么做吗?

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

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>"]
来自ansible/centos7 ansible:作为构建器稳定
复制playbook.yaml。
运行ansible playbook playbook.yaml
来自alpine:最新版本#包括应用程序所需的任何图像
#添加应用程序所需的设置
复制--from=builder复制ansible映像(也称为应用程序)中生成的文件
CMD[“”]

希望这个示例足够清晰,您可以创建Docker文件这不是创建Docker映像的标准方法,我也不会这么做,但它会起作用。考虑一下像HasiCordp这样的工具,它可以使这个序列自动化。 忽略工具的具体细节,docker build序列的重要一点是,您将一些文件签入到源代码管理中,自动化流程可以使用这些文件来构建docker映像。Ansible playbook加上Packer JSON模板将满足相同的基本要求

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


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

您可以在DockerFile中添加
运行Ansible playbook play.yml
,我可以,但我不想要。我想让集装箱清清楚楚。我现在不太明白程序。1.创建并运行容器。2.为它安装一些应用程序。3.停止并基于此容器4创建新图像。根据新图像5启动新容器。安装上面的下一个应用程序等。。。。我可以这样做吗?我的第一个容器应该是什么?从??您可以运行容器,我的意思是
docker run-ti centos bash
以某种方式安装您的应用程序(例如使用ansible)。出口集装箱。提交它并用作将来使用的基础映像(
来自my_new_Committed_img
),或者您可以从centos创建Dockerfile
,并添加许多RUN命令以安装应用程序,例如,
运行ansible playbook play.yml
-第二种方法更好,因为这样的Dockerfile可以推送到git repo