リモート 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 環境で複雑なコマンドの組み合わせ実行するには、それらを単一のコマンドとして実行する方法を考える必要があります。
次にいくつかの例を紹介します。
上記のリンクでは"ヒアドキュメント" を使用する、もしくはコマンドをシェルスクリプトに保存し、ssh
コマンドへ渡すなどの例が紹介されています。
ssh remote-docker
を使用して Docker ストレージドライバを更新する場合は、CircleCI フォーラムの以下のスレッドを参照ください。
https://discuss.circleci.com/t/changing-docker-storage-driver/36494/2
コメント
記事コメントは受け付けていません。