2017-12-21 4 views
1

에서 RUN 명령을 포함해야합니다, 나는 명령 아래에 사용할 수 있습니다Docker- 음주 우리는 내가 파이썬 코드가하고 이미지를 고정 표시기로 변환 할 Dockerfile

sudo docker build -t customdocker . 

이 이미지를 고정 표시기하는 파이썬 코드를 변환합니다. 변환하기 위해 나는 아래의 명령으로 Dockerfile를 사용

이에서
FROM python:3 

ADD my_script.py/

ADD user.conf /srv/config/conf.d/ 

RUN pip3 install <some-package> 

CMD [ "python3", "./my_script.py" ] 

, 우리는 필요한 패키지를 설치 RUN 명령이있다. 어떤 이유로 이미지를 삭제했는데 다시 빌드하고 싶다면이 이미지가 이미 설치되어 있으므로 잠시 시간을 절약하기 위해 RUN 단계를 건너 뛸 수있는 방법이 있습니까?

또한 내 코드에서 다른 디렉토리에있는 user.conf 파일을 사용하고 있습니다. 그래서 이것을 DOckerfile에 포함시키고 현재 디렉토리에 그것의 복사본을 저장합니다. docker 이미지가 해당 디렉토리 내의 파일을 검색 할 수 있도록 작업 디렉토리를 정의 할 수있는 방법이 있습니다.

감사

답변

1

당신이 개 삭제 후 다시 고정 표시기 이미지를 구축하려는 경우 예는, dockerfile에서 RUN 또는 다른 문을 제거 할 수 없습니다.

당신은 당신의 dockerfile에 명령 WORKDIR를 사용하지만 당신은 예를 들어 WORKDIR

에 metioned이 설정됩니다 이미지 WORKDIR에서 컨테이너를 만들 때 그 범위는 고정 표시기의 이미지, 즉 내 것 :

WORKDIR /srv/config/conf.d/ 

이 /srv/config/conf.d/는 workingdir로 설정되지만-위해 구축하는 동안 지정된 위치에 해당 파일을 복사 dockerfile 아래 사용해야

ADD user.conf /srv/config/conf.d/ 
+0

, 어떻게 우리는이 두 이미지의 항만 노동자를 만들 docker.If이 처리하는, 그것은 오류를 줄 것이다 녹이다. –

1

첫 번째 질문에 답하기 : 도커 이미지에는 설치 한 패키지를 포함하여 Python 환경과 관련된 모든 것이 들어 있습니다. 이미지를 삭제하면 패키지도 이미지에서 삭제됩니다. 따라서 그 단계를 건너 뛸 수 없습니다. 또한 -w 플래그와 함께 작업 디렉토리를 설정할 수 있습니다

docker run -v /directory-you-want-to-mount:/src/config/ customdocker 

:하여 컨테이너를 시작하면서 지금에 두 번째 질문에

, 당신은 direectory을 바인딩 할 수 있습니다. 해당 모듈을하지 실행하는 동안 하나 개의 파이썬 코드가 다른 파이썬 코드에서 모듈을 가져 오는

docker run -w /path/to/dir/ -i -t customdocker 

https://docs.docker.com/v1.10/engine/reference/commandline/run/