2016-07-26 3 views
1

Dockerfile에서 볼륨을 마운트 할 수 있습니까? 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?Dockerfile에서 볼륨을 마운트 할 수 있습니까?

명령 프롬프트에서 일반 Docker 명령을 사용하여이 작업을 수행 할 수 있지만이 작업을 수행하는 더 좋은 방법이 있습니까?

+0

당신은 Dockerfile에서 볼륨을 마운트 할 수 있습니다, 당신은 단지 위치를 지정할 수 없습니다 - 그래서 또는 필요에 따라 도움이되지 않을 수도있다. 이유는 빌드가 호스트와 독립적이어야한다는 것입니다. 앞서 언급했듯이 빌드하는 동안 파일을 복사 할 수 있지만 읽기/쓰기를 원한다면 다른 해결책이 필요할 수 있습니다. API를 사용하여 동적으로 생성 된 볼륨의 위치를 ​​가져올 수는 있지만,'run'에서 지정하는 것이 더 나은 유스 케이스에 대해서는 잘 모르겠습니다. 고유 한 유스 케이스가있는 경우 자세한 정보가 도움이됩니다. – ldg

+0

그런 경우 [로커] (https://github.com/grammarly/rocker)가 도움이 될 것 같습니다. 이것에 대한 – Opal

답변

1

이미지 빌드 중에 불행히도 이 아니기 때문에이 아닙니다.

이유는 이식성이 될 수 있다고 생각하십니까? 나는 여기서 확실히 확신하지 못합니다. 누군가가 이것을 더 설명 할 수 있다면 좋을 것입니다.

그러나 Docker가 사용자가 빌드에 볼륨을 마운트하도록 허용한다면 Docker는 Windows와 Unix와 같은 여러 유형의 파일 시스템을 예상하고 처리해야합니다. 또한 마운트에 사용될 디렉토리 경로가 다른 호스트에 없으면 어떻게 될까요?

어쨌든 유스 케이스가 무엇인지 잘 모르겠지만 호스트 파일 시스템의 파일을 빌드 중에 이미지로 이동하고 다른 목적으로 이동 한 파일을 사용하려면 ADD 또는 COPY 명령을 사용할 수 있어야합니다. 등을 설치하는 등의

참조 :
https://docs.docker.com/engine/reference/builder/#/add

Q : 그래서 가장 좋은 방법은 무엇입니까?
A : 볼륨을 장착하기위한 표준 방법이 없다고 생각합니다. 나는 보통 내 장착을 docker-compose 파일에 정의합니다.

참조하십시오 Dockerfile의 컨텍스트 내에서
https://docs.docker.com/compose/compose-file/#/volumes-volume-driver

+0

덕분에, 게다가 난 내가이 고정 표시기 실행 -i -t -v 같은 것을하고 싶지 예를 들어 볼륨으로 현재 폴더를 마운트 어떻게 하나 개 더 질문이 :는/usr /을 TmpVolume ubuntu/bin/bash – user3547774

+0

@ user3547774'\'pwd \''명령을 사용하여 표현식을 실행하여 현재 작업 디렉토리를 얻을 수 있습니다.예 :'docker run -i -t -v \'pwd \':/usr/TmpVolume 우분투/bin/bash'이게 도움이되면 알려 주니 기쁘다. –

+0

나는 이것을 시도했지만 작동하지 않았다. 어쨌든'pwd'는 무엇을합니까? 컨테이너 내부에 볼륨이 생성되었지만 호스트 시스템에서 사용 가능한 내용이 누락되었습니다. – user3547774

1

, 당신은 실제로 컨테이너의 이미지를 구축하는 데 필요한 있는지의 정도, 자원을 호스트에 액세스가 제한됩니다. 예를 들어 호스트 볼륨을 마운트하거나 컨테이너를 시작하거나 자원에 액세스 할 수 있으면 현재 환경에서만 사용자를 위해 빌드 할 수있는 이미지와 같을 수 있습니다.

빌드 기간 동안 볼륨으로 마운트 된 호스트 리소스가 정말로 필요하면 Packr을 조사해야 할 수 있습니다. 그러나 컨테이너를 시작할 때 볼륨을 사용할 수있게하려면 보통 docker run --name=Foo $ARGS을 사용하는 것이 좋습니다.

관련 문제