2014-10-31 6 views
1

우분투 시스템에 우분투 컨테이너가 있습니다. 컨테이너는 클라이언트처럼 동작하고 우분투 호스트 시스템은 서버와 같은 역할을합니다. 그래서 소켓 프로그래밍을 사용하여 호스트 시스템에 데이터를 보내고 싶습니다. 호스트 시스템에 데이터를 보내려면 호스트 Ip가 필요합니다. 컨테이너에서 호스트 IP를 얻는 방법. 시도 :도커 컨테이너에 호스트 IP 주소 받기

/sbin/ip route|awk '/default/ { print $3 }' 

하지만 Docker ip : 172.17.42.1을 반환합니다. 하지만 내 호스트 시스템 idp는 : 192.168.2.101입니다. 도커 컨테이너에서 호스트 IP를 얻는 방법. 문제를 알기 위해 아래 코드를 볼 수 있습니다.

우분투 호스트 server.c은 다음과 같습니다 :

bind(listenfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); 
listen(listenfd, 10); 
connfd = accept(listenfd, (struct sockaddr*)NULL, NULL); 

컨테이너 client.c은 다음과 같습니다

serverAddr.sin_family = AF_INET; 
serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); // <-- I want place my Host IP here 

어떻게 용기에 호스트의 IP 주소를받을 수 있도록?

답변

2

는하지만 내 호스트 시스템 IDP는 : 192.168.2.101

호스트 컴퓨터가 아마 여러 개의 주소를 가지고있다. 컨테이너와 통신하는 데 사용되는 가상 인터페이스 인 docker0에 192.168.2.101eth0 또는 wlan0 등 및 172.17.42.1 일 가능성이 큽니다.

호스트에 구성된 다른 주소를 가져 오는 "표준"방법은 없습니다. 이 작업을 수행하는 방법은 docker입니다. 여하튼


172.17.42.1 주소는 아마 당신이 원하는 것을 100 % 않는다 - 당신이 그것을 넣어하지만 방법은 트래픽은 여전히 ​​"인터페이스"라는를 통해 흐를 것이다.