Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


docker:20:build

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
docker:20:build [2020/12/23 11:19]
y2sunlight [Dockerイメージの作成]
docker:20:build [2020/12/26 21:47] (現在)
y2sunlight [Dockerfile]
行 11: 行 11:
   * [[docker:20:basic|Dcoker コンテナの基本的な利用方法(Run)]]   * [[docker:20:basic|Dcoker コンテナの基本的な利用方法(Run)]]
   * Docker コンテナイメージの作成(Bulid)   * Docker コンテナイメージの作成(Bulid)
-  * [[docker:20:hub|DockerHubの利用(Ship)]] 
  
 リンク リンク
行 157: 行 156:
 ==== htmlとphpファイルの設置 ==== ==== htmlとphpファイルの設置 ====
  
-以下のように、hello.tml と info.php を新しく作成します:+以下のように、hello.html と info.php を新しく作成します:
  
-<code html hello.tml>+<code html hello.html>
 <html> <html>
 <body> <body>
行 445: 行 444:
  
 <code bash> <code bash>
-$ d$ docker run --name myphp74 -d -p 8080:80 myphp74:2020-12-22+$ docker run --name myphp74 -d -p 8080:80 myphp74:2020-12-22
 23d84d5ce0837cdbf171695c417fe387793aadbdf497b341d24d398ef9ae809a 23d84d5ce0837cdbf171695c417fe387793aadbdf497b341d24d398ef9ae809a
 </code> </code>
行 459: 行 458:
 これまでの項では、手動でDockerコンテナを作成しイメージとして保存しました。これら一連のDockerイメージの作成過程を自動化してくれるのが「Dockerfile」です。Dockerfile とは、Docker イメージを作成する時のコマンドを1つのファイルにまとめたもので、Docker コンテナの構成情報を記述するためのファイルです。 これまでの項では、手動でDockerコンテナを作成しイメージとして保存しました。これら一連のDockerイメージの作成過程を自動化してくれるのが「Dockerfile」です。Dockerfile とは、Docker イメージを作成する時のコマンドを1つのファイルにまとめたもので、Docker コンテナの構成情報を記述するためのファイルです。
  
-これまでの項で作成してものと全く同じDockerイメージを本項では Dockerfile を使って作成します。+これまでの項で作成してものと全く同じDockerイメージを本項では Dockerfile を使って作成します。以下の作業は全てホストで行います。
  
 \\ \\
行 505: 行 504:
 # gd # gd
 # #
-RUN apt update +RUN apt-get update 
-RUN apt apt install -y zlib1g-dev libpng-dev libjpeg62-turbo-dev \+RUN apt-get install -y zlib1g-dev libpng-dev libjpeg62-turbo-dev \
   && docker-php-ext-configure gd --with-jpeg \   && docker-php-ext-configure gd --with-jpeg \
   && docker-php-ext-install -j$(nproc) gd   && docker-php-ext-install -j$(nproc) gd
行 512: 行 511:
 # memcached # memcached
 # #
-RUN apt install -y libmemcached-dev \+RUN apt-get install -y libmemcached-dev \
   && pecl install memcached \   && pecl install memcached \
   && docker-php-ext-enable memcached   && docker-php-ext-enable memcached
 </code> </code>
  
-  * ''FROM'' --- TODO +  * ''FROM'' --- イメージ構築の初期化を実行し、ベースイメージを設定します。Dockerfileは必ず''FROM''命令から始まります。  
-  * ''COPY'' --- TODO +  * ''COPY'' --- ホスト内のファイルやディレクトリをコンテナ内のファイルシステムに追加します。 
-  * ''RUN'' --- TODO+  * ''RUN'' --- 現在の最新イメージにおいて、コンテナ内でコマンドを実行します。コマンドが成功するとイメージは確定され、Dockerfile の次のステップで利用されます。 
 + 
 +> Dockerfileで ''apt'' を使うと次の警告が出るので ''apt-get'' を使いました。 
 +>>WARNING: apt does not have a stable CLI interface. Use with caution in scripts. 
 + 
 +> また、''apt-get'' を使うと今度は次の警告がでます。buildの動作的にはは問題なさそうですが調査中です。 
 +>>debconf: delaying package configuration, since apt-utils is not installed
  
 Dockerfile の詳細については、以下を参照して下さい: Dockerfile の詳細については、以下を参照して下さい:
行 537: 行 542:
   * ''-t'' --- '名前:タグ' 形式でイメージの名前とタグ(オプション)を指定します。   * ''-t'' --- '名前:タグ' 形式でイメージの名前とタグ(オプション)を指定します。
   * コマンドの最後の引数( ''.'' )はソースコードのパス(ここではカレントディレクトリ)を指定します。   * コマンドの最後の引数( ''.'' )はソースコードのパス(ここではカレントディレクトリ)を指定します。
 +
 +[[https://docs.docker.jp/engine/reference/commandline/images.html|docker images]] コマンドでDockerイメージの一覧を表示します:
 +
 +<code bash>
 +$ docker images
 +REPOSITORY    TAG          IMAGE ID       CREATED              SIZE
 +REPOSITORY    TAG          IMAGE ID       CREATED          SIZE
 +myphp74       2020-12-23   d849c91871fd   15 minutes ago   440MB
 +myphp74       2020-12-22   62df1ffadc6f   13 hours ago     439MB
 +...
 +</code>
 +
 +[[https://docs.docker.jp/engine/reference/commandline/history.html|docker history]] コマンドでイメージ内のレイヤーを表示します:
 +
 +<code bash>
 +$ docker history myphp74:2020-12-23
 +IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
 +d849c91871fd   17 minutes ago   /bin/sh -c apt-get install -y libmemcached-d…   4.19MB
 +30fc1a25dfb9   18 minutes ago   /bin/sh -c apt-get install -y zlib1g-dev lib…   4.23MB
 +17d39386f699   18 minutes ago   /bin/sh -c apt-get update                       17.5MB
 +778c23eca0cd   24 minutes ago   /bin/sh -c #(nop) COPY file:c9b0bd401ba1924c…   17B
 +5645b898b5af   24 minutes ago   /bin/sh -c #(nop) COPY file:398875164d45e85a…   58B
 +9fc74c528658   24 minutes ago   /bin/sh -c #(nop) COPY file:f9dcd09c7428c2df…   72.6kB
 +e0878c88c727   24 minutes ago   /bin/sh -c #(nop) COPY file:0c73f4a9191f660f…   1.54kB
 +89628e4477f9   24 minutes ago   /bin/sh -c #(nop) COPY file:7a59a6bc15702a48…   7.22kB
 +fd505f1f4cd8   11 days ago      /bin/sh -c #(nop)  CMD ["apache2-foreground"  0B
 +<missing>      11 days ago      /bin/sh -c #(nop)  EXPOSE 80                    0B
 +<missing>      11 days ago      /bin/sh -c #(nop) WORKDIR /var/www/html         0B
 +...
 +<missing>      12 days ago      /bin/sh -c #(nop) ADD file:3a7bff4e139bcacc5…   69.2MB
 +</code>
 +
 +Dockerfileに記述した降順にレイヤー作成されているのが分かります。''CMD ["apache2-foreground"]'' 以下のレイヤーはベースイメージのものです。
  
 \\ \\
 +
 +==== Dockerイメージの起動  ====
 +
 +Dockerfileから構築したDockerイメージを起動し、Winodws側のプラウザから ''http://localhost:8080'' にアクセスして確認して下さい。
 +
 +<code bash>
 +$ docker run --name myphp74a -d -p 8080:80 myphp74:2020-12-23
 +7980e3ed36186de445238eae2193b3f505fed04ac03a50c5ac3adb6cc7a405dd
 +</code>
 +
 +このように Dockerfile を使えば、Dockerイメージを素早く作れるだけでなく、GitHubなどのリポジトリによってチーム内で共有することもできます。
 +
 +\\
 +
  
 ===== イメージのアップロード ===== ===== イメージのアップロード =====
docker/20/build.1608689958.txt.gz · 最終更新: 2020/12/23 11:19 by y2sunlight