2016-09-14 2 views
22

컨테이너에 고정 IP 주소를 제공하려고합니다. 맞춤 네트워크를 만들어야한다는 것을 알고 있습니다. 내가 만들고 브리지 인터페이스가 호스트 컴퓨터 (Ubuntu 16.x)에 있습니다. 컨테이너는이 서브넷에서 IP를 가져 오지만 내가 제공 한 정적은 가져 오지 않습니다.docker-compose를 통해 도커 컨테이너에 고정 IP를 제공하십시오.

version: '2' 

services: 
    mysql: 
    container_name: mysql 
    image: mysql:latest 
    restart: always 
    environment: 
     - MYSQL_ROOT_PASSWORD=root 
    ports: 
    - "3306:3306" 
    networks: 
    - vpcbr 

    apigw-tomcat: 
    container_name: apigw-tomcat 
    build: tomcat/. 
    ports: 
    - "8080:8080" 
    - "8009:8009" 
    networks: 
    - vpcbr 
    depends_on: 
    - mysql 

networks: 
    vpcbr: 
    driver: bridge 
    ipam: 
    config: 
     - subnet: 10.5.0.0/16 
     gateway: 10.5.0.1 
     aux_addresses: 
      mysql: 10.5.0.5 
      apigw-tomcat: 10.5.0.6 

컨테이너가 10.5.0.2 및 10.5.0.3, 5 대신 내가 고정을하지 않는 것이 좋습니다 6.

답변

40

주를 얻을 : 여기

내 고정 표시기 - compose.yml입니다 컨테이너 네트워크 (예 : macvlan) 외부에서 내부로 라우팅 할 수있는 작업을하지 않는 한 Docker 컨테이너의 IP. DNS는 컨테이너 네트워크 내부의 서비스 검색을 위해 이미 존재하며 컨테이너 확장을 지원합니다. 컨테이너 네트워크 외부에서는 호스트에서 노출 된 포트를 사용해야합니다. 그 면책 조항과 함께, 당신이 원하는 작성 파일은 다음과 같습니다.

version: '2' 

services: 
    mysql: 
    container_name: mysql 
    image: mysql:latest 
    restart: always 
    environment: 
     - MYSQL_ROOT_PASSWORD=root 
    ports: 
    - "3306:3306" 
    networks: 
     vpcbr: 
     ipv4_address: 10.5.0.5 

    apigw-tomcat: 
    container_name: apigw-tomcat 
    build: tomcat/. 
    ports: 
    - "8080:8080" 
    - "8009:8009" 
    networks: 
     vpcbr: 
     ipv4_address: 10.5.0.6 
    depends_on: 
    - mysql 

networks: 
    vpcbr: 
    driver: bridge 
    ipam: 
    config: 
     - subnet: 10.5.0.0/16 
     gateway: 10.5.0.1 
+1

매력으로 작동합니다! 감사. – chenchuk

+1

나를 위해 작동하지 않습니다 : 사용자가 지정한 서브넷을 사용하여 네트워크에 연결할 때만 사용자 지정 IP 주소가 지원됩니다. –

+0

사용자 구성 서브넷이 정의 된 작성 파일의 아래쪽 절반을 놓쳐 있어야합니다. – BMitch

관련 문제