我有两个通过Docker Compose文件配置的Docker容器。
两者都启动正常。但是作为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在容器外部运行脚本。但是我认为您不是在寻找这种极端的解决方案。
我可以通过评论帮助您
问候
关于bash - 从Docker容器A(在Docker容器B上)运行Bash脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39997554/