1

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

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

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

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

进一步阅读它表明容器中没有启用 SSH,我不应该真的尝试 SSH 进入容器。

那么如何让容器 A 在容器 B 上运行脚本并在 A 上查看脚本的输出呢?

对此的最佳做法是什么?

4

1 回答 1

1

不修改应用程序本身的唯一方法是通过 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 在容器外运行脚本。但我认为你不是在寻找这种极端的解决方案。

我可以通过评论帮助你

问候

于 2016-10-12T12:10:47.977 回答