140

私は Docker を使用しており、頻繁に変更される動的フォルダーをマウントしたい (そのため、実行ごとに Docker イメージを作成する必要がなく、コストがかかりすぎる)、そのフォルダーを読み取り専用にしたい. フォルダの所有者を他の人に変更すると機能します。ただし、アプリケーションに公開したくないアクセスchownが必要です。root

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

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

4

2 に答える 2

228

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

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

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

2018 編集

Use volumes 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
于 2013-12-01T22:11:16.957 に答える