2015-10-09 10 views
8

Quando ho configurato un paio di contenitori Docker nel file docker-compose.yaml con collegamenti, il nome dei contenitori risulta essere del formato prefix_%s_1 anziché %s e l'alias in /etc/hosts sul contenitore di collegamento è lo stesso.immagine compositore mobile: "prefisso% s_1" invece di "% s"

Perché lo pseudonimo del contenitore redis è test_redis_1 anziché redis?

Qui ci sono i file rilevanti e di uscita:

# docker-compose.yaml 
monkey: 
    build: ../../monkey 
    dockerfile: test.Dockerfile 
    links: 
     - redis:redis 
    ports: 
     - "9006:9006" 

redis: 
    build: ../storage/redis 
    ports: 
     - "6379:6379" 

Dopo l'esecuzione docker-compose build && docker-compose up:

$ docker-compose ps 
Name   Command      State Ports 
--------------------------------------------------------------------------- 
test_redis_1 redis-server /usr/local/et ... Up 0.0.0.0:6379->6379/tcp 
test_monkey_1 python -m SimpleHTTPServer ... Up 0.0.0.0:9006->9006/tcp 

uscita dal test_monkey_1 contenitore:

Step 14 : RUN cat /etc/hosts 
---> Running in 1c104e3d9bf5 
172.17.1.26  75a485df1325 
127.0.0.1  localhost 
::1  localhost ip6-localhost ip6-loopback 
fe00::0 ip6-localnet 
ff00::0 ip6-mcastprefix 
ff02::1 ip6-allnodes 
ff02::2 ip6-allrouters 
172.17.1.26  thirsty_lumiere.bridge 
172.17.0.220 test_redis_1 
172.17.0.220 test_redis_1.bridge 
172.17.1.26  thirsty_lumiere 
---> 3a06bac9b3ca 
Removing intermediate container 1c104e3d9bf5 
Step 15 : RUN echo 
---> Running in a1c5b5f8ae0f 

---> 385c9ee44332 
Removing intermediate container a1c5b5f8ae0f 
Step 16 : RUN ifconfig eth0 | grep inet addr 
---> Running in 17cd638c6473 
      inet addr:172.17.1.28 Bcast:0.0.0.0 Mask:255.255.0.0 
---> 21235e29abc1 
Removing intermediate container 17cd638c6473 
Step 17 : RUN echo 
---> Running in 8c0b1db2a69b 

---> e2dd190eb4d1 
Removing intermediate container 8c0b1db2a69b 
Step 18 : RUN env 
---> Running in 50cd1b6bf9da 
HOSTNAME=75a485df1325 
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
PWD=/data/web/tunnelbear.com/play/tPWD=/data/web/tunnelbear.com/root 
_=/usr/bin/env 

risposta

1

questo è solo come finestra mobile-composizione nomi contenitori in modo che possa gestirli

Il nome di base è il nome della directory contenente il file docker-compose.yaml. Ciò è seguito dal nome del contenitore specificato nel file docker-compose.yaml e infine seguito da un numero di istanza che aumenta se si presentano più istanze di un contenitore utilizzando qualcosa come docker-compose scale.

Questo schema di denominazione è il modo in cui docker-compose è in grado di identificare i contenitori quando si tenta di operare su di essi utilizzando qualcosa come docker-compose stop.

Non penso che questo sia in conflitto con la documentazione in alcun modo. Cioè, se mi metto con, diciamo, questo docker-compose.yaml in una directory chiamata sotest:

irc: 
    image: docker.io/xena/elemental-ircd 
    links: 
    - web 

web: 
    image: larsks/thttpd 

E poi richiamare il composizione:

$ docker-compose up 

ottengo due contenitori:

CONTAINER ID  IMAGE       ...NAMES 
960c1491c03e  docker.io/xena/elemental-ircd ...sotest_irc_1 
422bba313e71  larsks/thttpd     ...sotest_web_1 

Se guardo il file /etc/hosts all'interno di sotest_irc_1, vedo:

172.17.0.28 web 422bba313e71 sotest_web_1 

Oltre a un certo numero di altri nomi. Quindi l'host collegato è disponibile per nome come descritto nei documenti.

+0

Questo non in conflitto con ciò che dice la documentazione? (Https://docs.docker.com/compose/yml/#links). Il file '/ etc/hosts' nell'esempio del documento ha'% s' invece di 'prefix_% s_1'. – Neil

+0

Non lo so; quale parte della documentazione stai guardando? – larsks

+0

Ho aggiornato il mio commento con un link. – Neil

3

Secondo docker compose issue #745:

Per impostazione predefinita, Comporre basi il nome del progetto in nome di base della directory comporre i comandi vengono eseguiti da. Il nome del progetto può essere sostituito sostituendo l'opzione -p/--project-name per ciascun comando o impostando la variabile di ambiente COMPOSE_PROJECT_NAME.

È possibile impostare il prefisso di vostra scelta per i vostri nomi contenitore scrivendo qualcosa di simile:

$ docker-compose -p MY_PROJECT_NAME 
+0

Ho provato -p param e non funziona 'docker-compose -p '' su -d' - Voglio impostarlo vuoto –

+0

Ma questo funzionerà' docker-compose -p 'somePrefix' up -d' cioè non valore vuoto solo –

3

Docker comporre utilizzerà il nome della directory con il file di composizione come il nome del progetto se non si imposta se tramite il -p option

-p, --project-name NAME  Specify an alternate project name (default: directory name) 

Compose supporta dichiarando default environment variables in an environment file named .env collocato nella cartella in cui viene eseguito il comando finestra mobile-composizione (corrente di lavoro d irectory).

Dove si vorrà impostare COMPOSE_PROJECT_NAME

Problemi correlati