我有两个通过Docker Compose文件配置的Docker容器。

  • Docker容器A-(teamcity-agent)
  • Docker容器B-(构建工具)

  • 两者都启动正常。但是作为TeamCity构建过程的一部分-我希望代理(容器A)运行Docker容器B上的bash脚本(只有B可以运行此脚本)。

    我尝试使用Team City中的SSH构建步骤进行设置,但连接被拒绝。

    对它的进一步阅读表明,容器中未启用SSH,我不应该真正尝试将SSH导入容器中。

    那么,如何获得Container A在Container B上运行脚本并在A上查看脚本的输出?

    最佳做法是什么?

    请您参考如下方法:

    不修改应用程序本身的唯一方法是通过SSH。您无法SSH到容器是完全错误的。我使用SSH到数据库容器以在其中运行数据库导出。

    首先,请确保B上安装了openssh-server。然后,必须在A和B之间设置无密码连接。

    然后确保将容器链接到docker-compose文件中,这样就无需公开SSH端口。

    为容器B添加Dockerfile的代码片段

    RUN apt-get install -q -y openssh-server 
    ADD id_rsa.pub /home/ubuntu/.ssh/authorized_keys 
    RUN chown -R ubuntu:ubuntu /home/ubuntu/.ssh ; \ 
      chmod 700 /home/ubuntu/.ssh ; \ 
      chmod 600 /home/ubuntu/.ssh/authorized_keys 
    

    您也可以在主机的crontab中使用docker exec在容器外部运行脚本。但是我认为您不是在寻找这种极端的解决方案。

    我可以通过评论帮助您

    问候


    评论关闭
    IT序号网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!