2016-07-23 22 views
4

Wenn ich Docker vor Gebrauch, ich docker-machine ssh default verwenden können Hosts in Docker der Maschine zu setzen /etc/hosts, aber in Docker für mac Ich kann es nicht ist VM zugreifen, da es nicht über es. Also, das Problem ist how to set hosts in docker for mac? Meine sekundäre Domäne möchte die andere IP zeigen.Wie für Mac-Hosts in Docker setzen

Antwort

0

Sie müssen eine docker-compose.yml Datei erstellen. Diese Datei auf der gleichen Route Ihrer Dockerfile Zum Beispiel wird, verwende ich diese Docker-compose.yml Datei:

version: '2' 
services: 
    app: 
    hostname: app 
    build: . 
    volumes: 
     - ./:/var/www/html 
    working_dir: /var/www/html 
    depends_on: 
     - db 
     - cache 
    ports: 
     - 80:80 
    cache: 
    image: memcached:1.4.27 
    ports: 
     - 11211:11211 
    rabbitmq: 
    image: rabbitmq:latest 
    ports: 
     - 5672:5672 
    db: 
    image: postgres:9.5.3 
    ports: 
     - 5432:5432 
    environment: 
     - TZ=America/Mazatlan 
     - POSTGRES_PASSWORD=root 
     - POSTGRES_DB=restaurantcore 
     - POSTGRES_USER=rooms 
     - POSTGRES_PASSWORD=rooms 

Die Anschlüsse sind mit den Ports des Host-Docker Maschine verbindlich.

+0

Danke für Ihre Antwort. Ich denke, mein Ausdruck ist nicht klar, ich möchte ein benutzerdefiniertes Bild zu meinem Dhub schieben, aber diese sekundäre Domäne ist nicht aufgelöst, und aus irgendeinem Grund kann ich es nicht tun. Also muss ich seine IP in Hosts setzen, in zuvor, ich habe es in boot2docker.iso gesetzt, aber jetzt gibt es keinen Start der virtuellen Maschine, also weiß ich nicht, wie ich es einstellen soll. – Cui

3

ich eine Lösung gefunden, verwenden Sie diesen Befehl

screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty 

nun die /etc/hosts in dem Docker VM bearbeiten.
Um screen zu beenden, verwenden Sie Ctrl + a + d.

+0

@Eldad AK danke für corret es – Cui

1

Hier ist, wie ich es mit einem Bash-Skript mache, so dass die Änderungen zwischen Docker für Mac neu gestartet werden.

cd ~/Library/Containers/com.docker.docker/Data/database 
git reset --hard 

DFM_HOSTS_FILE="com.docker.driver.amd64-linux/etc/hosts" 
if [ ! -f ${DFM_HOSTS_FILE} ]; then 
    echo "appending host to DFM /etc/hosts" 
    echo -e "xxx.xxx.xxx.xxx\tmy.special.host" > ${DFM_HOSTS_FILE} 
    git add ${DFM_HOSTS_FILE} 
    git commit -m "add host to /etc/hosts for dns lookup" 
fi 
+0

Ich schrieb etwas gründlicher auf diese auf http://blog.phymata.com/2017/05/07/docker-for-mac-configuration-persistence/ –

1

Sie können es über dieses Skript automatisieren, um dieses Scrip Laufzeit beim Start oder Zeit anmelden werden Sie ..

#!/bin/sh 
# host entry -> '10.4.1.4 dockerreigstry.senz.local' 
# 1. run debian image 
# 2. check host entry exists in /etc/hosts file 
# 3. if not exists add it to /etc/hosts file 
docker run --name debian -it --privileged --pid=host debian nsenter \ 
    -t 1 -m -u -n -i sh \ 
    -c "if ! grep -q dockerregistry.senz.local /etc/hosts; then echo -e '10.4.1.4\tdockerregistry.pagero.local' >> /etc/hosts; fi" 

# sleep 2 seconds 
# remove stopped debian container 
sleep 2 
docker rm -f debian 

ich einen Blog-Post zu diesem Thema mit weiteren Informationen erstellt haben, speichern.

https://medium.com/@itseranga/set-hosts-in-docker-for-mac-2029276fd448

Verwandte Themen