도커 컨테이너에 여러 볼륨을 마운트 하시겠습니까?


152

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

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

둘 이상의 호스트-컨테이너 쌍을 작성하는 방법이 있습니까? 예를 들어 쉼표로 구분 된 목록 또는 배열을 전달 하시겠습니까?


나는 문서의 용어의 현재 상태를 이해, 당신은 볼륨 (질문의 제목), 당신은 확실히 (질문의 몸에 무엇을 요구입니다) 호스트 폴더에 많은 바인드 마운트 할 수 있습니다 탑재 할 수 없습니다
알렉세이 Martianov

답변:


260

여러 -v인수를 전달하십시오.

예를 들어 :

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

2
좋아, 그래서 나는 이것을 똑같은 방식으로하고 있지만 두 번째 것을 호출하려고하면 그것을 찾을 수 없다고 말합니다.
momal

도커 실행 -v / home / usr / workspace / proj / WebContent / file / username : / mycode -v / home / usr / workspace / proj / WebContent / file : / tst gcc : 4.9 sh -c 'cd mycode; gcc -o myapp ./mycode.c; cd tst; ./myapp <./test.txt '이것은 내 명령입니다. 첫 번째 볼륨에있는 mycode.c를 컴파일하려고하지만 동일한 파일에 다른 볼륨의 stdin을 제공하려고합니다. 어떻게합니까?
momal

1
@YehCheez, 나는 이것을 별도의 질문으로 열어서 재생기를 구축하려고 제안합니다. (공용 레지스트리의 Docker 이미지로 버그를 재현하고 질문에 제공된 스크립트에서 모든 로컬 종속성을 만들면 이상적입니다).
Charles Duffy

항상 절대 경로가 필요합니까?
xatzistnr

3
목적지는 항상 절대적이어야합니다. 소스는 이름이 지정된 볼륨의 식별자 또는 절대 경로 여야 합니다. 후자의 문서는 docs.docker.com/engine/admin/volumes/volumes 를 참조하십시오 .
Charles Duffy

19

Docker는 이제을 사용하여 마이그레이션하는 것이 좋습니다 --mount.

여러 볼륨 마운트는 현재 Docker 설명서에 자세히 설명되어 있습니다.

보낸 사람 : 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

원래의 오래된 답변은 여전히 ​​작동해야합니다. 현재 가장 잘 알려진 방법으로 답변을 유지하려고합니다.


Docker가 마이그레이션을 권장하는 유일한 이유는 리서치가 마운트가 사용하기 쉽고 옵션이 더 많기 때문에 추가하는 것이 좋습니다. -v 또는 --mount를 사용하는 것은 완벽합니다. 이것은 개인적인 취향과 필요에 달려 있습니다.
KillerKode


6

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

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

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

1
어느 것이 기본 옵션입니까?
Hammad Dar

-9

아니면 할 수 있습니다

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

4
이것은 OP 이후의 것이 아닙니다. 이것은 컨테이너 내에 볼륨을 생성하고 호스트에서 볼륨을 바인딩하지 않습니다.
Ioannis

8
맞습니다. docker run -v / var / volume1 : / container / volume1 -v / var / volume2 : / container / volume2 DATA busybox true
Joost van der Laan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.