도커에서 부모 시스템에서 컨테이너로 디렉토리를 마운트하는 방법은 무엇입니까?부모 시스템에서 도커의 컨테이너에 대한 디렉토리 마운트
답변
* 업데이트 - 아래 답변을 참조하십시오. 더 이상 정답이 아닙니다.
Docker는 더 이상 반복 실행 환경을 보장 할 수 없으므로 의도적으로 탑재 할 수 없습니다.
을 수행 할 수 있습니다 그러나 : 실행 'debootstrap을의 결과를
tar -C/-c . | docker import - entend/custombase
2) 예를 들어, 부트 스트랩 루트 파일 시스템을 가져 오기 :
1) 호스트의 루트 파일 시스템을 가져 오기 및 그것에서 새로운 이미지를 만들 '. (이 공식 "기본은"이미지를 생성하는 방법입니다 있습니다, 그래서 당신은 단순히 '고정 표시기 풀 기지'실행 나을 수 있습니다) 실행시
debootstrap precise ./bootstrap
tar -C ./bootstrap -c . | docker import - entend/ubuntubase
3) 용기에 로컬 디렉토리의 내용을 주사를 그것.
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"
이, 다음 명령 $ CMD를 실행 $ 이미지에서 컨테이너를 실행 컨테이너 디렉토리 $ DST에 호스트 디렉토리 $ SRC를 복사합니다
이 마지막 예는 일반적으로 빌드를 실행하기 전에 소스 코드를 삽입하는 데 사용됩니다컨테이너 내부의 명령.
희망이 도움이됩니다.
이 질문을 업데이트하기 만하면 Docker에서 곧 가능할 것입니다.
This pull request은 실제로이 기능을 구현했으며 곧 마스터로 병합됩니다.
this fork을 설치하면 바로 사용할 수 있습니다.
마지막 업데이트와 마찬가지로이 기능은 이제 Docker에서 릴리스되었습니다 (API는 @imiric에서 연결 한 끌어 오기 요청 이후 변경 되었음).
단순히 이미지 내의 /root
같이 호스트 컴퓨터에서 /tmp
를 탑재하기 위해
docker run -v /tmp:/root myImage
같은 명령을 사용한다.
자료 : https://docs.docker.com/engine/userguide/dockervolumes/
Q : 그 경로 내의 파일에 대한 변경 사항은 두 가지 방법으로 작동합니까? –
@AlixAxel 예. 그렇습니다. 디렉토리와 파일은 컨테이너에 마운트 된 호스트에 상주합니다. 양쪽에서 파일을 편집하고 양쪽에서 즉시 변경 사항을 볼 수 있습니다. 나는 동적 인 내용을 부풀리지 않고 컨테이너에 가져 오기 위해 이것을 사용합니다. – Vilsepi
Docker가 ramdisk에서 실행중인 VirtualBox 이미지를 호스트로 사용하므로 이미지에서 VB 호스트에 (비어있는) 폴더가 마운트되므로 OS-X (및 Windows)에서도 예상대로 작동하지 않습니다. –
이 가 고정 표시기 가능된다
마운트 애플리케이션 컨테이너에 데이터
docker run -t -i -rm -volumes-from DATA -name client1 ubuntu bash
OSX AND WINDOWS
2 연속 마운트 FOR TRICK : I 추측 여기에있는 많은 게시물은 두 개의 boot2docker를 사용하고있을 수 있습니다. 그 이유는 아무 것도 볼 수없는 이유입니다. s는 호스트가 아닌 boot2docker에서 디렉토리를 마운트하기 때문입니다.당신은 기본적으로 2 연속 마운트가 필요합니다 첫 번째를 시스템과 두 번째로 호스트에서 디렉토리를 마운트하기 위해이 같은 컨테이너에 boot2docker에서 새 디렉토리를 마운트 :
이 boot2docker
에 로컬 시스템을 마운트sudo mount -t vboxsf hostfolder /boot2dockerfolder
리눅스 컨테이너에 boot2docker 파일을 탑재
docker run -v /boot2dockerfolder:/root/containerfolder -i -t imagename
그러면 containerfolder 안에있을 때 호스트 폴더의 내용을 볼 수 있습니다.
# 3 구문이 변경된 것 같습니다. '-i' 플래그가 이미지 앞에 올 필요가 있습니다. 그렇지 않으면 docker run은'-i'라는 이미지를 찾으려고 시도합니다. –
접근법 # 3을 할 때, 어떻게'$ CMD'의 출력을 얻을 수 있습니까? 그것은'docker run'의 출력을 억제하는 -i 옵션처럼 보입니다. – Naveed
업데이트로, 이것은 docker에서''docker run''의''-v'' 옵션을 통해 일류 옵션입니다. 자세한 내용은 아래를 참조하십시오. – user2089674