2016-10-14 5 views
1

도커 컨테이너에서 로컬 파일 시스템으로 디렉토리를 마운트하고 싶습니다. 디렉토리는 웹 사이트 루트이고 편집기를 사용하여 로컬 컴퓨터에서 편집 할 수 있어야합니다.리눅스 호스트의 도커 컨테이너 안에 디렉토리를 마운트하는 방법

나는 docker run -v local_path:container_path을 실행할 수 있지만 컨테이너 내부에 비어있는 디렉토리 만 생성한다는 것을 알고있다.

어떻게 리눅스 호스트의 도커 컨테이너 안에 디렉토리를 마운트 할 수 있습니까?

+1

이 http://stackoverflow.com/a/31726568/1981061을 읽고 작동 사용자의 요구에 따라? – Griffin

+0

고맙습니다. 개발자들이 즐겨 사용하는 편집기와 도구로 자신의 컴퓨터를 사용할 수 있도록 램프 스택 환경을 사용할 수 있도록 사용량을 제안 하시겠습니까? –

+0

다른 방법으로 해보는 것이 좋습니다. 컨테이너 내부에 소스 디렉토리를 마운트하십시오. 에디터를 사용하여 컨테이너 내부의 마운트 된 디렉토리에서 빌드를 실행하십시오. 다른 방법은 호스트에 디렉토리를 마운트하고 컨테이너에서 소스 코드를 마운트 된 디렉토리에 복사하여 편집기 용 호스트에서 액세스 할 수 있도록하는 것입니다. – Griffin

답변

0

준비가되어있는 LAMP를 제공하려는 경우 Dockerfile에서 VOLUMES 선언을 사용해야합니다. VOLUME volume_path_in_container 문제는 도커가 볼륨을 만들려는 경로에 이미 있었기 때문에 파일을 탑재하지 않는다는 것입니다. @ Grif-fin이 주석에 언급 된대로 이동하거나 컨테이너의 진입 점을 수정하여 런타임에 볼륨에 노출시키려는 파일을 복사 할 수 있습니다.

Dockerfile에 COPY 또는 ADD 빌드 명령을 사용하여 데이터를 삽입해야 기본 파일이 컨테이너에 표시됩니다.

그런 다음 COPY 경로에서 볼륨 경로로 파일을 복사하는 엔트리 포인트를 만듭니다.

그런 다음 -v local_path:volume_path_in_container과 같은 -v 태그를 사용하여 컨테이너를 실행하십시오. 이처럼 로컬에 마운트 된 컨테이너 내부의 파일을 가져야합니다. (적어도, 그것은 제가 추가 한 것입니다).

예 : https://github.com/titouanfreville/Docker/tree/master/ready_to_go_lamp을 찾으십시오.

언제든지 빌드해야하는 번거 로움을 피할 수 있으며 최종 이미지에서 제공 할 수 있습니다.

더 좋게하려면 마운트 된 파일의 소유자가되도록 사용자 지원을 추가하는 것이 좋습니다 (루트가 아닌 경우).

희망은 유용했습니다.

1

약간 이상하지만 이름이 지정된 볼륨을 사용할 수 있습니다. 호스트에 마운트 된 볼륨에도 불구하고 이름이 지정된 볼륨은 제공되지 않습니다. 그리고 당신은 그 dir에 접근 할 수 있습니다. 예제를 참조하십시오 :

docker volume create --name data 
docker run -rm=true -v data:/etc ubuntu:trusty 
docker volume inspect data 

[ 
    { 
     "Name": "data", 
     "Driver": "local", 
     "Mountpoint": "/var/lib/docker/volumes/data/_data", 
     "Labels": {}, 
     "Scope": "local" 
    } 
] 

마운트 지점을 참조하십시오.

mkdir ~/data 
sudo -s 
cp -r /var/lib/docker/volumes/data/_data/* ~/data 
echo "Hello World">~/data/hello.txt 

docker run --rm=true -v ~/data:/etc ubuntu:trusty cat /etc/fstab #The content is preserved 
docker run --rm=true -v ~/data:/etc ubuntu:trusty cat /etc/hello.txt #And your changes too 

그것은 정확하게 당신이 요구되지만했다되지는

감사