13,009
回編集
(→エラー関連) |
|||
332行目: | 332行目: | ||
*: FROMで記述したOSに対応するコマンドを実行するコマンドである。 | *: FROMで記述したOSに対応するコマンドを実行するコマンドである。 | ||
*: RUNごとにLayerが作成される。(Dockerイメージは、レイヤーを積み重ねていくように作成される) | *: RUNごとにLayerが作成される。(Dockerイメージは、レイヤーを積み重ねていくように作成される) | ||
<br> | *: <br> | ||
以下の例では、Dockerイメージには、centos7のレイヤーにtouch /usr/bin/testのレイヤーが追加作成される。<br> | *: 以下の例では、Dockerイメージには、centos7のレイヤーにtouch /usr/bin/testのレイヤーが追加作成される。<br> | ||
(/usr/bin/testファイルを作成するDockerイメージを作成している)<br> | *: (/usr/bin/testファイルを作成するDockerイメージを作成している)<br> | ||
例. FROM centos7:latest | 例. FROM centos7:latest | ||
RUN ["touch", "/usr/bin/test"] | RUN ["touch", "/usr/bin/test"] | ||
<br> | :: <br> | ||
以下の例では、Dockerイメージには、centos7のレイヤーにcurlとnginxという2つのパッケージをインストールするレイヤーが追加作成される。<br> | :: 以下の例では、Dockerイメージには、centos7のレイヤーにcurlとnginxという2つのパッケージをインストールするレイヤーが追加作成される。<br> | ||
(yum updateはインストールするパッケージを新しいものにするために記述して、yum install -yはパッケージをインストールするために記述している)<br> | :: (yum updateはインストールするパッケージを新しいものにするために記述して、yum install -yはパッケージをインストールするために記述している)<br> | ||
例. FROM centos7:latest | 例. FROM centos7:latest | ||
RUN yum update && yum install -y curl nginx | RUN yum update && yum install -y curl nginx | ||
<br> | :: <br> | ||
DockerfileからDockerイメージを1度作成したものはキャッシュされるため、RUNを複数記述することにより、ビルドの時間を短くすることができる。<br> | :: DockerfileからDockerイメージを1度作成したものはキャッシュされるため、RUNを複数記述することにより、ビルドの時間を短くすることができる。<br> | ||
ただし、レイヤー数は少ない方が望ましいため、&&や\を使用して、RUNの記述を少なくする。<br> | :: ただし、レイヤー数は少ない方が望ましいため、&&や\を使用して、RUNの記述を少なくする。<br> | ||
<br> | <br> | ||
* CMD | * CMD | ||
*: コンテナの実行コマンドを指定するコマンドである。 | *: コンテナの実行コマンドを指定するコマンドである。 | ||
*: Dockerfileの最後に記述する。 | *: Dockerfileの最後に記述する。 | ||
<br> | *: <br> | ||
以下の例では、DockerfileからDockerイメージを作成、docker runコマンドによりコンテナを作成した後、/bin/bashを実行している。<br> | *: 以下の例では、DockerfileからDockerイメージを作成、docker runコマンドによりコンテナを作成した後、/bin/bashを実行している。<br> | ||
例. FROM centos7:latest | 例. FROM centos7:latest | ||
RUN yum update && yum install -y curl nginx | RUN yum update && yum install -y curl nginx | ||
357行目: | 357行目: | ||
* ENTRYPOINT | * ENTRYPOINT | ||
*: CMDに近い役割を持つコマンドである。 | *: CMDに近い役割を持つコマンドである。 | ||
*: | *: CMDは、Dockerコンテナを作成・実行する時(docker runコマンド)、コマンドを上書きできるが、 | ||
*: (例. docker run lsコマンドを実行する場合、上記のCMDの例ではbashではなく、lsが実行される) | *: (例. docker run lsコマンドを実行する場合、上記のCMDの例ではbashではなく、lsが実行される) | ||
*: ENTRYPOINTを使用する場合、コマンドは上書きできなくなり、CMDはENTRYPOINTのオプションを記述する形となる。 | *: ENTRYPOINTを使用する場合、コマンドは上書きできなくなり、CMDはENTRYPOINTのオプションを記述する形となる。 | ||
<br> | *: <br> | ||
*: 以下の例では、<code>ENTRYPOINT</code>に<code>ls</code>コマンドを記述することにより、コンテナ実行時(<code>docker run</code>コマンド)に、<code>ls</code>以外のコマンドが実行できなくなる。<br> | |||
*: なお、<code>CMD</code>では、<code>--help</code>オプションを指定している。<br> | |||
例. FROM centos7:latest | 例. FROM centos7:latest | ||
RUN yum update && yum install -y curl nginx | RUN yum update && yum install -y curl nginx | ||
368行目: | 368行目: | ||
CMD ["--help"] | CMD ["--help"] | ||
<br> | <br> | ||
COPY | * COPY | ||
*: Dockerfileが存在するディレクトリ(BuildContextという)にあるファイルを、Dockerイメージにコピーするコマンドである。 | |||
*: DockerfileをビルドしてDockerイメージからコンテナを作成した後、コンテナにNewDirディレクトリを作成して、Test.txtファイルをコピーしている。 | |||
*: この時、Dockerイメージのレイヤーが追加・作成される。 | |||
例. FROM ubuntu:latest | |||
例 | RUN mkdir /NewDir | ||
COPY Test.txt /NewDir | |||
CMD ["/bin/bash"] | |||
<br> | |||
* ADD | |||
*: COPYのコマンドと似ていて、同じくコピーができるインストラクションです。 | |||
ADD | *: <br> | ||
COPYのコマンドと似ていて、同じくコピーができるインストラクションです。 | *: ADDとCOPYとの違い | ||
*: ADDは圧縮ファイルをコピーした際、コピーと解凍の両方を行います。 | |||
ADDとCOPYとの違い | *: COPYは単純なコピーのみです。 | ||
ADDは圧縮ファイルをコピーした際、コピーと解凍の両方を行います。 | *: 圧縮ファイルをコピー・解凍する時にはADD、圧縮ファイルが関係ない単純なコピーにはCOPYを使います。 | ||
COPYは単純なコピーのみです。 | *: <br> | ||
圧縮ファイルをコピー・解凍する時にはADD、圧縮ファイルが関係ない単純なコピーにはCOPYを使います。 | *: 以下の例では、Dockerfileをbuildした際、DockerImageにsample.tarを/(ルート直下)にコピー・解凍するLayerを作成されます。 | ||
*: コンテナを作成した際に、コンテナのルート直下にsample.tarが解凍されたものが作成されています。 | |||
例. FROM ubuntu:latest | |||
ADD sample.tar / | |||
例 | CMD ["/bin/bash"] | ||
<br> | |||
* ENV | |||
*: 環境変数を設定するインストラクションです。 | |||
*: <br> | |||
ENV | *: 以下の例では、コンテナ作成時にkey1=valueという環境変数が設定されるDockerImageが作成されます。 | ||
環境変数を設定するインストラクションです。 | 例. FROM ubuntu:latest | ||
ENV key1 value | |||
CMD ["/bin/bash"] | |||
<br> | |||
例 | * WORKDIR | ||
*: インストラクションの実行ディレクトリを変更するインストラクションです。 | |||
*: <br> | |||
*: 以下の例では、sample_folderというディレクトリを作り、sample_folder内でsample_fileを作成するLayerとなります。 | |||
WORKDIR | *: (WORKDIRを使ったことで、コンテナ内に作成した/sample_folderの中でRUNの実行ができます。) | ||
インストラクションの実行ディレクトリを変更するインストラクションです。 | 例. FROM ubuntu:latest | ||
RUN mkdir sample_folder | |||
WORKDIR /sample_folder | |||
RUN touch sample_file | |||
例 | |||
<br><br> | <br><br> | ||