Skip to content

Latest commit

 

History

History
80 lines (59 loc) · 3.74 KB

File metadata and controls

80 lines (59 loc) · 3.74 KB

TOP
前: コンテナにファイルシステムをマウント
次: コンテナのログ


コンテナに環境変数を設定

コンテナはコンテナイメージから起動します。同じイメージで起動したコンテナは基本的に同じものが動きます。しかし、たとえば開発環境と本番環境などでドメイン名が違う、接続するDBのホスト名が違うなどパラメータを変えて起動したいことがあります。この様な場合はコンテナに環境変数を指定して起動します。

  1. centos:8のイメージを使いコンテナをバックグラウンドで実行してください。なお、centosのイメージはコマンドを指定しないとすぐに停止するのでsh -c "sleep 3600"などのコマンドを指定して実行してください。

  2. 作成したコンテナに設定されている環境変数を表示し、ENVというkeyの環境変数がないことを確認してください。

  3. コンテナを削除してください。

  4. centos:8のイメージを使いコンテナをバックグラウンドで実行してください。この時、環境変数にENV=devを設定してください。環境変数の指定はdocker runコマンドのオプションで指定します。やり方は日本語マニュアルを参考にしてください。

  5. 作成したコンテナに設定されている環境変数を表示し、ENV=devが設定されていることを確認してください。

  6. 以下コマンドでコンテナをすべて削除してください。

    docker rm -f `docker ps -a -q`

このように、コンテナ起動時に環境変数を指定し環境差異を表現できます。しかし、これは環境変数で後からパラメータを指定できる様にアプリケーションが開発されているという前提です。コンテナでアプリケーション動かす際はこの点についてとくに注意して開発してください。(環境変数でなくても設定ファイルをコンテナ外に保存し、起動時に設定ファイルをマウントさせるということもできますが、環境変数で指定できた方が楽です。)

答え(一例です)
  1. 以下コマンドを実行する。
docker run -d centos:8 sh -c "sleep 3600"
  1. 以下コマンドを実行する。
$ 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

#
  1. 以下コマンドを実行する。
# exit
exit
$ docker rm -f {docker psで確認したコンテナID}
{docker psで確認したコンテナID}
  1. 以下コマンドを実行する。
docker run -d -e ENV=dev centos:8 sh -c "sleep 3600"
  1. 以下コマンドを実行することで確認します。
$ 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
  1. プラクティスの指示コマンドを実行してください。

TOP
前: コンテナにファイルシステムをマウント
次: コンテナのログ