LoginSignup
3
0

More than 1 year has passed since last update.

Docker(-compose) 同一pathにmountをする設定を複数書いたときの挙動

Last updated at Posted at 2021-12-11

はじめに

この記事は MicroAd Advent Calendar 2021 の 12 日目の記事です。

疑問

webサーバーのリプレイスの際にコンテナ化を行っていました。
何個か設置している静的ファイルはイメージ化して、データボリュームとしてwebサーバのコンテナに共有する想定。

色々試してる中で、1つのディレクトリに複数のボリュームのファイルの中身を設置(mount)したいと思う場面がありました。
ただ、その場合の挙動が想像がつかず、「各ボリュームのファイルが競合していたらどうなる?ディレクトリの中にボリュームのファイルをいい感じに設置してくれる?」という疑問になったので確認してみました。

確認

ファイル構成

docker-compose.yml
version: "3"
services:
  ab:
    image: busybox:latest
    volumes:
      - a_volume:/test/
      - b_volume:/test/

a_volumeの中にはa, ab
b_volumeの中にはb, ab
というファイルを作成しています

実行

上記のdocker-compose.ymlを実行
エラーが発生したのでマウントも実行されなかった。
ERROR: Duplicate mount points: [a_volume:/test:rw, b_volume:/test:rw]

 終わりに

疑問を持ったので試したわけですが、エラー一つで終わってしまうと少し悲しいものがあります・・・
とはいえ、他の人もほとんど記事に書いていないエラーを踏めたのでいい勉強にはなりました。

もしかして、Dockerの裏ではoverlayFSが動いてるらしいのでlinuxのmountコマンドと同じ挙動をしている?
と次の疑問を持ってしまったのでmountコマンドの動作を確認してみましたが、どうやら違うようです。
同じmountpointに複数のディレクトリをbindしてもエラーが出ず、変更を加えた後unmount -aを実行すると最後にmountしたディレクトリにだけ変更が適応されていました。何も分からない。 

linuxとdockerと和解するのはまだ時間がかかりそうです。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0