質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

1回答

6280閲覧

docker-composeでコロンが無いvolumesの指定は意味がない?

Fushihara

総合スコア52

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2017/09/21 10:12

以下のようなdocker-compose.ymlファイルのdocker-composeを作ってみました。

version: '2' volumes: vl: driver: 'local' services: nodejs_xxx: build: . ports: - "20006:20006" volumes: - /usr/src/sample-node/node_modules - .:/usr/src/sample-node - /usr/src/volume-a/ - vl:/usr/src/volume-b/ depends_on: - pgsql_aaa restart: always

このコンテナを起動して、その中で/usr/src/volume-a/ /usr/src/volume-b/ /tmp/ それぞれの中にtest.txtファイルを作りました。/tmp/test.txtはvolumesで未指定です。

そして、以下のコマンドを実行しそれぞれのtest.txtファイルが消えているかの確認を行いました。

docker-compose stop -> docker-compose up -d ではどのファイルも削除されませんでした。
docker-compose down -> docker-compose up -d ではvolume-aとtmpの中のファイルが削除されました。

volume-bの中のファイルはデータボリュームに保存されているので、コンテナをdown(削除)してもデータが残るのは理解出来ます。ですが、volume-aに保存したファイルと、/tmp/の中に保存されたファイルの違いがわかりません。

どちらもstopでは消えない、downでは消える。ymlファイルのvolumesに(コロンがない方式で)指定すると、指定してないファイルと比べてどのような違いがあるのでしょうか?

それとも、コロンがない方式はdocker コマンドを直接叩く時には意味があるが、docker-composeに持ってきた時に無意味になってしまったのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

- /usr/src/volume-a/ - vl:/usr/src/volume-b/

コロンのないボリュームは、名前がないボリュームです。用途は、その docker-compose.yml を実行したプロジェクト内でしか使わない想定です。
たとえば、1つのホスト上で、同じ yaml ファイルを使って複数のものを起動しても、お互いのボリュームには何ら影響ありません。

一方、コロン有りのボリュームは名前付きのボリューム(named volume)と呼ばれ、複数のプロジェクト間やコンテナでデータを共有できます。ためしに同じ yaml ファイルで複数起動すると、「v1」として指定したディレクトリは、どのプロジェクトから見ても内容を共有しています。

docker-compose down -> docker-compose up -d ではvolume-aとtmpの中のファイルが削除されました。

「tmp」は消えていますが(コンテナとして起動したあとのファイルシステム上の記録だったため)、「volume-a」として作成した実体は、ホスト上のボリュームのどこかに残り続けています。docker-compose down -v オプションを付けない限り、ボリュームは自動的に削除されません。起動前、起動後で、docker volume ls コマンドを実行すると挙動がわかりやすいと思います。

では、docker-compose up -dを実行すると、どうして消えているかのように「見える」かですが、それは起動時に新しい名前のないボリュームが自動的に作成されているからです。

投稿2019/04/27 12:46

zembutsu

総合スコア1584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問