Open11

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
モーリーモーリー

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にひとつだけである。

モーリーモーリー

指定したディレクトリに移動する
WORKDIRは指定したディレクトリがなければ作成してくれる

WORKDIR <絶対path>

※相対path使うとどこで操作しているかわかりにくくなるため
絶対pathを推奨

モーリーモーリー

Layer数を増やさないために

Dockerfileで下記3つのコマンドを使うとlayer数が増えてDockerimageが肥大化する

  • RUN
  • COPY
  • ADD
    && でつなげて一つのコマンドにすることでLayer数を無駄に増やさなくて済む
    \(バックスラッシュ)で改行する