Ground Sunlight

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

ユーザ用ツール

サイト用ツール


docker:20:basic

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
次のリビジョン 両方とも次のリビジョン
docker:20:basic [2020/12/19 11:01]
y2sunlight [Dockerイメージとは]
docker:20:basic [2020/12/19 23:05]
y2sunlight [バインドマウントの利用]
行 1: 行 1:
-====== Dcoker 基本的な利用方法 ======+====== Dcoker コンテナの基本的な利用方法 ======
 Docker 20.10.1 Docker 20.10.1
  
行 10: 行 10:
   * [[wsl2:ubuntu:docker|WSL2/Ubuntu に Docker をインストールする]]   * [[wsl2:ubuntu:docker|WSL2/Ubuntu に Docker をインストールする]]
   * Dcoker コンテナの基本的な利用方法   * Dcoker コンテナの基本的な利用方法
-  * [[docker:20:interop|Docker Linuxの相互運用性]] 
   * [[docker:20:build|Docker コンテナイメージの作成(Bulid)]]   * [[docker:20:build|Docker コンテナイメージの作成(Bulid)]]
   * [[docker:20:hub|DockerHubの利用]]   * [[docker:20:hub|DockerHubの利用]]
行 144: 行 143:
 </code> </code>
  
-上の例は、全ての詳細情報を表示しますが、次の例のように一部を検索することも出来ます。下の例では、イメージの持つコマンドを検索しています。+上の例は、全ての詳細情報を表示しますが、次の例のように情報の一部を検索することも出来ます。下の例では、イメージの持つコマンドを検索しています。
  
 <code bash> <code bash>
行 151: 行 150:
 </code> </code>
  
-この例から、httpd イメージのコンテナを実行すると httpd-foreground が起動されるのが分かります。+この例から、httpd イメージのコンテナを実行すると ''httpd-foreground'' が起動されるのが分かります。
  
 \\ \\
行 278: 行 277:
 \\ \\
  
-===== helloworld.html =====+===== バインドマウントの利用 =====
  
-https://weblabo.oscasierra.net/docker-httpd-usage/+==== バインドマウントとは ==== 
 + 
 +[[https://matsuand.github.io/docs.docker.jp.onthefly/storage/bind-mounts/|バインドマウント]]とは、ホストマシン上のファイルやディレクトリをコンテナー内にマウントする機能です。そのファイルやディレクトリは、ホストマシン上の絶対パスにより参照できます。バインドマウントは非常に性能の良いものですが、ホストマシンのファイルシステムに依存するものとなります。新たに Docker アプリケーションを開発する場合は、バインドマウントにかわって 名前つき[[https://matsuand.github.io/docs.docker.jp.onthefly/storage/volumes/|ボリューム]]の利用を考えるのも良いかもしれません。 
 + 
 +\\ 
 + 
 +==== バインドマウントの例 ==== 
 + 
 +ここではバインドマウントの例として、Apache コンテナの DocumentRoot をホスト側にマウントします。 
 + 
 + 
 +>TODO 
 + 
 +<code bash> 
 +$ cd ~ 
 +$ mkdir htdocs  
 +$ cd htdocs  
 +</code> 
 + 
 +<code bash> 
 +$ vi index.html 
 +</code> 
 + 
 +<code html> 
 +<html> 
 +<body> 
 +  <h1>Hello from Docker!</h1> 
 +</body> 
 +</html> 
 +</code> 
 + 
 +<code bash> 
 +$ docker run -it httpd bash 
 +</code> 
 + 
 +<code bash> 
 +# cat /usr/local/apache2/conf/httpd.conf|grep "^DocumentRoot" 
 +DocumentRoot "/usr/local/apache2/htdocs" 
 +</code> 
 + 
 +<code bash> 
 +# exit 
 +</code> 
 + 
 +<code bash> 
 +$ docker run -d -p 8080:80 -v $(pwd):/usr/local/apache2/htdocs httpd 
 +</code> 
 + 
 +全般に --mount の方がわかりやすいものですが、記述は増えます。 両者の最大の違いは、-v の文法がオプション指定のすべてを 1 項目にとりまとめるものであるのに対して、--mount の文法はそれを 1 つずつ個別に分けている点です。 以下に両フラグにおける文法を比較します。 
 + 
 +はじめて利用する方は --mount を利用してください。 上級ユーザーは -v や --volume を用いることに慣れているかもしれませんが、--mount を利用するように心がけてください。 --mount の方が簡単に利用することができるとの調査もあります。 
 + 
 +-v および --volume フラグは、長らく Docker の一部分として実現してきているため、その動作を今さら変更することはできません。 このことがつまり、-v と --mount の動作の違いの 1 つ になります。 
 + 
 +-v または --volume を使ってファイルやディレクトリをバインドマウントした際に、そのファイルやディレクトリが Docker ホスト上にまだ存在していなかった場合、-v はそのマウントエンドポイントを生成します。 その場合には常にディレクトリとして生成されます。 
 + 
 +--mount を使ってファイルやディレクトリをバインドマウントした際に、そのファイルやディレクトリが Docker ホスト上に存在していなかった場合、Docker はそのファイルやディレクトリを自動的に生成することはしません。 かわりにエラーが出力されます。 
 + 
 +以下の例は、上の -v による例と同一の結果になります。 
 + 
 +<code bash> 
 +$ docker run -d -p 8080:80 --mount type=bind,source=$(pwd),target=/usr/local/apache2/htdocs httpd 
 +</code>
  
 \\ \\
  
docker/20/basic.txt · 最終更新: 2020/12/23 22:18 by y2sunlight