2016-07-11 3 views
19

"도커 빌드"중에 내 /etc/hosts 파일을 업데이트하고 싶습니다."도커 빌드"도커 이미지에서/etc/hosts 파일을 업데이트하는 방법

Dockerfile에서 아래 라인에 추가되었지만 /etc/hosts 파일을 업데이트하거나 오류가 없습니다.

RUN echo "192.168.33.11 mynginx" >> /etc/hosts 

/etc/hosts을 업데이트해야합니다. 누구든지 이것에 대해 제안 할 수 있습니까? 고정 표시기의 최신 버전으로

+0

당신이 당신의 고정 표시기 구축 실행 boot2docker를 사용하고 있습니까? – VonC

+0

아니요, Linux 용 docker 1.8 버전을 사용하고 있습니다. –

+1

그리고 이미지를 컨테이너로 실행할 때/etc/hosts는 변경되지 않습니다. 아니면 리눅스 호스트/etc/hosts를 언급 했습니까? – VonC

답변

22

이는 고정 표시기-작성하여 수행 할 수 있으며, 그 extra_hosts directive

호스트 이름 매핑을 추가합니다.
docker run client --add-host parameter (이미 도커 1.8에서 사용 가능)과 동일한 값을 사용하십시오. 한마디로

extra_hosts: 
- "somehost:162.242.195.82" 
- "otherhost:50.31.209.229" 

: 그것을 구축하지, 그것을 실행할 때 컨테이너의 /etc/hosts을 수정합니다.

+0

도커 이미지에서/etc/hosts를 변경하고 싶습니다. –

+0

@PrakashSingh 나는 동의한다. 그러나 그렇게하는 것은 쉽지 않은 것처럼 보인다. – VonC

+0

아무도이 사용 사례를 구현하지 않았습니까? –

0

docker service create --name <name> --mount type=bind,source=/etc/hosts,dst=/etc/hosts <image> 
5

당신은 당신이 그것을 시작할 때 고정 표시기가 파일을 관리하기 때문에 RUN 단계에서 에코 사용하여 호스트 파일을 수정할 수 없습니다 구축하는 대신 고정 표시기의 실행 고정 표시기 동안 파일을 마운트하여 나를 위해 일한 따르고 파일의 내용은 docker에 의해 관리됩니다. 같은를 달성하기 위해 사용할 수는 있지만 다음

:

ENTRYPOINT ["/bin/sh", "-c" , "echo 192.168.254.10 database-server >> /etc/hosts && echo 192.168.239.62 redis-ms-server >> /etc/hosts && exec java -jar ./botblocker.jar " ] 

키 여기서 주목해야 할이 고정 표시기 문서에서 알 수 있듯이 exec 명령의 사용이다. exec의 사용은 컨테이너에 대한 PID 1로 java 명령을 만듭니다. Docker 인터럽트는 그것에 만 응답합니다.

docker exec -it <container name> /bin/bash 

컨테이너가 열리면 :

사용하여 컨테이너를 실행하는 데 그냥

+0

ty! 이것은 훌륭한 솔루션입니다. – xero

+0

kubenetes 솔루션을 찾으려는 경우 hostAliases를 사용할 수 있습니다. docker가 extra_hosts를 작성하는 것과 마찬가지로 https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/. –

2

내 생각에 시작 IP를 말할 수정할 수 있습니다 도커가 최근 도커 빌드에 --add-host 플래그를 추가했습니다.이 플래그는 정말 좋습니다.

[편집] 그래서이 기능을 방문하십시오 --add-host 플래그 docker build을 사용하는 방법에 대한 자세한 세부 내용은 17.04.0-ce

에 업데이트되었습니다 https://docs.docker.com/edge/engine/reference/commandline/build/

관련 문제