2016-10-12 9 views
1

Docker Composeファイルを使用して2つのDocker Containerを構成しました。Docker Container Aからの(Docker Container Bの)Bashスクリプトの実行

  • ドッカーコンテナA - (チームシティーエージェント)
  • ドッカーコンテナB - (ビルド・ツール)

両方細かい起動。しかし、TeamCityのビルドプロセスの一環として、Agent(Container A)にDocker Container B(このスクリプトを実行できるBのみ)上にあるbashスクリプトを実行したいと思います。

私はこれをTeam CityのSSHビルドステップを使用して設定しようとしましたが、接続が拒否されます。

これに加えて、SSHがコンテナで有効になっておらず、実際にコンテナにSSHしようとしてはいけないことがわかります。

コンテナBにスクリプトを実行し、Aのスクリプトの出力を確認するには、コンテナAを取得するにはどうすればよいですか?

このためのベストプラクティスは何ですか?

+0

を経由してあなたを助けることができる私はあなたのドッキングウィンドウコンテナの間の接続の問題のために(nginxのは良いものです)リバースプロキシをお勧めします。両方のマイクロサービスでデータを取得します。 – Gabbax0r

+0

ドッカーソリューションでドッカーを試したかどうかはわかりません。 docker-in-dockerのセクションはこちら:https://hub.docker.com/_/docker/ – neofreko

答えて

1

アプリケーション自体を変更しないで唯一の方法は、SSHを使用することです。コンテナにSSHできないのは完全に間違っています。私はSSHをデータベースコンテナに使用して、その内部でデータベースのエクスポートを実行します。

まずOpenSSHのサーバがBにインストールされている、あなたはセットアップAとB

間のパスワードなしの接続が次にあなたが必要としませんので、あなたがドッキングウィンドウ-COMPOSEファイルにあなたのコンテナをリンクする確認する必要があります確認してくださいSSHポートを公開します。

スニペットはまた、あなたがホストでのcrontabにドッカexecを使用して、容器の外にスクリプトを実行することができ、コンテナB

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 

ためDockerfileに追加します。しかし、私はあなたがこの極端な解決策を探しているわけではないと思います。

私はコメント

よろしく

+0

opensshの設定ガイドはありますか?私はいくつかのことを試してみましたが、接続しようとするとパーミッションが拒否され続けます。 –

+1

まず、次の手順を手動で実行する必要があります。https://www.liberiangeek.net/2014/08/enable-password-less-ssh-logon-ubuntu-servers/私は、コンテナBのdocker execがsshクライアントとキー生成のためにコンテナAのsshサーバーとドッカーexecを構成することを意味します。手動で接続できたら、ドッカーファイルで自動化してください。 –

+0

ありがとう、これは私が以前に試していたものに似ていましたが、私の問題はrootユーザーのためにパスワードなしのSSHを実行しようとしていたことだと思います。 ちょうど試してみましたが、今はSSHを実行できます:) –

関連する問題