programing

도커 컨테이너에 여러 볼륨을 탑재하시겠습니까?

powerit 2023. 10. 30. 21:22
반응형

도커 컨테이너에 여러 볼륨을 탑재하시겠습니까?

다음과 같은 것을 사용하여 호스트에 있는 디렉토리를 컨테이너에 마운트할 수 있다는 것을 알고 있습니다.

docker run -t -i -v '/on/my/host:/on/the/container' ubuntu /bin/bash

두 개 이상의 호스트-컨테이너 쌍을 만드는 방법(예: 쉼표로 구분된 목록) 또는 배열로 전달하는 방법이 있습니까?

여러 번 통과-v논쟁들.

예를 들어 다음과 같습니다.

docker -v /on/my/host/1:/on/the/container/1 \
       -v /on/my/host/2:/on/the/container/2 \
       ...

이제 Docker는 다음을 사용하는 방향으로 마이그레이션할 것을 권장합니다.--mount.

여러 볼륨 마운트에 대해서도 현재 도커 설명서에서 자세히 설명하고 있습니다.

보낸이: https://docs.docker.com/storage/bind-mounts/

$ docker run -d \
  -it \
  --name devtest \
  --mount type=bind,source="$(pwd)"/target,target=/app \
  --mount type=bind,source="$(pwd)"/target,target=/app2,readonly,bind-propagation=rslave \
  nginx:latest

기존의 기존 답변은 여전히 유효하며, 현재 가장 잘 알려진 방법에 맞춰 답변을 유지하려고 할 뿐입니다.

사용가능-v옵션에서 여러 번docker run컨테이너에 여러 디렉토리를 마운트하는 명령:

docker run -t -i \
  -v '/on/my/host/test1:/on/the/container/test1' \
  -v '/on/my/host/test2:/on/the/container/test2' \
  ubuntu /bin/bash

볼륨에 읽기 전용 또는 읽기 및 쓰기 전용을 가질 수 있습니다.

docker -v /on/my/host/1:/on/the/container/1:ro \

docker -v /on/my/host/2:/on/the/container/2:rw \

윈도우즈의 경우: 두 개의 디렉터리 E:\data\dev & E:\data\dev2를 마운트해야 하는 경우

용도:

docker run -v E:\data\dev:c:/downloads -v E:\data\dev2 c:/downloads2 -i --publish 1111:80 -P SomeBuiltContainerName:SomeLabel

읽기-쓰기 또는 읽기 전용이 기본 옵션인지 묻는 댓글을 보았습니다. 읽기-쓰기는 기본 옵션입니다.(댓글을 달기에 부족해서 글을 남깁니다)

도커 설명서에 따라 다음을 실행합니다.

docker run -d \
--name devtest \
--mount source=myvol2,target=/app \
nginx:latest

그 다음에 사용합니다.docker inspect devtest출력의 "마운트" 섹션에서 "RW" 옵션을 찾습니다.

"Mounts": [
    {
        "Type": "volume",
        "Source": "/var/lib/docker/volumes/myvol2/_data",
        "Destination": "/app",
        "Driver": "local",
        "Mode": "",
        "RW": true,
        "Propagation": ""
    }
],

에서는 기본 옵션을 통해 볼륨을 읽기 및 쓰기 모두 사용할 수 있음을 확인할 수 있습니다.


볼륨을 읽기 전용으로 설정하려면(공식 문서마다 다시) 추가합니다.readonly당신 다음에source그리고.destination태그:

docker run -d \
--name=nginxtest \
--mount source=nginx-vol,destination=/usr/share/nginx/html,readonly \
nginx:latest

달려.docker inspect nginxtest그리고 "마운트"를 찾습니다.

"Mounts": [
    {
        "Type": "volume",
        "Source": "/var/lib/docker/volumes/nginx-vol/_data",
        "Destination": "/usr/share/nginx/html",
        "Driver": "local",
        "Mode": "",
        "RW": false,
        "Propagation": ""
    }
],

(참고: 공식 문서가 왜 다음과 같이 바뀌는지 모르겠습니다.target그리고.destinationtags, 하지만 저는 그것들이 서로 교환적으로 사용될 수 있다는 가정하에 작업하고 있습니다.)

실행 가능한 예:

docker run -v /Users/brandomiranda/iit-term-synthesis:/home/bot/iit-term-synthesis \
           -v /Users/brandomiranda/pycoq:/home/bot/pycoq \
           -v /Users/brandomiranda/ultimate-utils:/home/bot/ultimate-utils \
           -ti brandojazz/iit-term-synthesis:test bash

그러나 먼저 다음을 수행합니다.

docker pull brandojazz/iit-term-synthesis:test

아니면 할 수 있습니다.

docker run -v /var/volume1 -v /var/volume2 DATA busybox true

언급URL : https://stackoverflow.com/questions/18861834/mounting-multiple-volumes-on-a-docker-container

반응형