- Dockerfileは,Docker imageの設計図
- DockerfileをビルドすることでDocker imageを作成することができる
- Dockerfileはテキストファイルで,1行ごとにコマンドを記載していく
- OOをインストールする
- XXのファイルを作成する
FROM
でベースのイメージを指定COPY/ADD
でビルド時に必要なファイルをイメージにコピーRUN
でコマンドを実行CMD
でコンテナを実行するときに動かすコマンドを指定
この流れが基本.あとは「ユーザを追加」,「環境変数を変更」とかもできる.
イメージのベースを指定する.Dockerが公式に出しているもの推奨.無駄な機能をもつImageをベースにしてしまうと,Imageのサイズが大きくなってしまう.
FROM <Image名>:<タグ名>
ビルド時に必要なファイルをホスト(実行しているPC)からコピーする.基本COPY
推奨.圧縮ファイルをコピーするときにはADD
を使い,圧縮ファイルが自動で展開される.
COPY <ホストのファイル> <コンテナ内のパス>
一番良く使う.コンテナ内でコマンドを実行する.RUN
を複数書くとその分だけImage Layerが作成されるから最小限にする.やりたいこと1つに対して1行が理想.
\
で改行.&&
で複数コマンド.
RUN <コマンド1> \
&& <コマンド2>
Dockerをrunしたときに実行するコマンドを指定.コンテナに入ることが目的でないときに使う.
CMD ['コマンド', '引数1', '引数2']
cd docker-tutorial
docker build .
docker build <ビルドコンテクスト(context)>
でDocker imageを作成する.
ビルドコンテクストは,基本的にカレントディレクトリ.
でOK.
docker run -it <IMAGE ID>
これでコンテナ内に入って開発できる.しかし,開発したファイルはホスト内には保存されない...
コンテナを実行する際に,ホストのディレクトリをコンテナにマウントすることができる.こうすることで,ホストとコンテナでファイルを共有することができる.
docker run -it -v <ホストディレクトリの絶対パス>:<コンテナの絶対パス> <IMAGE ID>
コンテナの絶対パスは,/workspace
などの適当なパスでよい(存在しなくても勝手に作成される).