2014-11-11 19 views
11

Sono nuovo in Docker e sto cercando di capire qual è il modo migliore per inserire l'IP dell'host genitore docker nel file host del contenitore.Inserire l'IP dell'host parent docker nel file hosts del contenitore

sto usando il seguente comando nel mio Dockerfile

RUN /sbin/ip route|awk '/default/ { print $3,"\tdockerhost" }' >> /etc/hosts

ma a volte gli host IP ottenere cambiamento così la sua non più pertinente ...

La ragione per farlo, se chiedete te stesso, è che ho bisogno di accedere a un altro 2 contenitori dockers (e link non offrono questa funzionalità).

Grazie,

+0

Ho bisogno che l'IP dell'host del docker sia nel file/etc/hosts. –

+2

Il problema non è con awk, è con l'esecuzione del comando nel momento sbagliato. Un po 'come compilare-tempo vs tempo di esecuzione. – Bryan

+0

Il collegamento è il modo per realizzarlo, è inteso per dare accesso ad altri contenitori di finestra mobile. Spiega meglio il tuo caso d'uso e in che modo il linking non funziona per te. – Motin

risposta

12

L'opzione --add-host è fatto per questo. Così, nel comando docker run, fare qualcosa di simile:

docker run --add-host dockerhost:`/sbin/ip route|awk '/default/ { print $3}'` [my container] 
+0

Sei sicuro che arg sarà valido anche dopo il riavvio quando l'ip dell'host sta cambiando? sembra valido solo per la creazione ... –

+0

Ah, vuoi dire se permetti a Docker di riavviare i tuoi contenitori al riavvio? Sì, sarebbe un problema. È possibile riavviare le cose in modo diverso: consultare https://docs.docker.com/articles/host_integration/. Se vuoi uno schema dinamico per risolvere un indirizzo, forse usa il DNS? – Bryan

+1

Il comando '/ sbin/ip route | awk '/ default/{print $ 3}'' viene eseguito nell'host di docker, anziché nel contenitore mobile, che produce il risultato ip errato. – Santiago

0

--add-host opzione può essere utilizzata quando si crea/esegue il contenitore, ma dal momento che /sbin/ip comando non è disponibile nei sistemi operativi come OSX, possiamo usare un più generico soluzione:
docker run --add-host=dockerhost:`docker network inspect \ --format='{{range .IPAM.Config}}{{.Gateway}}{{end}}' bridge` [IMAGE]

Problemi correlati