PR

Dockerコンテナ内のスクリプトを外から実行する

Docker
記事内に広告が含まれています。

個人的に、Dockerコンテナ内のスクリプトを外から実行したいケースがありました。
一連の処理の流れでホスト側から実行したい時などに便利なので、説明を残しておきます。

シェルスクリプトの実行例

まずは、シェルスクリプトを作成しておきます。
テキストファイルを作るだけの簡単なシェルスクリプトです。

#!/bin/bash
touch test.txt

このシェルスクリプトを、コンテナ内の/tmp下に配置しておきます。(ファイルの実行権限も付与しておきます。)

root@1d4b4bc5782b:/tmp# ls -l
合計 4
-rwxr--r-- 1 root root 26  2月 23 16:53 make_file.sh

コンテナからexitして、ホスト側から以下のコマンドを叩いてコンテナ内のシェルスクリプトを実行します。

$ docker exec -w /tmp test_container /bin/bash -c "/tmp/make_file.sh"

コンテナ外から実行して、test.txtが作成できていることが確認できました。

root@1d4b4bc5782b:/tmp# ls -l
合計 4
-rwxr--r-- 1 root root 26  2月 23 16:53 make_file.sh
-rw-r--r-- 1 root root  0  2月 23 17:04 test.txt

コマンドの説明

以下の形になります。

docker exec -w {コンテナ内の作業ディレクトリ} {コンテナ名} /bin/bash -c "{実行したいシェルスクリプトパス}"

-wを使って、以下のようにコンテナ外からコンテナ内のディレクトリの中身を確認することもできます。
もちろん、その他のコマンド操作も可能です。

$ docker exec -w /tmp mng_api_local ls -l          
合計 4
-rwxr--r-- 1 root root 26  2月 23 16:53 make_file.sh
-rw-r--r-- 1 root root  0  2月 23 17:04 test.txt

まとめ

以上、コンテナ外からシェルスクリプトを実行する方法に関して説明しました。
私はホスト側で叩くシェルスクリプト内で、コンテナ内のシェルスクリプトを実行したいケースで使用しました。

読んで頂いた方々の参考になっていれば幸いです。

コメント

タイトルとURLをコピーしました