Docker의 상위 시스템에서 컨테이너로 디렉토리 마운트
상위 시스템의 디렉터리를 Docker의 컨테이너에 마운트하려면 어떻게해야합니까?
* 업데이트-아래 답변을 참조하십시오. 더 이상 정답이 아닙니다. *
Docker는 더 이상 반복 가능한 실행 환경을 보장 할 수 없기 때문에 설계 상 마운트 할 수 없습니다.
그러나 다음을 수행 할 수 있습니다.
호스트의 루트 파일 시스템을 가져 와서 새 이미지를 만듭니다.
tar -C / -c . | docker import - entend/custombase
예를 들어 'debootstrap'실행 결과와 같은 부트 스트랩 루트 파일 시스템을 가져옵니다. (이것은 공식 "기본"이미지가 생성 된 방법이므로 단순히 'docker pull base'를 실행하는 것이 더 나을 수 있습니다.)
debootstrap precise ./bootstrap tar -C ./bootstrap -c . | docker import - entend/ubuntubase
실행할 때 로컬 디렉토리의 내용을 컨테이너에 삽입하십시오.
IMAGE=base; SRC=./stuff; DST=/tmp/stuff; CMD="echo hello world"; tar -C $src -c . | docker run $IMAGE -i /bin/sh -c "tar -C $DST -x; $CMD"
그러면 $ IMAGE에서 컨테이너가 실행되고 호스트 디렉터리 $ SRC를 컨테이너 디렉터리 $ DST에 복사 한 다음 $ CMD 명령을 실행합니다.
이 마지막 예제는 일반적으로 컨테이너 내에서 빌드 명령을 실행하기 전에 소스 코드를 삽입하는 데 사용됩니다.
최종 업데이트와 마찬가지로이 기능은 이제 Docker에서 릴리스되었습니다 (@imiric에 연결된 pull 요청 이후 API가 변경되었지만).
다음과 같은 명령을 사용하십시오.
docker run -v /tmp:/root myImage
이미지 내에서 /tmp
호스트 머신에서 마운트하기 위해 /root
.
출처 : https://docs.docker.com/engine/userguide/dockervolumes/
이 질문을 업데이트하기 위해 곧 Docker에서 가능할 것입니다.
이 풀 리퀘스트 는 실제로이 기능을 구현했으며 곧 마스터에 병합 될 것입니다.
이 포크 를 설치 하면 지금 바로 사용할 수 있습니다 .
이는 IS 고정 표시기 수 :
애플리케이션 컨테이너에 데이터를 마운트합니다.
docker run -t -i -rm -volumes-from DATA -name client1 ubuntu bash
OS X 및 Windows 용 트릭
두 개의 연속 마운트 : 여기에있는 많은 게시물이 두 개의 boot2docker를 사용하고있을 것 같습니다. 아무것도 표시되지 않는 이유는 호스트가 아닌 boot2docker에서 디렉토리를 마운트하기 때문입니다. 기본적으로 두 개의 연속 마운트가 필요합니다. 첫 번째는 호스트에서 시스템으로 디렉토리를 마운트하는 것이고 두 번째는 boot2docker에서 새 디렉토리를 다음과 같이 컨테이너로 마운트하는 것입니다.
boot2docker에 로컬 시스템을 마운트합니다.
sudo mount -t vboxsf hostfolder /boot2dockerfolder
Linux 컨테이너에 boot2docker 파일 마운트
docker run -v /boot2dockerfolder:/root/containerfolder -i -t imagename
그런 다음 ls
containerfolder 내부 를 수행 하면 hostfolder의 내용을 볼 수 있습니다.
'programing' 카테고리의 다른 글
double.ToString ()에서 소수점 기호를 변경하는 방법은 무엇입니까? (0) | 2021.01.16 |
---|---|
이 인증서는 알 수없는 기관에서 서명했습니다. (0) | 2021.01.16 |
빈 IEnumerator 반환 (0) | 2021.01.16 |
Rails 콘솔 세션에서 경로 인식 (0) | 2021.01.16 |
node.js에서 전역 변수를 사용하는 방법은 무엇입니까? (0) | 2021.01.16 |