bash - 从Docker容器A(在Docker容器B上)运行Bash脚本

标签 bash docker ssh docker-container

我有两个通过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在容器外部运行脚本。但是我认为您不是在寻找这种极端的解决方案。

    我可以通过评论帮助您

    问候

    关于bash - 从Docker容器A(在Docker容器B上)运行Bash脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39997554/

    相关文章:

    linux - 由于 mkdir 拒绝,无法安装软件

    php - 我们可以在 Bash 脚本中使用 PHP 吗?

    bash - 如何在 Bash 中将变量设置为命令的输出?

    python - 如何使用 docker Docker SDK for Python 获取容器大小

    ssh - 系统崩溃后恢复SSH session

    linux - Bash ssh for loop - 环境变量问题

    bash - 字符串封装如 $"Hello World."

    node.js - Docker 容器中的 Gulp 命令代码 139

    linux - 如何使用 curl.h 在我的网络服务器上安装 git 没有这样的文件错误

    docker - 执行 : "com.docker.cli": executable file not found in $PATH