2013-03-28 3 views

답변

11

* 업데이트 - 아래 답변을 참조하십시오. 더 이상 정답이 아닙니다.

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를 복사합니다

이 마지막 예는 일반적으로 빌드를 실행하기 전에 소스 코드를 삽입하는 데 사용됩니다

컨테이너 내부의 명령.

희망이 도움이됩니다.

+2

# 3 구문이 변경된 것 같습니다. '-i' 플래그가 이미지 앞에 올 필요가 있습니다. 그렇지 않으면 docker run은'-i'라는 이미지를 찾으려고 시도합니다. –

+0

접근법 # 3을 할 때, 어떻게'$ CMD'의 출력을 얻을 수 있습니까? 그것은'docker run'의 출력을 억제하는 -i 옵션처럼 보입니다. – Naveed

+2

업데이트로, 이것은 docker에서''docker run''의''-v'' 옵션을 통해 일류 옵션입니다. 자세한 내용은 아래를 참조하십시오. – user2089674

5

이 질문을 업데이트하기 만하면 Docker에서 곧 가능할 것입니다.

This pull request은 실제로이 기능을 구현했으며 곧 마스터로 병합됩니다.

this fork을 설치하면 바로 사용할 수 있습니다.

157

마지막 업데이트와 마찬가지로이 기능은 이제 Docker에서 릴리스되었습니다 (API는 @imiric에서 연결 한 끌어 오기 요청 이후 변경 되었음).

단순히 이미지 내의 /root 같이 호스트 컴퓨터에서 /tmp를 탑재하기 위해

docker run -v /tmp:/root myImage 

같은 명령을 사용한다.

자료 : https://docs.docker.com/engine/userguide/dockervolumes/

+2

Q : 그 경로 내의 파일에 대한 변경 사항은 두 가지 방법으로 작동합니까? –

+2

@AlixAxel 예. 그렇습니다. 디렉토리와 파일은 컨테이너에 마운트 된 호스트에 상주합니다. 양쪽에서 파일을 편집하고 양쪽에서 즉시 변경 사항을 볼 수 있습니다. 나는 동적 인 내용을 부풀리지 않고 컨테이너에 가져 오기 위해 이것을 사용합니다. – Vilsepi

+10

Docker가 ramdisk에서 실행중인 VirtualBox 이미지를 호스트로 사용하므로 이미지에서 VB 호스트에 (비어있는) 폴더가 마운트되므로 OS-X (및 Windows)에서도 예상대로 작동하지 않습니다. –

4

가 고정 표시기 가능된다

마운트 애플리케이션 컨테이너에 데이터

docker run -t -i -rm -volumes-from DATA -name client1 ubuntu bash 
4

OSX AND WINDOWS

2 연속 마운트 FOR TRICK : I 추측 여기에있는 많은 게시물은 두 개의 boot2docker를 사용하고있을 수 있습니다. 그 이유는 아무 것도 볼 수없는 이유입니다. s는 호스트가 아닌 boot2docker에서 디렉토리를 마운트하기 때문입니다.당신은 기본적으로 2 연속 마운트가 필요합니다 첫 번째를 시스템과 두 번째로 호스트에서 디렉토리를 마운트하기 위해이 같은 컨테이너에 boot2docker에서 새 디렉토리를 마운트 :

  1. 이 boot2docker

    에 로컬 시스템을 마운트
    sudo mount -t vboxsf hostfolder /boot2dockerfolder 
    
  2. 리눅스 컨테이너에 boot2docker 파일을 탑재

    docker run -v /boot2dockerfolder:/root/containerfolder -i -t imagename 
    

그러면 containerfolder 안에있을 때 호스트 폴더의 내용을 볼 수 있습니다.

관련 문제