2017-02-03 1 views
1

Ich verwende das docker-compose-Rezept unten, um einen Container aufzurufen, der eine Komponente des Storm-Stream-Verarbeitungsframeworks ausführt. Ich finde das auf Mac's , wenn ich den Container eingeben (sobald es läuft und über docker exec -t -i <container-id> bash läuft) und ich tun ping storm-supervisor Ich bekomme den Fehler 'unbekannten Host'. Wenn ich jedoch das gleiche docker-compose-Skript unter Linux ausführe, wird der Host erkannt und ping ist erfolgreich.hostname in docker-compose.yml wird auf dem mac nicht erkannt (funktioniert aber unter linux)

Der Fehler beim Auflösen des Hosts führt zu Problemen mit der Storm-Komponente ... aber was dieser Komponente tut, kann für diese Frage ignoriert werden. Ich bin mir ziemlich sicher, wenn ich herausfand, , wie man das Docker-compose Verhalten des Macs erhält, um mit Linux übereinzustimmen, dann würde ich kein Problem haben.

Ich glaube, ich das Problem in diesem Beitrag erwähnt erlebe: https://forums.docker.com/t/docker-compose-not-setting-hostname-when-network-mode-host/16728

version: '2' 
services: 
    supervisor: 
    image: sunside/storm-supervisor 
    container_name: storm-supervisor 
    hostname: storm-supervisor 
    network_mode: host 
    ports: 
     - "8000:8000" 
    environment: 
     - "LOCAL_HOSTNAME=localhost" 
     - "NIMBUS_ADDRESS=localhost" 
     - "NIMBUS_THRIFT_PORT=49627" 
     - "DRPC_PORT=49772" 
     - "DRPCI_PORT=49773" 
     - "ZOOKEEPER_ADDRESS=localhost" 
     - "ZOOKEEPER_PORT=2181" 

Dank im Voraus für alle Leads oder Tipps!

Antwort

5

"Netzwerkmodus: Host" wird nicht gut auf Docker Mac funktionieren. Ich hatte das gleiche Problem, wo ich nur wenige meiner Container im Brückennetzwerk und die anderen im Host-Netzwerk hatte. Sie können jedoch alle Ihre Container in ein benutzerdefiniertes Brückennetzwerk verschieben. Es hat für mich gelöst. Sie können Ihre Datei "docker-compose.yml" bearbeiten, um ein benutzerdefiniertes Brückennetzwerk zu erhalten.

version: '2' 
services: 
    supervisor: 
    image: sunside/storm-supervisor 
    container_name: storm-supervisor 
    hostname: storm-supervisor 
    ports: 
     - "8000:8000" 
    environment: 
     - "LOCAL_HOSTNAME=localhost" 
     - "NIMBUS_ADDRESS=localhost" 
     - "NIMBUS_THRIFT_PORT=49627" 
     - "DRPC_PORT=49772" 
     - "DRPCI_PORT=49773" 
     - "ZOOKEEPER_ADDRESS=localhost" 
     - "ZOOKEEPER_PORT=2181" 
    networks: 
     - storm 
networks: 
    storm: 
    external: true 

auch, führen Sie den folgenden Befehl, um das benutzerdefinierte Netzwerk zu erstellen.

docker network create storm 

Sie können es überprüfen, indem

docker network ls 

Hoffe, es half.

Verwandte Themen