web-dev-qa-db-ja.com

Docker、ボリュームを読み取り専用としてマウント

私はDockerで作業しており、多くの変更を行う動的なフォルダーをマウントしたいので(実行するたびにdockerを作成する必要はありません。コストがかかりすぎます)、そのフォルダーは読み取り専用にしたいです。ただし、フォルダの所有者を他の人に変更しても機能しますが、chownにはrootアクセスが必要です。これはアプリケーションに公開することは望ましくありません。

-vフラグを使用してマウントすると、指定したユーザー名が与えられ、Dockerイメージ内に非rootユーザーが作成されますが、Dockerを実行したユーザーとして所有者を持つボリューム内のすべてのファイルは、コマンドラインからユーザーを指定するため、読み取り専用のファイルやフォルダーを作成できません。どうすればこれを防ぐことができますか?

mustafa ALL=(docker) NOPASSWD: /usr/bin/dockerも追加したため、ターミナルを介して別のユーザーに変更できますが、ファイルにはユーザーのアクセス許可があります。

90
Mustafa

:ro-vスイッチに追加することにより、ボリュームが読み取り専用であることを指定できます。

docker run -v volume-name:/path/in/container:ro my/image

フォルダーはコンテナー内で読み取り専用になり、ホスト上で読み取り/書き込み可能になることに注意してください。

2018編集

se volume documentation によると、--mountスイッチを使用してボリュームをマウントする別の方法があります。これを読み取り専用で使用する方法は次のとおりです。

$ docker run --mount source=volume-name,destination=/path/in/container,readonly my/image

docker-compose

docker-composeで読み取り専用コンテナを指定する方法の例を次に示します。

version: "3"
services:
  redis:
    image: redis:Alpine
    read_only: true
150
Alp

docker-compose

docker-composeで読み取り専用ボリュームを指定する適切な方法を次に示します。

version: "3"
services:
  my_service:
    image: my:image
    volumes:
      - type: volume
        source: volume-name
        target: /path/in/container
        read_only: true
volumes:
  volume-name:

https://docs.docker.com/compose/compose-file/#long-syntax-

4
Denis Stafichuk