运行 来自 Docker 容器 A 的 Bash 脚本(在 Docker 容器 B 上)
Running a Bash Script from (on Docker Container B) from Docker Container A
我有两个 Docker 通过 Docker Compose 文件配置的容器。
- Docker 容器 A - (teamcity-agent)
- Docker 容器 B -(构建工具)
两者都启动良好。但作为 TeamCity 中构建过程的一部分 - 我希望代理(容器 A)运行 bash 脚本位于 Docker 容器 B(只有 B 可以 运行 这个脚本)。
我尝试在 Team City 中使用 SSH 构建步骤进行设置,但连接被拒绝。
进一步阅读它表明容器中未启用 SSH,我真的不应该尝试通过 SSH 连接到容器中。
那么如何让容器 A 到 运行 容器 B 上的脚本并在 A 上查看脚本的输出?
最佳做法是什么?
不修改应用程序本身的唯一方法是通过 SSH。不能通过 SSH 连接到容器是完全错误的。我使用 SSH 连接到数据库容器,以 运行 在其中导出数据库。
首先确保B上安装了openssh-server。然后你必须在A和B之间设置一个无密码连接。
然后确保 link 您的容器在 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 在容器外运行脚本。但我认为你不是在寻找这种极端的解决方案。
我可以通过评论帮助你
此致
我有两个 Docker 通过 Docker Compose 文件配置的容器。
- Docker 容器 A - (teamcity-agent)
- Docker 容器 B -(构建工具)
两者都启动良好。但作为 TeamCity 中构建过程的一部分 - 我希望代理(容器 A)运行 bash 脚本位于 Docker 容器 B(只有 B 可以 运行 这个脚本)。
我尝试在 Team City 中使用 SSH 构建步骤进行设置,但连接被拒绝。
进一步阅读它表明容器中未启用 SSH,我真的不应该尝试通过 SSH 连接到容器中。
那么如何让容器 A 到 运行 容器 B 上的脚本并在 A 上查看脚本的输出?
最佳做法是什么?
不修改应用程序本身的唯一方法是通过 SSH。不能通过 SSH 连接到容器是完全错误的。我使用 SSH 连接到数据库容器,以 运行 在其中导出数据库。
首先确保B上安装了openssh-server。然后你必须在A和B之间设置一个无密码连接。
然后确保 link 您的容器在 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 在容器外运行脚本。但我认为你不是在寻找这种极端的解决方案。
我可以通过评论帮助你
此致