2016-09-14 3 views
22

Ich versuche, Container statische IP-Adresse bereitzustellen. Ich verstehe, dass ich ein benutzerdefiniertes Netzwerk erstellen muss. Ich erstelle es und die Bridge-Schnittstelle ist auf dem Host-Rechner (Ubuntu 16.x). Die Container erhalten IP von diesem Subnetz, aber nicht die statische, die ich bereitgestellt habe.Statische IP für Docker-Container über Docker-Compose bereitstellen

Hier ist meine Docker-compose.yml:

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 

Die Behälter 10.5.0.2 und 10.5.0.3 erhalten, statt 5 und 6.

Antwort

40

Beachten Sie, dass ich nicht empfehlen eine feste IP für Container in Docker, es sei denn, Sie tun etwas, das das Routing von außen nach innen in Ihrem Containernetzwerk ermöglicht (z. B. macvlan). DNS ist bereits für die Diensteerkennung im Container-Netzwerk verfügbar und unterstützt die Container-Skalierung. Außerhalb des Containernetzwerks sollten Sie exponierte Ports auf dem Host verwenden. Mit diesem Disclaimer, hier ist die Compose-Datei, die Sie wollen:

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

Funktioniert als ein Charme! Vielen Dank. – chenchuk

+1

Funktioniert nicht für mich: Benutzerdefinierte IP-Adresse wird nur unterstützt, wenn eine Verbindung zu Netzwerken mit benutzerdefinierten Subnetzen hergestellt wird. –

+0

Sie müssen die untere Hälfte der Datei verfasst haben, in der das vom Benutzer konfigurierte Subnetz definiert wurde. – BMitch

Verwandte Themen