2017-12-21 6 views
0

네트워크를 통해 여러 컴퓨터에서 실행되는 응용 프로그램이 있고 네트워크를 통해 다른 인스턴스와 통신합니다. 그리고 단일 시스템에서 테스트하고 각각의 인스턴스가 네트워크에서 별도의 컴퓨터에서 실행되고 있다고 생각하도록하고 싶습니다. 어떻게하면 도커를 통해이 작업을 수행 할 수 있습니까?도커를 사용하여 단일 컴퓨터에서 네트워크 에뮬레이션

+0

당신은 다리 네트워크 모드를 사용할 수 있습니다 도메인 이름을 사용하여 서버에 가상 네트워크 및 포인트 서버를 만듭니다. 시스템은 도커 DNS 분석기를 사용하여 이름을 내부 IP에 매핑하고 통신을 제공해야합니다. –

+0

당신은 무엇을 시도 했습니까? 도커 컨테이너를 동일한 네트워크에서 실행하면 액세스 할 수 있습니다. 도커를 사용하면 같은 결과를 얻을 수 있습니다. – Rafael

+0

'docker-machine'을 사용할 수 있습니다. 'docker-machine '을 사용하면 하나의 호스트에 서로 다른'IP'를 갖는 다중 가상 도커 호스트를 만들 수 있습니다. 'docker '호스트를위한 가상 머신이라고 생각할 수 있습니다. – SangminKim

답변

1

위의 설명에서 언급 한 "h"와 같이 브리지 네트워크 드라이버가이 작업을 수행합니다. 이 드라이버는 기본 드라이버이므로 호스트에서 여러 컨테이너를 실행하면 IP를 통해 서로 액세스 할 수 있어야합니다.

DNS 확인을 원할 경우 기본 브리지 네트워크를 제공하지 않으므로 브리지 네트워크를 정의해야합니다.

$ docker network create mynet 

시작하는 네트워크의 일부라는 이름의 용기 :

$ docker run --rm -d --name one --net mynet nginx:latest 
$ docker run --rm -d --name two --net mynet nginx:latest 
네트워크를 만들기

: https://docs.docker.com/engine/userguide/networking/

에서

자세한 내용은 여기 사용자 지정 브리지 네트워크를 사용하여 간단한 데모입니다

각 컨테이너에서 다음 중 하나를 해결할 수 있어야합니다. >이 -

일 : ND는 (들) 다른 공격

$ docker exec -it one ping two 
PING two (172.18.0.3): 56 data bytes 
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.098 ms 
... 

이 -> 하나 :

$ docker exec -it two ping one 
PING one (172.18.0.2): 56 data bytes 
64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.192 ms 
... 

정리 :

$ docker kill one two 
$ docker network rm mynet