[readonly] Docker, 읽기 전용으로 볼륨 마운트

저는 Docker로 작업하고 있으며 많이 변경되는 동적 폴더를 마운트하고 싶습니다 (따라서 각 실행마다 Docker 이미지를 만들 필요가 없어서 비용이 너무 많이 듭니다).하지만 해당 폴더가 읽기 전용이되기를 원합니다. . 폴더 소유자를 다른 사람으로 변경하면 작동합니다. 그러나 응용 프로그램에 노출하지 않으려 chownroot액세스 권한이 필요 합니다.

-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


답변