首页 文章

使用ansible连接到容器

提问于
浏览
0

我已经构建了一个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” .


  • name:创建数据容器
    docker_container:
    name:packageserver
    image:my_image / image_name
    tty:是的
    州:开始了
    分离:是的
    分离:是的
    卷:

  • / var / www / html
    published_ports:

  • "12345:22"

  • "80:80"
    注册:容器

在此先感谢,DT

1 回答

  • 1

    要设置环境变量,可以在docker_container任务中使用参数“env” .

    在docker_container任务中,你可以添加参数“command”来覆盖docker镜像的Docker文件中定义为CMD的命令,有些像

    command: PathToYourScript && sleep infinity
    

    在您的示例中,您公开了容器端口22,因此您似乎希望在容器内运行sshd . 虽然这不是Docker中的最佳实践,但如果您希望sshd运行,则必须使用docker_container任务中的命令参数启动它:

    command: ['/usr/sbin/sshd', '-D']
    

    这样做(并在容器中定义了用户),您将能够连接容器

    ssh -p 12345 user@dockerServer
    

    或者,对于您的示例,如果您的映像已经定义了root用户并且您正在使用localhost,那么“ssh -p 12345 root @ localhost” .

相关问题