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

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

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

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

Docker

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

Q&A

1回答

5109閲覧

Duplicate mount pointsのエラーが出て、dockerコマンドが使えない

napoano365

総合スコア28

docker-compose

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

Docker

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

0グッド

0クリップ

投稿2019/08/02 02:24

Dockerの利用中にエラーが発生し、開発作業が進められなくなってしまったため解決方法について質問させてください。

■環境
macOS Mojave version 10.14.6
$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin18]
$ rails -v
Rails 5.2.1
$ docker -v
Docker version 19.03.1, build 74b1e89
$ docker-compose -v
docker-compose version 1.24.1, build 4667896b
Docker desktop
Version 2.1.0.0(36874)

■発生しているエラー
PC起動後に、DockerDesktopの更新プログラムがあるとのポップアップが出たため案内に従い
アップデートを行ったところターミナルからコンテナを起動しようとした際に以下のエラーが出るようになってしまいました。

$ docker-compose up ERROR: Duplicate mount points: [/ec/vendor/bundle, vendor_bundle_2_5_1:/ec/vendor/bundle:rw]

■これまでに行ったこと
ネット検索し、docker-compose down && docker-compose upで解決するとの記事もあり実施しましたが同じエラーがでて処理が通りませんでした。

$ docker-compose down && docker-compose up ERROR: Duplicate mount points: [/ec/vendor/bundle, vendor_bundle_2_5_1:/ec/vendor/bundle:rw]

docker-compose.ymlの中身を確認するとvolumesという記述のまとまりの中に
エラーで指摘されている2つの要素があるため、volumesとは何かについて調べ、コンテナ外にデータを永続的に保管するための場所をvolumeということまで理解しています。よってそのvolumeのマウント(読み込み)がうまくいっていないものと考えていますが、どこをどう調べて何を解消すればいいのわからずに手が止まっています。

services:  … volumes:  … - /ec/vendor/bundle - vendor_bundle_2_5_1:/ec/vendor/bundle

また、全てのイメージ、ネットワーク、ボリュームを初期化を実行しましたが
依然として同様のエラーが出て、docker-compose buildも通らない状態です。

$ docker system prune --volumes WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all volumes not used by at least one container - all dangling images - all dangling build cache Are you sure you want to continue? [y/N] y Deleted Containers: cc7fb28fd17267ac2d89e2bfac1ef4a6b09ce135f8798e126169fc28488b89bb e91794e97f738138367ae25005010b7d8303bcbd214e22632515ee34fcfcab95 e85d96945f192ba852bd00d06037443c95d4fbe7f5de5113e86dce3e62709708 c47e8c0246189e38d7200fd1e384a5245a3d6dfee9fd9341193c65631bb76e84 56758117c0a3fd8be9b3bb8f7407f30334e1d71bc99baf330be7b6fb96ebb06e 7380a0e5e107dd96a373af07a34de761fa2969b18e243f0f7a12ba410fa8742a Deleted Networks: ecsite_default ec_default Deleted Volumes: a9ea5d5af446930c05d00b8cc532dead647bdb7dffdf34752e52bbf79cdbb02e ec_redis-data ecsite_mysql_8_0-data ecsite_node_modules ecsite_redis-data 11c8df6109e2cf02ee5c0ad5824cebcc5f978fdcb37d23a5eef8e2df975ed913 7ddc344360cdb881029d634a0fdb0ba3893847ad5be0b0cd90d31f8d1316c439 779b8ba0e6c913923d4db5e69f8a8d505ce2dd63874716a7c767a39b635dfae5 80db1b1981cb9399122ee21b96e9f695de7cec5ba12986065247d7889f584c58 ec_vendor_bundle_2_5_1 1cc80c181dcf71ff1abd735fef25197a8c0a2997951173ee4d19b3cff103312b 36df039130d643f6d71fcba3a9d1ab8a92826bbc30b9e24cca51624d8c397dd6 ecsite_public_spree_2_7 ecsite_vendor_bundle_2_5_1 6c8f794e86e025abd1b583e2a5c652a9cc7f6ef1c5cbd1f2bd87c684c9ac71bc ec_mysql_8_0-data 61034f2d236ff1da508434e0e768d7aba4f07f897a1dd2808831b170142abba1 b09e8c8d21812faafbeb934c8f708eccf9459a29c87c46f3aef0969214e786ac ec_node_modules ec_public_spree_2_7 ec_vendor_assets_2_7 ecsite_vendor_assets_2_7 08617336a067e9948da15ce324e4ec780cad3796f4c964fb03379bce65329f4d 53c8374fb8eda6bb339d332e48faf8219a97b1e4101f26490f18e4a2eb2d76b9 Total reclaimed space: 1.125GB $ docker-compose build ERROR: Duplicate mount points: [/ec/vendor/bundle, vendor_bundle_2_5_1:/ec/vendor/bundle:rw]

このエラーを解消するためには、どういう知識を身に着けて、どう調査をして、対処していけばよいでしょうか?
ご助言のほど、宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

docker-compose.ymlの記述ミスが原因です.
単に修正するだけなら単にdocker-compose.ymlで指定した - /ec/vendor/bundle を削除すれば解決できるはずです.

docker-composeの解説

services:  … volumes:  … - /ec/vendor/bundle - vendor_bundle_2_5_1:/ec/vendor/bundle

ここで2つのボリュームを指定していますが,
- /ec/vendor/bundle はコンテナ内の /ec/vendor/bundle匿名ボリューム(anonymous volume) として永続化する,
- vendor_bundle_2_5_1:/ec/vendor/bundle はコンテナ内の/ec/vendor/bundlevendor_bundle_2_5_1という名前の 名前付きボリューム(named volume) として永続化する,
ということを意図しています.

ここで匿名ボリュームとは作成した永続化領域にわかりやすい名前を付けないもの(dockerが勝手にランダムな文字列で名前付けする),名前付きボリュームとはユーザが永続化領域にわかりやすい名前を付けて管理しやすくするものです.
対象ホストに作成済のボリューム一覧は docker volume lsコマンドで確認できます.

sh

1$ docker volume ls 2DRIVER VOLUME NAME 3local 537eaa7625d41b3e7bc10035452ea904d1dd749ebb2ed73d8aed216f0cb68a4b 4local sample_log

この例では上(VOLUME NAME: 537eaa)が匿名ボリューム,下(VOLUME NAME: sample_log)が名前付きボリュームです.
docker-composeで作成した名前付きボリュームは <プロジェクト名>_<ユーザ指定の名前>という形で作成されます.

napoano365 さんの例では docker-compose.yml内のトップレベルに以下のような名前付きボリュームを定義しているはずです.

services: ... volumes: vendor_bundle_2_5_1:

プロジェクト名はデフォルトでdocker-compose.ymlが配置してあるディレクトリ名なので,
例えばディレクトリ名がrailsであれば
docker volume lsコマンドで rails_vendor_bundle_2_5_1という名前が確認できると思います.

エラーの原因

解説の通り,2つのvolumeの指定は両方ともコンテナ内の /ec/vendor/bundleをマウントしようとしてます.
同一領域を複数マウントすることはできない(かつ意味がない)のでDuplicate mount pointsというエラーとして返しています.
どちらかのボリューム定義を削除することで重複定義が解決できます.

投稿2019/08/03 01:53

thaim

総合スコア175

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

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

sakana-suki

2019/09/18 05:17

似たようなエラーで詰まっていましたが、とても丁寧な解説に助けられました。 横槍ですが、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問