dockerfile設定コマンド■USER■VOLUME■WORKDIR
はじめに
くーばねてすをやっつけるためにこれまでにLinuxさんとAWSさんと仲良くさせていただいたが、新たなステージに上がるためについにdockerさんに会いに行くことにした。dockerさんと仲良くなることでコンテナシステムの仕組みの理解とくーばねてすを倒すための調査をする。
今回はdockerさんでコンテナを開発して、くーばねてすでの構築の基礎的な部分を理解する。
概要
■dockerfileのコマンド
■USER
■VOLUME
■WORKDIR
をまとめた!(^_-)-☆
■dockerfileのコマンド
dockerfile命令(コマンド)、意味ざっくり
|コマンド|意味|
| --- | --- | --- |
|FROM イメージ:タグ|コンテナのベースイメージ|
|RUN コマンド|FROMのベースイメージで実行するコマンド|
|ADD ソース コンテナ内宛先|ソースをコンテナ内宛先へコピーする|
|ENTRYPOINT |コンテナが実行するファイルを指定する|
|CMD|コンテナの実行時に実行されるコマンドを指定する|
|ENV key=Value|環境変数をセットする|
|EXPOSE port|公開ポートを設定する|
|USER ユーザ名|RUN,CMD,ENTRYPOINTの実行ユーザを指定する|
|VOLUME["/path"]|共有可能なボリュームをマウントする|
|WORKDIR /path|RUN,CMD,ENTRYPOINT,COPY,ADDの作業ディレクトリを指定する|
|ARG <名前>[=<デフォルト値>]|ビルド時の引数を定義する--bid-arg<引数>=<値>|
|LABEL key=value key=value|イメージのメタデータにラベルを追加する|
|MAINTAINER<名前>|イメージのメタデータに製作者を追加する|
ルールがたくさんある!('_')
dockerfileはGO言語で記述する。
■USER
USERコマンドはRUN,CMD,ENTRYPOINTの実行ユーザーを指定するコマンドだ。
USERコマンドは指定しなければ、root権限で実行されるのだが、USER を使うことにより非 root ユーザで実行することができる。
ここではユーザーの指定だけなので、ユーザーを使用できるようにするには、RUNコマンドでユーザーを追加する。
USER ユーザー名
RUN useradd -r ユーザー名
面倒くさかったらこれでもいいらしい
$ docker run -u ユーザー名 イメージ名
■VOLUME
VOLUMEコマンドは共有可能な永続ボリュームをマウントするコマンドだ。
データベース・ストレージ領域、設定用ストレージ、Docker コンテナによって作成されるファイルやフォルダの公開のためにボリュームを指定する。
イメージにおいて変わりやすい作業スペース・ユーザによって便利な保管場所として VOLUME が使用されることが多い。
永続ボリュームはホスト側の /var/lib/docker/volumes などを指定する。
docker run の -v オプションでは 「-v ボリューム名:マウントポイント」 でボリューム名を指定することができるが、VOLUME ではパス(マウントポイント)でしか指定することはできず、名前付きボリュームを割り当てることはできない。
VOLUME でマウントしたボリュームは、df コマンドに -a オプションをつけないと表示されないことがある。
VOLUME /var/disk1 /var/disk2 /var/disk3
または
$ docker run -v testvolume:/var/lib/docker/volumes ...
これで永続ボリュームを指定できる。
■WORKDIR
WORKDIRコマンドはコンテナが起動された時のRUN、CMD、ENTRYPOINT、COPY、ADDの作業ディレクトリを指定することができる。作業ディレクトリを指定しつつ同時にディレクトリの作成もされる。
WORKDIR /パス
WORKDIR /A
WORKDIR B
WORKDIR C
RUN pwd
↓
$ pwd
/A/B/C
ENVで設定した環境変数を展開することもできる。
ENV BASE_DIR=/opt/myapp
WORKDIR $BASE_DIR/tmp
まとめ
/⌒ヽ
/ ・ω・
_ノ ヽ ノ \_
/
/ ⌒Y⌒ Y ヽ
( (三ヽ人 / |
| ノ⌒\  ̄ ̄ヽ ノ
ヽ___>、__/
|( 王 ノ〈
/ミ`ー―彡ヽ
/ ヽ/ |
| /お疲れ! ズラ
Discussion