私はDockerで作業しており、多くの変更を行う動的なフォルダーをマウントしたいので(実行するたびにdockerを作成する必要はありません。コストがかかりすぎます)、そのフォルダーは読み取り専用にしたいです。ただし、フォルダの所有者を他の人に変更しても機能しますが、chown
にはroot
アクセスが必要です。これはアプリケーションに公開することは望ましくありません。
-v
フラグを使用してマウントすると、指定したユーザー名が与えられ、Dockerイメージ内に非rootユーザーが作成されますが、Dockerを実行したユーザーとして所有者を持つボリューム内のすべてのファイルは、コマンドラインからユーザーを指定するため、読み取り専用のファイルやフォルダーを作成できません。どうすればこれを防ぐことができますか?
mustafa ALL=(docker) NOPASSWD: /usr/bin/docker
も追加したため、ターミナルを介して別のユーザーに変更できますが、ファイルにはユーザーのアクセス許可があります。
:ro
を-v
スイッチに追加することにより、ボリュームが読み取り専用であることを指定できます。
docker run -v volume-name:/path/in/container:ro my/image
フォルダーはコンテナー内で読み取り専用になり、ホスト上で読み取り/書き込み可能になることに注意してください。
se volume documentation によると、--mount
スイッチを使用してボリュームをマウントする別の方法があります。これを読み取り専用で使用する方法は次のとおりです。
$ docker run --mount source=volume-name,destination=/path/in/container,readonly my/image
docker-compose
で読み取り専用コンテナを指定する方法の例を次に示します。
version: "3"
services:
redis:
image: redis:Alpine
read_only: true
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: