このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
docker:20:basic [2020/12/19 11:04] y2sunlight |
docker:20:basic [2020/12/19 22:53] y2sunlight [バインドマウントの利用] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== Dcoker 基本的な利用方法 ====== | + | ====== Dcoker |
Docker 20.10.1 | Docker 20.10.1 | ||
行 10: | 行 10: | ||
* [[wsl2: | * [[wsl2: | ||
* Dcoker コンテナの基本的な利用方法 | * Dcoker コンテナの基本的な利用方法 | ||
- | * [[docker: | ||
* [[docker: | * [[docker: | ||
* [[docker: | * [[docker: | ||
行 278: | 行 277: | ||
\\ | \\ | ||
- | ===== helloworld.html | + | ===== バインドマウントの利用 |
- | https://weblabo.oscasierra.net/ | + | バインドマウントとは、ホストマシン上のファイルやディレクトリをコンテナー内にマウントする機能です。そのファイルやディレクトリは、ホストマシン上の絶対パスにより参照できます。バインドマウントは非常に性能の良いものですが、ホストマシンのファイルシステムに依存するものとなります。新たに Docker アプリケーションを開発する場合は、バインドマウントにかわって 名前つき[[https://matsuand.github.io/docs.docker.jp.onthefly/ |
+ | |||
+ | |||
+ | <code bash> | ||
+ | $ cd ~ | ||
+ | $ mkdir htdocs | ||
+ | $ cd htdocs | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | $ vi index.html | ||
+ | </ | ||
+ | |||
+ | <code html> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | $ docker run -it httpd bash | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | # cat / | ||
+ | DocumentRoot "/ | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | # exit | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | $ docker run -d -p 8080:80 -v $(pwd):/ | ||
+ | </ | ||
+ | |||
+ | 全般に --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, | ||
+ | </code> | ||
\\ | \\ | ||