Dockerの勉強
Dockerfileからdocker imageを作成
タグ付けなし(ビルドするとタグ名が"none"になる)
docker build <directory>
タグ付け
docker build -t <name> <directory>
Dockerfileがない場合は -fを使ってファイル名指定する
docker build -f <dockerfilename> <buildcontext>
docker起動
nameオプションで名前をつけることができる
同じ名前のコンテナは作成不可能
docker run --name <name> <image>
どういうとき名前をつけるか
- 起動させ続けるコンテナを立てるとき
- 共有サーバを立てるとき
- 他のプログラムで使うとき
detached mode
コンテナ起動後にdetachする(バックグラウンドで動かす)
docker run -d <image>
foregroundmode
コンテナをExit後に削除
docker run --rm <image>
コンテナ確認
オプションで"-a"をつけないと起動しているコンテナしか表示されないので注意。
docker ps -a
docker イメージ 確認
docker images
docker イメージ名(下記例ではtarget)変更
docker tag <source> <target>
作成したイメージをDockerHubへpushする
docker push <image>
dockerfileからbuildしてdocker image作成
-tでタグをつける(つけないとIDがnoneになって使いづらい)
docker build -t <name> <directory>
Dockerfile
docker imageの元となる
FROM
ベースとなるイメージを決定
DockerfileはFROMから書き始める
ubuntu
alpine:軽量
RUN
FROMで指定したOSの上で実行するLinuxのコマンド(FROMで指定したOSがLinuxでないとLinuxコマンドは使えない)
CMD
commandの略 実行可能(executable)なコマンド(ex. ls)を指定する
シェルを起動するなどで使う(paramがなければかかなくてよい)
特に何もなければCMD["bin/bash"] でbash起動することが多い
CMD["executable","param1","param2",...]
Dockerfileの最後に記述する。CMDは1つのDockerfileにひとつだけである。
環境変数の設定
2種類書き方がある
ENV <key> <value>
or
ENV <key> = <value>
指定したディレクトリに移動する
WORKDIRは指定したディレクトリがなければ作成してくれる
WORKDIR <絶対path>
※相対path使うとどこで操作しているかわかりにくくなるため
絶対pathを推奨
Layer数を増やさないために
Dockerfileで下記3つのコマンドを使うとlayer数が増えてDockerimageが肥大化する
- RUN
- COPY
- ADD
&& でつなげて一つのコマンドにすることでLayer数を無駄に増やさなくて済む
\(バックスラッシュ)で改行する