2016-10-05 4 views
3

나는 도커 작성으로 관리하고있는 일부 이미지를 가지고 있으며 호스트 컴퓨터 (우분투 16을 실행)와는 다른 네트워크에서 이미지를 실행해야합니다.외부 게이트웨이가있는 네트워크에서 도커 컨테이너를 실행하는 방법은 무엇입니까?

호스트 시스템에는 IP 10.0.1.19/24 및 게이트웨이 10.0.1.1이 있습니다.

내 고정 표시기-compose.yml이다

(내 제어 벗어나 변경 될 수 없음) 방화벽 컨테이너 '10.1.2.0/23 게이트웨이를 통해 직접 수신 연결을 허용

version: '2' 
services: 
    db: 
    ... 
    networks: 
     ab-net: 
     ipv4_address: 10.1.2.250 
    ... 

    app: 
    ... 
    networks: 
     ab-net: 
     ipv4_address: 10.1.2.11 
    ... 

networks: 
    ab-net: 
    driver: bridge 
    ipam: 
     driver: default 
     config: 
     - subnet: 10.1.2.0/23 
      gateway: 10.1.2.1 
10.1.2.1 (방화벽 자체)이며 호스트가 아닙니다.

해당 구성으로 컨테이너를 실행하면 docker는 IP 10.1.2.1을 사용하여 호스트에서 br 인터페이스를 구성합니다. 따라서 네트워크에는 동일한 IP를 가진 두 개의 머신 인 호스트와 방화벽/게이트웨이가 있습니다.

컨테이너는 인터넷에 액세스 할 수 있고 컨테이너를 볼 수 있으며 호스트 컴퓨터에서 컨테이너에 연결할 수 있습니다.

어떻게 그 시나리오를 사용할 수 있습니까? 이 단계에서는 가능한 경우 오케스트레이션 도구를 사용하지 않는 것이 좋습니다.

답변

1

내가 할 수있는 유일한 방법은 (현재) 실험 기능 "Ipvlan Network"을 사용하는 것입니다. 오히려 분리에 대한 기존의 리눅스 브리지를 사용하는 것보다, 그들은 단순히 물리적 네트워크에 네트워크와 연결 사이 분리를 적용하기 위해 리눅스 이더넷 인터페이스 또는 하위 인터페이스에 관련된 때문에

리눅스 구현은 매우 가볍고 .

echo 8021q >> /etc/modules 
modprobe 8021q 
apt-get install vlan 
edit /etc/network/interfaces 

auto eth1.2320 
iface eth1.2320 inet manual 
    vlan-raw-device eth1 

auto eth1.2321 
iface eth1.2321 inet manual 
    vlan-raw-device eth1 

auto eth1.2322 
iface eth1.2322 inet manual 
    vlan-raw-device eth1 

auto eth1.2323 
iface eth1.2323 inet manual 
    vlan-raw-device eth1 

auto eth1.2324 
iface eth1.2324 inet manual 
    vlan-raw-device eth1 

/etc/init.d/networking restart 
:

documentation 그러나 사람들은 내가 그것을 달성하기 위해 실행 한 명령이 매우 크고, 여기에 복사 할 수 없습니다

0

다른 네트워크 외부 사이트 도커의 NAT를 설정할 수 없습니다.

관련 문제