Closed Haramaki0326 closed 2 years ago
dockerfile
FROM はベースになるイメージを指定する命令です。
次のように Dockerfile に FROM 命令を追記すると「これから ubuntu:20.04 のレイヤーの上にさらにレイヤーを乗せていくぞ」という意味になります。
FROM ubuntu:20.04
Dockerfile は FROM で始まります。
RUN は Linux のコマンドを実行してその結果をレイヤーとする命令です。 ubuntu:20.04 イメージに vi をインストールするレイヤーを重ねるには、次のように Dockerfile に RUN 命令を追記します。
FROM ubuntu:20.04 RUN apt update RUN apt install -y vim
RUN により「コンテナを起動するたびに vi をインストールする」という手間を解決できます。
COPY はホストマシンのファイルをイメージに追加する命令です。 ubuntu:20.04 イメージに行番号を表示する設定を記した .vimrc を配置するには、まずホストマシンに .vimrc を作ります。
.vimrc ( Host Machine )
set number
次に、Dockerfile に COPY 命令を追記します。
FROM ubuntu:20.04 RUN apt update RUN apt install -y vim COPY .vimrc /root/.vimrc
COPY により「コンテナを起動するたびに .vimrc を作成する」という手間を解決できます。
イメージ・サイズの問題のため、 ADD でリモート URL 上のパッケージを取得するのは可能な限り避けてください。その代わりに curl や wget を使うべきです。この方法であれば、展開後に不要となったファイルを削除でき、イメージに余分なレイヤを増やしません。例えば、次のような記述は避けるべきです。 NG
ADD http://example.com/big.tar.xz /usr/src/things/ RUN tar -xJf /usr/src/things/big.tar.xz -C /usr/src/things RUN make -C /usr/src/things all
そのかわり、次のように記述します。 OK
RUN mkdir -p /usr/src/things \ && curl -SL http://example.com/big.tar.xz \ | tar -xJC /usr/src/things \ && make -C /usr/src/things all
CMD はイメージのデフォルト命令を設定する命令です。 bash の起動する汎用イメージではなく、特定のフォーマットで現在時刻を表示するイメージにしたいので、次のように Dockerfile に CMD 命令を追記します。
FROM ubuntu:20.04 RUN apt update RUN apt install -y vim COPY .vimrc /root/.vimrc CMD date +"%Y/%m/%d %H:%M:%S ( UTC )"
CMD により「container run で date +"%Y/%m/%d %H:%M:%S ( UTC )" という複雑な引数を毎回指定する」という手間を解決できます。
RUN
CMD
FROM alpine RUN echo "RUN!" CMD echo "CMD!"
$ docker build . -t example_container
(色々な処理) RUN! (色々な処理)
$ docker run example_container
CMD!
dockerfile
について参考
FROM: ベースイメージを指定する
FROM はベースになるイメージを指定する命令です。
次のように Dockerfile に FROM 命令を追記すると「これから ubuntu:20.04 のレイヤーの上にさらにレイヤーを乗せていくぞ」という意味になります。
Dockerfile は FROM で始まります。
RUN: 任意のコマンドを実行する
RUN は Linux のコマンドを実行してその結果をレイヤーとする命令です。 ubuntu:20.04 イメージに vi をインストールするレイヤーを重ねるには、次のように Dockerfile に RUN 命令を追記します。
RUN により「コンテナを起動するたびに vi をインストールする」という手間を解決できます。
COPY: ホストマシンのファイルをイメージに追加する
COPY はホストマシンのファイルをイメージに追加する命令です。 ubuntu:20.04 イメージに行番号を表示する設定を記した .vimrc を配置するには、まずホストマシンに .vimrc を作ります。
.vimrc ( Host Machine )
次に、Dockerfile に COPY 命令を追記します。
COPY により「コンテナを起動するたびに .vimrc を作成する」という手間を解決できます。
COPY と ADD の違い
イメージ・サイズの問題のため、 ADD でリモート URL 上のパッケージを取得するのは可能な限り避けてください。その代わりに curl や wget を使うべきです。この方法であれば、展開後に不要となったファイルを削除でき、イメージに余分なレイヤを増やしません。例えば、次のような記述は避けるべきです。 NG
そのかわり、次のように記述します。 OK
CMD: デフォルト命令を指定する
CMD はイメージのデフォルト命令を設定する命令です。 bash の起動する汎用イメージではなく、特定のフォーマットで現在時刻を表示するイメージにしたいので、次のように Dockerfile に CMD 命令を追記します。
CMD により「container run で date +"%Y/%m/%d %H:%M:%S ( UTC )" という複雑な引数を毎回指定する」という手間を解決できます。
RUN
とCMD
の違い具体例
イメージ作成
$ docker build . -t example_container
コンテナ実行
$ docker run example_container