2016-09-27 2 views
0

내가 네트워크 A로부터 컨테이너가 모두 도커 네트워크액세스 규칙은

이 같은 도커 호스트에있는 네트워크 B에 컨테이너에 액세스 할 수있는 방법을 알고 싶어요.

어디서나이 답변을 찾지 못했습니다. 또한 iptables 규칙을 사용하여 성공하지 못했습니다.

답변

0

동일한 호스트에서 한 컨테이너에서 다른 호스트로 액세스해야하는 경우 docker run 명령이나 docker-compose.yml 파일에서 Docker의 --link 옵션을 사용하면 쉽게 얻을 수 있습니다.

각 컨테이너가 다른 컨테이너를보고 그 이름으로 참조 할 수 있습니다 (/etc/hosts에 사용자 정의 항목을 추가 한 것처럼)). 예를 들어

: docker run -d --link container1:container1 --name container2 image2:latest

이것은 당신이 (컨테이너 2에서 ping container1을 실행 같은) 이름으로 컨테이너 2에 container1을 액세스 할 수 있습니다.

Docker 설명서에서 communication-across-links을 참조하십시오.

+0

불행히도 이것은 작동하지 않습니다 –

+0

세부 사항/환경 및 명령을 게시 할 수 있습니까? –

1

여러 네트워크에 컨테이너를 연결할 수 있지만 네트워크를 한 후,이를 create 연결해야하고 start 그들 일 - run 명령은 여러 네트워크를 지정할 수 없습니다. 일단 생성

> docker create --name ub1 --network net-1 sixeyed/ubuntu-with-utils sleep infinity 
6bdf4f41d8484516e329e572356f1770ba3da5062bf5ab6fc584db294ef13865 
> docker create --name ub2 --network net-2 sixeyed/ubuntu-with-utils sleep infinity 
8424d296104e082e1d0bc1468332b3143459cba9bdeeb21d320709d51048e14d 

: 지금 (이 이미지는 단지 우분투 설치 ping 같은 도구입니다) 서로 다른 네트워크에 연결하기 intially, 두 개의 컨테이너를 만들

docker network create net-1 
docker network create net-2 

: -

예 두 개의 네트워크를 구축 (아직 실행되지 않음) 다른 네트워크에 연결할 수 있습니다.

> docker network connect net-2 ub1 
> docker network connect net-1 ub2 
012 3,516,

한 다음를 시작

> docker start ub1 
ub1                          
> docker start ub2 
ub2 

지금 컨테이너 이름으로 서로에 액세스 할 수 있습니다

> docker exec -it ub1 ping -c 1 ub2 
PING ub2 (172.19.0.3) 56(84) bytes of data. 
64 bytes from ub2.net-1 (172.19.0.3): icmp_seq=1 ttl=64 time=0.053 ms 

> docker exec -it ub2 ping -c 1 ub1 
PING ub1 (172.19.0.2) 56(84) bytes of data. 
64 bytes from ub1.net-1 (172.19.0.2): icmp_seq=1 ttl=64 time=0.077 ms 

당신은 서비스에 대한 여러 네트워크를 지정, 작성과 동일한 기능을 수행 할 수 있습니다.

+0

예. Compose는 훨씬 덜 짜증나게합니다. – enderland

+0

죄송합니다. Elton, 컨테이너에 2 개의 네트워크를 연결하고 싶지 않습니다. 두 컨테이너가 서로 다른 두 개의 컨테이너가 있어도 서로 통신 할 수 있기를 바랍니다. –