説明
Dockerfileを作成するときによく使うDocker instructionについて解説します。
FROMについて・・・
FROM <docker image>
#exaple
FROM ubuntu:latest
Dockerイメージを作成するときに、元にするDockerイメージを指定します。
例では、ubuntuのlatest(最新版)のDockerイメージを元にするように指定しています。
DockerfileはFROMから始めるようにします。
RUNについて・・・
RUN <command>
#example
FROM ubuntu:latest
RUN mkdir sample_folder
RUNの後にを指定することで、そのを実行できます。
例では、Dockerコンテナ作成時にsample_folderという名前のフォルダを作成します。
COPYについて・・・
COPY <src> <dest>
#example
FROM ubuntu:latest
RUN mkdir new_dir
COPY sample.txt /new_dir
ローカルに存在するファイルをDockerコンテナにコピーしたいときに使用します。
例では、ubuntuのosを作成し、"new_dir"という名前のフォルダを作成します。
その後、ローカルにあるsample.txtファイルをDockerコンテナのnew_dirフォルダ内にコピーするためにCOPYを使用しています。
COPYを使用することで、ローカルにあるsample.txtファイルと全くおなじsample.txtファイルがDockerコンテナ内のnew_dirフォルダ内に作成されます。
*COPYはフォルダもコピーできます。
ADDについて
ADD <src> <dest>
#example
FROM ubuntu:latest
ADD sample.tar /
tarの圧縮ファイルをコピーして解凍したいときに使用します。
サイズの大きなファイルをDockerコンテナに追加したいときに使います。
COPYととても似ていますが、ファイルサイズによって使い分けます。
例では、sample.tarファイルをroot直下にコピーして解凍するように指定しています。
CMDについて
CMD ["command","引数", ...]
#example
FROM ubuntu:latest
CMD ["ls", "--help"]
CMDはDockerコンテナ作成時に実行するコマンドを指定することができます。
例では、lsコマンドをhelpオプションで指定しています。
ENVについて
ENV <key> <value>
#example
FROM ubuntu:latest
ENV sample_key value
ENV sample_key1=value1
ENVはDockerコンテナ内で使える環境変数を指定することができます。
例では、sample_keyという環境変数にvalueという値を割り当てています。
WORKDIRについて
WORKDIR <絶対path>
#example
FROM ubuntu:latest
RUN mkdir new_dir
WORKDIR /new_dir
RUN touch new_file
Docker instruction(RUNやCOPYなど)の実行ディレクトリを変更することができる
例では、new_dirというフォルダを作成し、WORKDIRでnew_dirフォルダでRUN touch new_fileが実行されるようにしています。
つまりnew_dirフォルダ内にnew_fileファイルを作成しています。