リモート Docker 環境でコマンドを実行する方法

リモート Docker 環境上で何か操作を行う場合に、Docker コマンドのみ設定なく実行できます。ただし、任意のコマンドをシェルに組み込み、SSH で接続しそのシェルを実行することで、リモート Docker 環境でプログラムを実行できます。

 

リモート Docker 環境に SSH で接続するには、setup_remote_docker を使用すジョブに対して Rerun job with sshでビルドへSSH 接続し、その後 ssh remote-docker を実行する、もしくはrun ステップ上でsshコマンドを実行します。 補足:setup_remote_docker ステップを必ず先に実行します。実行前の場合SSH接続は失敗します。

任意のコマンドをSSHコマンドと組み合わせ実行する場合、次のようになります。

run: |  ssh remote-docker \ echo "this echo command will be executed in the remote Docker environment \ 
rather than the initial job container itself"

ここで問題となるのは、SSH シェルに渡すことのできるコマンドは 1 つだけだということです。例えば、 ssh remote-docker touch file1 && touch file2 を実行すると、file1 はリモート Docker 環境に作成されますが、file2 はジョブのローカルコンテナに作成されます。

そのため、リモート Docker 環境で複雑なコマンドの組み合わせ実行するには、それらを単一のコマンドとして実行する方法を考える必要があります。

次にいくつかの例を紹介します。

https://stackoverflow.com/questions/4412238/what-is-the-cleanest-way-to-ssh-and-run-multiple-commands-in-bash

上記のリンクでは"ヒアドキュメント" を使用する、もしくはコマンドをシェルスクリプトに保存し、ssh コマンドへ渡すなどの例が紹介されています。

ssh remote-docker を使用して Docker ストレージドライバを更新する場合は、CircleCI フォーラムの以下のスレッドを参照ください。

https://discuss.circleci.com/t/changing-docker-storage-driver/36494/2

この記事は役に立ちましたか?
3人中1人がこの記事が役に立ったと言っています

コメント

0件のコメント

サインインしてコメントを残してください。