「インストール - Docker CE」の版間の差分

ナビゲーションに移動 検索に移動
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コマンド)する時、コマンドを上書きできるものである。
*: CMDは、Dockerコンテナを作成・実行する時(docker runコマンド)、コマンドを上書きできるが、
*: (例. docker run lsコマンドを実行する場合、上記のCMDの例ではbashではなく、lsが実行される)
*: (例. docker run lsコマンドを実行する場合、上記のCMDの例ではbashではなく、lsが実行される)
*: ENTRYPOINTを使用する場合、コマンドは上書きできなくなり、CMDはENTRYPOINTのオプションを記述する形となる。
*: ENTRYPOINTを使用する場合、コマンドは上書きできなくなり、CMDはENTRYPOINTのオプションを記述する形となる。
<br>
*: <br>
以下の例では、ENTRYPOINTにlsコマンドを記述することにより、docker runコマンド実行時にls以外のコマンドが実行できなくなる。<br>
*: 以下の例では、<code>ENTRYPOINT</code>に<code>ls</code>コマンドを記述することにより、コンテナ実行時(<code>docker run</code>コマンド)に、<code>ls</code>以外のコマンドが実行できなくなる。<br>
CMDでは、--helpオプションが指定されている。<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と言います)の中にあるファイルをDockerImageにコピーするインストラクションです。
*: Dockerfileが存在するディレクトリ(BuildContextという)にあるファイルを、Dockerイメージにコピーするコマンドである。
 
*: DockerfileをビルドしてDockerイメージからコンテナを作成した後、コンテナにNewDirディレクトリを作成して、Test.txtファイルをコピーしている。
Copy BuildContext内のファイル名
*: この時、Dockerイメージのレイヤーが追加・作成される。
 
. FROM ubuntu:latest
)FROM ubuntu:latest
    RUN mkdir /NewDir
  RUN mkdir /new_dir
    COPY Test.txt /NewDir
  COPY test /new_dir
    CMD ["/bin/bash"]
  CMD ["/bin/bash"]
<br>
=> Dockerfileをbuildした際、DockerImageに/new_dirというディレクトリを作成し、/new_dirにtestというファイルがコピーさせるLayerがutubtuのLayerに追加作成されます。
* ADD
  このDockerImageからコンテナを作成した際には、コンテナ内に/new_dirというディレクトリとtestというファイルが作成されています。
*: 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が解凍されたものが作成されています。
Copy BuildContext内のファイル名
. FROM ubuntu:latest
 
    ADD sample.tar /
)FROM ubuntu:latest
    CMD ["/bin/bash"]
  ADD sample.tar /
<br>
  CMD ["/bin/bash"]
* ENV
=> Dockerfileをbuildした際、DockerImageにsample.tarを/(ルート直下)にコピー・解凍するLayerを作成されます。
*: 環境変数を設定するインストラクションです。
  コンテナを作成した際に、コンテナのルート直下にsample.tarが解凍されたものが作成されています。
*: <br>
ENV
*: 以下の例では、コンテナ作成時にkey1=valueという環境変数が設定されるDockerImageが作成されます。
環境変数を設定するインストラクションです。
. FROM ubuntu:latest
 
    ENV key1 value
ENV 環境変数
    CMD ["/bin/bash"]
 
<br>
)FROM ubuntu:latest
* WORKDIR
  ENV key1 value
*: インストラクションの実行ディレクトリを変更するインストラクションです。
  CMD ["/bin/bash"]
*: <br>
=> コンテナ作成時にkey1=valueという環境変数が設定されるDockerImageが作成されます。
*: 以下の例では、sample_folderというディレクトリを作り、sample_folder内でsample_fileを作成するLayerとなります。
WORKDIR
*: (WORKDIRを使ったことで、コンテナ内に作成した/sample_folderの中でRUNの実行ができます。)
インストラクションの実行ディレクトリを変更するインストラクションです。
. FROM ubuntu:latest
 
    RUN mkdir sample_folder
WORKIDIR ディレクトリ
    WORKDIR /sample_folder
 
    RUN touch sample_file
)FROM ubuntu:latest
  RUN mkdir sample_folder
  WORKDIR /sample_folder
  RUN touch sample_file
=> sample_folderというディレクトリを作り、sample_folder内でsample_fileを作成するLayerとなります。
  (WORKDIRを使ったことで、コンテナ内に作成した/sample_folderの中でRUNの実行ができます。)
<br><br>
<br><br>


案内メニュー