2017-05-18 7 views
1

컨테이너가 실행되는 도커 컨테이너 안에 CentOS 호스트 컴퓨터의 IP 주소를 알 수있는 방법이 있습니까? 내가 도킹 컨테이너 1과 컨테이너 2를 실행하는 리눅스 머신 10.10.10.10 IP를 가지고 있다면, 자바 코드에서 IP를 쿼리하고 싶다. Java 코드는 도커 컨테이너 안에 있습니다. 나는 실제로 도커 떼로서이 서비스를 운영하고있다.도커 컨테이너 내의 호스트 컴퓨터의 IP 주소 읽기

+0

대체 방법이있을 수 있으므로이 작업을 수행하려는 _why_에 대한 추가 정보가 중요 할 수 있습니다. IP보다는 약간의 마술). 예를 들어, 일반적으로 Docker 호스트는 * 내부 * IP 172.17.0.1을 가지고 있기 때문에 당신이 무엇이든 할 수 있습니다. 물론 컨테이너 외부에 IP를 게시하는 경우에는 쓸모가 없습니다. – otupman

답변

1

Docker는 컨테이너를 호스트에서 격리하려고합니다.

그래서, 이론적으로, 컨테이너가이 IP 주소 FO 인식해서는 안 호스트하지 않는 한 실행 시간에

일부 아이디어를 환경 변수에서

가 컨테이너에 "제공"

어느

docker run -e "host_IP=10.10.10.10"...

또는

012,351,641을 포함하는 파일에 my_env

host_IP 10.10.10.10

docker run --env-file my_env

가 선에게 Dockerfile에

가이 빌드시 환경 변수에 문서

https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file

를 참조

에서 사용

012 356,

의 DoC

https://docs.docker.com/engine/reference/builder/#env

당신이 공유 할 수

은/etc/호스트와

docker run -v /etc/hosts:/etc/hosts ...

+0

감사합니다. 그러나 Dockerfile 내부에서 환경 변수로 IP를 지정하는 것은 docker 이미지를 다시 작성해야 할 때 호스트 컴퓨터의 IP가 변경되면 나쁜 생각입니다. 그렇지 않니? 나는 또한 실행 중에 environ var를 주려고 생각하고 있었지만 호스트 컴퓨터의 IP가 변경되면 새 ip를 얻기 위해 컨테이너를 다시 시작해야합니다. 권리? – curiousengineer

+0

올바른,'-v/etc/hosts :/etc/hosts' 또는 다른 아이디어의 옵션. http://stackoverflow.com/documentation/docker/6481/passing-secret-data-to-a-running-container#t=201705181637267206782도 참조하십시오. – user2915097

0

호스트를 찾으려면 다음 netstat 명령을 사용할 수 있습니다와 컨테이너 사이의 호스트 용기 안의 IP :

netstat -nr | grep '^0.0.0.0' | awk '{print $2}' 
관련 문제