TOP
前: コンテナにファイルシステムをマウント
次: コンテナのログ
コンテナはコンテナイメージから起動します。同じイメージで起動したコンテナは基本的に同じものが動きます。しかし、たとえば開発環境と本番環境などでドメイン名が違う、接続するDBのホスト名が違うなどパラメータを変えて起動したいことがあります。この様な場合はコンテナに環境変数を指定して起動します。
-
centos:8のイメージを使いコンテナをバックグラウンドで実行してください。なお、centosのイメージはコマンドを指定しないとすぐに停止するのでsh -c "sleep 3600"などのコマンドを指定して実行してください。 -
作成したコンテナに設定されている環境変数を表示し、
ENVというkeyの環境変数がないことを確認してください。 -
コンテナを削除してください。
-
centos:8のイメージを使いコンテナをバックグラウンドで実行してください。この時、環境変数にENV=devを設定してください。環境変数の指定はdocker runコマンドのオプションで指定します。やり方は日本語マニュアルを参考にしてください。 -
作成したコンテナに設定されている環境変数を表示し、
ENV=devが設定されていることを確認してください。 -
以下コマンドでコンテナをすべて削除してください。
docker rm -f `docker ps -a -q`
このように、コンテナ起動時に環境変数を指定し環境差異を表現できます。しかし、これは環境変数で後からパラメータを指定できる様にアプリケーションが開発されているという前提です。コンテナでアプリケーション動かす際はこの点についてとくに注意して開発してください。(環境変数でなくても設定ファイルをコンテナ外に保存し、起動時に設定ファイルをマウントさせるということもできますが、環境変数で指定できた方が楽です。)
答え(一例です)
- 以下コマンドを実行する。
docker run -d centos:8 sh -c "sleep 3600"
- 以下コマンドを実行する。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d13ffff63bad centos:8 "sh -c 'sleep 3600'" About a minute ago Up About a minute laughing_newton
$ docker exec -it {docker psで確認したコンテナID} bash
# echo $ENV
#
- 以下コマンドを実行する。
# exit
exit
$ docker rm -f {docker psで確認したコンテナID}
{docker psで確認したコンテナID}
- 以下コマンドを実行する。
docker run -d -e ENV=dev centos:8 sh -c "sleep 3600"
- 以下コマンドを実行することで確認します。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b90896338ce1 centos:8 "sh -c 'sleep 3600'" 14 seconds ago Up 13 seconds confident_margulis
$ docker exec -it {docker psで確認したコンテナID} bash
# echo $ENV
dev
- プラクティスの指示コマンドを実行してください。
TOP
前: コンテナにファイルシステムをマウント
次: コンテナのログ