shimgo
8/25/2017 - 9:35 AM

データボリュームを複数のコンテナにマウントしたとき、データボリュームに書き込みができなくなる

データボリュームを複数のコンテナにマウントしたとき、データボリュームに書き込みができなくなる

以下のように同じデータボリュームlogを複数のコンテナにマウントしたら最初にマウントした方が書き込みできなくなった。

- name: Webコンテナの起動
  docker_container:
    user: nginx
    name: web
    image: web
    volumes:
      - log:/var/log/nginx
- name: アプリケーションコンテナの起動
  docker_container:
    user: rails
    name: app
    image: app
    volumes:
      - log:/var/www/one-progress/log

これはSELinuxによるもので、SELinuxが起動している状態でデータボリュームを複数コンテナ間で共有する場合はボリュームマウント時にzオプションを追加する。このオプションはこのデータボリュームは共有するものであることを示す。逆にプライベートなものであると示したい場合はZオプションを使う。
参考:http://docs.docker.jp/engine/userguide/dockervolumes.html

- name: Webコンテナの起動
  docker_container:
    略
    volumes:
      - log:/var/log/nginx:z
- name: アプリケーションコンテナの起動
  docker_container:
    略
    volumes:
      - log:/var/www/one-progress/log:z