저는 Docker로 작업하고 있으며 많이 변경되는 동적 폴더를 마운트하고 싶습니다 (따라서 각 실행마다 Docker 이미지를 만들 필요가 없어서 비용이 너무 많이 듭니다).하지만 해당 폴더가 읽기 전용이되기를 원합니다. . 폴더 소유자를 다른 사람으로 변경하면 작동합니다. 그러나 응용 프로그램에 노출하지 않으려 chown
는 root
액세스 권한이 필요 합니다.
-v
플래그를 사용 하여 마운트 하면 내가 제공하는 사용자 이름이 무엇이든 제공하고, 도커 이미지 내에 루트가 아닌 사용자를 만들었지 만, 소유자가 도커를 실행 한 사용자 인 볼륨의 모든 파일은 사용자 I로 변경됩니다. 명령 줄에서 제공하므로 읽기 전용 파일과 폴더를 만들 수 없습니다. 어떻게 방지 할 수 있습니까?
또한을 추가 mustafa ALL=(docker) NOPASSWD: /usr/bin/docker
하여 터미널을 통해 다른 사용자로 변경할 수 있지만 여전히 파일에는 내 사용자에 대한 권한이 있습니다.
답변
스위치 에 추가 :ro
하여 볼륨이 읽기 전용이되도록 지정할 수 있습니다 -v
.
docker run -v volume-name:/path/in/container:ro my/image
그러면 폴더는 컨테이너에서 읽기 전용이고 호스트에서 읽기-쓰기가됩니다.
2018 편집
볼륨 사용 설명서 에 따르면 이제 --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.2" # Use version 3.2 or above
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-3