我已经构建了一个docker镜像并使用ansible启动了容器。我遇到了一个问题,试图从docker主机创建一个到容器的动态连接,以设置一些环境变量并执行一些脚本。我知道ansible不使用ssh连接到容器,我可以使用expect模块运行此命令" ssh root @ localhost -p 12345"。如何使用 ansible docker连接插件添加和维护与容器的连接,或者直接指向docker主机?这都在AWS EC2实例中运行。
我认为我需要运行ansible作为此命令的等效使用,由ansible连接到容器主机" docker exec -i -t container_host_server / bin / bash"。
先谢谢, DT
答案 0 :(得分:1)
要设置环境变量,您可以使用参数" env"在您的docker_container任务中。
在docker_container任务中,您可以添加参数"命令"在docker镜像的Dockerfile中覆盖定义为CMD的命令,有点像
command: PathToYourScript && sleep infinity
在您的示例中,您公开了容器端口22,因此您似乎希望在容器内运行sshd。虽然它不是Docker中的最佳实践,但如果你想运行sshd,你必须使用docker_container任务中的命令参数启动它:
command: ['/usr/sbin/sshd', '-D']
这样做(并在容器中定义了用户),您就可以将容器连接到
ssh -p 12345 user@dockerServer
或者,至于你的例子," ssh -p 12345 root @ localhost"如果您的图像已经定义了root用户并且您正在使用localhost。