MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Docker - Dockerfileのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Docker - Dockerfile
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <br><br> == Dockerfileの基礎 == ==== Dockerfileの概要 ==== Dockerfileは、Dockerイメージの設計図のようなものである。 Dockerfileを作成することにより、任意のDockerイメージを作成できる。 <br> DockerfileからDockerイメージを作成するには、Dockerfileが存在するディレクトリで以下のコマンドを実行する。<br> # イメージ名およびタグ名、Dockerファイル名を指定する場合 sudo docker build -t <イメージ名>:<タグ名> -f <Dockerファイル名> . # イメージ名およびタグ名、Dockerファイル名(Dockerファイル名が<u>'''dockerfile'''</u>の場合のみ)は省略できる sudo docker build . <br> Dockerfileで使用するコマンドを、以下に示す。<br> * FROM * RUN * CMD * ENTRYPOINT * COPY * ADD * ENV * WORKDIR <br> ==== Dockerfileの作成手順 ==== * FROM *: ベースとなるイメージを決定するコマンドである。 *: Dockerfileの先頭に記述する。 *: FROMの後には、基本的にOSを記述する。 <br> 例1. FROM centos7:latest 例2. FROM ruby:2.5 <br> * RUN *: FROMで記述したOSに対応するコマンドを実行するコマンドである。 *: RUNごとにLayerが作成される。(Dockerイメージは、レイヤーを積み重ねていくように作成される) *: <br> *: 以下の例では、Dockerイメージには、centos7のレイヤーにtouch /usr/bin/testのレイヤーが追加作成される。<br> *: (/usr/bin/testファイルを作成するDockerイメージを作成している)<br> 例. FROM centos7:latest RUN ["touch", "/usr/bin/test"] :: <br> :: 以下の例では、Dockerイメージには、centos7のレイヤーにcurlとnginxという2つのパッケージをインストールするレイヤーが追加作成される。<br> :: (yum updateはインストールするパッケージを新しいものにするために記述して、yum install -yはパッケージをインストールするために記述している)<br> 例. FROM centos7:latest RUN yum update && yum install -y curl nginx :: <br> :: DockerfileからDockerイメージを1度作成したものはキャッシュされるため、RUNを複数記述することにより、ビルドの時間を短くすることができる。<br> :: ただし、レイヤー数は少ない方が望ましいため、&&や\を使用して、RUNの記述を少なくする。<br> <br> * CMD *: コンテナの実行コマンドを指定するコマンドである。 *: Dockerfileの最後に記述する。 *: <br> *: 以下の例では、DockerfileからDockerイメージを作成、docker runコマンドによりコンテナを作成した後、/bin/bashを実行している。<br> 例. FROM centos7:latest RUN yum update && yum install -y curl nginx CMD ["/bin/bash"] <br> * ENTRYPOINT *: CMDに近い役割を持つコマンドである。 *: CMDは、Dockerコンテナを作成・実行する時(docker runコマンド)、コマンドを上書きできるが、 *: (例. docker run lsコマンドを実行する場合、上記のCMDの例ではbashではなく、lsが実行される) *: ENTRYPOINTを使用する場合、コマンドは上書きできなくなり、CMDはENTRYPOINTのオプションを記述する形となる。 *: <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 RUN yum update && yum install -y curl nginx ENTRYPOINT ["ls"] CMD ["--help"] <br> * 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のコマンドと似ていて、同じくコピーができるインストラクションです。 *: <br> *: ADDとCOPYとの違い *: ADDは圧縮ファイルをコピーした際、コピーと解凍の両方を行います。 *: COPYは単純なコピーのみです。 *: 圧縮ファイルをコピー・解凍する時にはADD、圧縮ファイルが関係ない単純なコピーにはCOPYを使います。 *: <br> *: 以下の例では、Dockerfileをbuildした際、DockerImageにsample.tarを/(ルート直下)にコピー・解凍するLayerを作成されます。 *: コンテナを作成した際に、コンテナのルート直下にsample.tarが解凍されたものが作成されています。 例. FROM ubuntu:latest ADD sample.tar / CMD ["/bin/bash"] <br> * ENV *: 環境変数を設定するインストラクションです。 *: <br> *: 以下の例では、コンテナ作成時にkey1=valueという環境変数が設定されるDockerImageが作成されます。 例. FROM ubuntu:latest ENV key1 value CMD ["/bin/bash"] <br> * WORKDIR *: インストラクションの実行ディレクトリを変更するインストラクションです。 *: <br> *: 以下の例では、sample_folderというディレクトリを作り、sample_folder内でsample_fileを作成するLayerとなります。 *: (WORKDIRを使ったことで、コンテナ内に作成した/sample_folderの中でRUNの実行ができます。) 例. FROM ubuntu:latest RUN mkdir sample_folder WORKDIR /sample_folder RUN touch sample_file <br><br> __FORCETOC__ [[カテゴリ:Web]][[カテゴリ:コンテナ]]
Docker - Dockerfile
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse