2015-04-28 22 views
33

Docker-compose.yml dosyasında, aşağıdakilere sahibim. Ancak kapsayıcı, ana bilgisayar adı değerini almaz. Herhangi bir fikir?Docker'da Ana Makine Adını Nasıl Ayarlıyorum?

dns: 
    image: phensley/docker-dns 
    hostname: affy 
    domainname: affy.com 
    volumes: 
    - /var/run/docker.sock:/docker.sock 
+2

. Bu çok daha okunabilir hale getirir. – larsks

+1

Hangi Compose sürümünü kullanıyorsunuz? – kojiro

cevap

23

Bu, düzgün çalışıyor gibi görünüyor. Ben bir dosya halinde yapılandırma koyarsanız:

$ cat > compose.yml <<EOF 
dns: 
    image: phensley/docker-dns 
    hostname: affy 
    domainname: affy.com 
    volumes: 
    - /var/run/docker.sock:/docker.sock 
EOF 

Sonra şeyler getirmek:

$ docker-compose -f compose.yml up 
Creating tmp_dns_1... 
Attaching to tmp_dns_1 
dns_1 | 2015-04-28T17:47:45.423387 [dockerdns] table.add tmp_dns_1.docker -> 172.17.0.5 

Ve sonra kabın içine hostname kontrol, her şey güzel gibi gözüküyor:

$ docker exec -it stack_dns_1 hostname 
affy.affy.com 
+0

Hangi Compose sürümünü kullanıyorsunuz? – kojiro

+0

Bu biçim, docker-compose'un en son sürümünde çalışmaz. YML dosyaları hassas şeylerdir; Bunun dns için doğru format olduğundan emin misin? –

+2

YML dosyaları gerçekten bu kadar fena değil. "Çalışmıyor" ne demektir?[Dokümanlar] 'a (https://docs.docker.com/compose/compose-file/) göre, hem' hostname 'hem de' domainname ',' docker-compose.yml 'seçenekleridir. Güncelleme: sadece test edilmiş, hala gayet iyi çalışıyor gibi görünüyor (docker-compose version 1.4.2, docker version 1.8.2). – larsks

9

Docker belgelerine bağlı olarak: https://docs.docker.com/compose/compose-file/#/command

Ben sadece docker-compose dosyasına hostname: <string> 'u yerleştirin.

Örn .:

[...] 

lb01: 
    hostname: at-lb01 
    image: at-client-base:v1 

[...] 

ve konteyner lb01 hostname olarak at-lb01 alır.

+0

, her kapsayıcı için ana makine adını ayarlar mısınız? Bu çok verimsiz görünüyor? – vgoklani

+0

Geçerli bir çözüm olan konteynerler için iyi bilinen isimlere ihtiyacınız varsa. –

2

docker run kullanırken, konak adının diğer kapsayıcılara görünmediğini buldum. Muhtemelen ana bilgisayar adını kullanmayla ilgili dokümanlar için bir uyarı eklemek gerekir

: Bu tartışma varlığın kısmıyla, bir known issue (belki de daha bilinen bir özelliği) olarak çıkıyor. Bence nadiren faydalıdır.

bir hostname atama doğru yolu - konteyner ağ şartları - şöyle define an alias şudur:

services: 
    some-service: 
    networks: 
     some-network: 
     aliases: 
      - alias1 
      - alias2 

Ne yazık ki bu haladocker run ile çalışmaz.

docker-compose run --name alias1 some-service 

Ve alias1 sonra diğer kaplardan ping edilebilir: geçici çözüm haznesini ad atamak etmektir.

1

Çalışan bir kdc'ye sahip olmak için freeipa container'u döndürmem gerekiyordu ve bir ana bilgisayar adı vermem gerekiyordu aksi halde çalışmaz. Sonunda benim için işe yaramadı ne Oluşturma penceresinde HOSTNAME env değişkeni ayarlıyor:

version: 2 
services: 
    freeipa: 
    environment: 
     - HOSTNAME=ipa.example.test 

Şimdi onun çalışma: Ben doğru önceden biçimlendirilmiş metni görüntülemek için sorunuzu düzenledikten

docker exec -it freeipa_freeipa_1 hostname 
ipa.example.test 
İlgili konular