Ground Sunlight

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

ユーザ用ツール

サイト用ツール


docker:20:basic

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
docker:20:basic [2020/12/19 18:02]
y2sunlight [ボリュームの利用]
docker:20:basic [2020/12/23 22:18] (現在)
y2sunlight [Dcoker コンテナの基本的な利用方法(Run)]
行 1: 行 1:
-====== Dcoker コンテナの基本的な利用方法 ======+====== Dcoker コンテナの基本的な利用方法(Run) ======
 Docker 20.10.1 Docker 20.10.1
  
行 9: 行 9:
  
   * [[wsl2:ubuntu:docker|WSL2/Ubuntu に Docker をインストールする]]   * [[wsl2:ubuntu:docker|WSL2/Ubuntu に Docker をインストールする]]
-  * Dcoker コンテナの基本的な利用方法+  * Dcoker コンテナの基本的な利用方法(Run)
   * [[docker:20:build|Docker コンテナイメージの作成(Bulid)]]   * [[docker:20:build|Docker コンテナイメージの作成(Bulid)]]
-  * [[docker:20:hub|DockerHubの利用]] 
  
 リンク リンク
行 279: 行 278:
 ===== バインドマウントの利用 ===== ===== バインドマウントの利用 =====
  
 +==== バインドマウントとは ====
  
-バインドマウントは Docker の初期のころから存在しています。 ただし ボリューム に比べるとバインドマウントの機能は限定されます。 バインドマウントを利用すると「ホストマシン上のファイルやディレクトリコンテナー内にマウントされます。 そのファイルやディレクトリは、ホストマシン上の絶対パスにより参照できます。 これと違ってボリュームを利用ると、ホストマシン新たなディレクトリが生成され、そこが Docker 保存ディレクトリとなります。 そして Docker はそのディレクトリ内容管理して+[[https://matsuand.github.io/docs.docker.jp.onthefly/storage/bind-mounts/|バインドマウント]]とは、ホストマシン上のファイルやディレクトリコンテナー内にマウントする機能です。そのファイルやディレクトリは、ホストマシン上の絶対パスにより参照できます。バインドマウント非常に性能の良いもので、ホストマシンのファイルシステム依存するものとなります。新たに Docker アプリケーションを開発する場合、バインドマウンにかわって 名前つき[[https://matsuand.github.io/docs.docker.jp.onthefly/storage/volumes/|ボューム]]利用考えるのも良かもしれせん
  
-ファイルディレクトリDocker ホストに存在ている必要がなくなります。 存在てなかったとして必要とされるときには生されます。 バイドマウトは非常性能の良いものですがしホストマのファイルシスムに依存するものとなり、利用可能な特定のディレクトリ構造に従ったものになります。 今から新たに Docker アプリケーショを開発しようとする場合は、これにかわって 名前つきボリューム の利用を考えてみてください。 バインドマウントを管理るために Docker CLI コマンドを直接利用するはできなくなります。+\\ 
 + 
 +==== バインドマウント例 ==== 
 + 
 +ンドマウント(bind mounts)の例として、Apache コンテナのドキュメントートをホスト側にマウントします。 
 + 
 +まず、準備としてホスト側で ホームディレクトリ下に新しいディレクトリ(''htdocs'')を作成しそこをマウンにします。 
 + 
 +<code bash> 
 +$ cd ~ 
 +$ mkdir htdocs 
 +$ cd htdocs 
 +</code> 
 + 
 +いディレクトリ(''~/htdocs'')に移動して、''index.html'' を作ます: 
 + 
 +<code html index.html> 
 +<html> 
 +<body> 
 +  <h1>Hello from Docker!</h1> 
 +</body> 
 +</html> 
 +</code> 
 + 
 +今度は、apache の ''DocumentRoot'' を探すために、httpd コテナを開始して bash を実行します: 
 + 
 +<code bash> 
 +$ docker run -it httpd bash 
 +</code> 
 + 
 +  * ''-i'' --- コテナの STDIN アタッチ 
 +  * ''-t'' --- 疑似ターミナル割り当て 
 + 
 +コンテナ内で ''httpd.conf'' から ''DocumentRoot'' の設定を検索しま: 
 + 
 +<code sh> 
 +# cat /usr/local/apache2/conf/httpd.conf|grep "^DocumentRoot" 
 +DocumentRoot "/usr/local/apache2/htdocs" 
 +</code> 
 + 
 +コンテナ内での操作終了しら ''exit'' で終了ます。 
 + 
 +=== Apacheコンテナの起動 === 
 + 
 +Apache のドキュメントルート( ''/usr/local/apache2/htdocs'' )をホスト側の( ''~/htdocs'' )にウントしてコンテナを開始しま(ディレクトリは ''~/htdocs'' で作業しているものをします): 
 + 
 +<code bash> 
 +$ docker run -d -p 8080:80 -v $(pwd):/usr/local/apache2/htdocs httpd 
 +</code> 
 + 
 +  * ''-d'' --- コンテナをバックグラウンドで実行 
 +  * ''-p'' --- ポートフォワードの指(左がホスト側:8080、右がコンテナ側:80) 
 +  * ''-v'' --- ホスト側現在のカレントディレクトリ(''$(pwd)'')をコンテナの ''/usr/local/apache2/htdocs'' バイドマウント 
 + 
 +この例では、''-v'' フラグを使ってバインドマウントを行っていま。この習慣は長らく Docker で使用されて来ましたが、最近は ''--mount''利用が推奨されていま。以下の例は、上の ''-v''フラグによ同一の結果になります。 
 + 
 +<code bash> 
 +$ docker run -d -p 8080:80 --mount type=bind,source=$(pwd),target=/usr/local/apache2/htdocs httpd 
 +</code>
  
-https://weblabo.oscasierra.net/docker-httpd-usage/+両者の違いは次の通りです。 
 +  * ''-v''フラグを使ってファイルやディレクトリをバインドマウントした際に、それがホスト上に存在していなかった場合、そのマウントエンドポイントが常にディレクトリとして生成されます。 
 +  * ''--mount'' を使ってバインドマウントした時は、それが存在していなかった場合、ディレクトリの自動生成は発生せず、エラーが出力されます。
  
 \\ \\
  
docker/20/basic.1608368562.txt.gz · 最終更新: 2020/12/19 18:02 by y2sunlight