docker - docker容器上的Ansible命令?

标签 docker docker-compose ansible ansible-2.x

到目前为止,我已经设置了在 AWS EC2 实例上运行的 ansible-playbook 命令。
我可以在容器上运行常规的 ansible 命令,例如(linefile、apt、pip 等)吗?
我可以将我的容器 IP 添加到容器组中的主机文件,然后执行相同的代码吗,如果我更改我的 main.yml 文件

hosts: ec2-group
hosts:contaniers-group
所有命令都有效吗?
我对此有点初学者..请确认我实际上正在考虑从头开始制作 docker-compose 文件,并使用 ansible 运行 docker-compose 命令。

最佳答案

你可以,但这并不是 Docker 的设计初衷。
Docker 容器通常是单个进程的包装器。在标准设置中,您创建一个构建并打包了该应用程序的镜像,您可以直接运行它而无需任何进一步的设置。运行裸 Linux 分发容器(不会安装应用程序)或运行交互式 shell 作为主容器进程通常并不有趣。 Docker 之类的教程 Build and run your image遍历这个序列。
一个推论是容器通常没有任何本地状态。在最好的情况下,容器需要的任何状态都在外部数据库中;如果你不能这样做,那么你将本地状态存储在一个比容器生命周期更长的卷中。
最后,删除和重新创建容器是非常常规的。您需要这样做以更改一些常用选项;在像 Kubernetes 这样的集群环境中,这可能会发生在您的控制之外。发生这种情况时,新容器将重新开始运行其默认设置,并且它不会知道以前的容器可能进行的任何手动更改。
因此,您通常不想尝试直接在正在运行的容器中安装软件,因为一旦容器退出,它就会丢失。原则上,您可以在容器中获取 shell(通过 docker exec ),但这更像是调试工具而不是管理工具。您可以使容器运行的唯一进程是 ssh 守护进程,但是一旦容器退出,您以这种方式启动的任何内容都会丢失(而且我从未见过正确且安全地设置访问它的凭据的配方)。
我建议学习标准的 Dockerfile 系统并运行自包含的 Docker 镜像,而不是尝试使 Ansible 适应这个完全不同的环境。

关于docker - docker容器上的Ansible命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62890016/

相关文章:

ansible - Playbook 依赖项与角色依赖项

linux - 在 Dockerfile 中使用来自 docker-compose build --build-arg 的参数

docker - GitLab CI Runner 无法提取私有(private) Docker 镜像 w。 "no basic auth credentials"但它通过 SSH 工作

amazon-web-services - 将多服务应用程序部署到云提供商

postgresql - 使用一个docker-compose.yml启动两个Wiki js容器,并通过traefik分离数据库(postgres)

jenkins - 使用 Jenkins 在 Docker 容器中运行测试

Ansible默认变量命名似乎不一致

python - 如何在AWS ECS上的Flask/MongoDB中设置环境变量?

docker - 重新启动后找不到Docker网络

docker - 如何使用ansible docker_container模块重新加载配置?