Çalışan konteyner için ana bilgisayar adı nasıl belirtilir?


51

Ana bilgisayar adını çalışan bir liman işçisi konteynerine yerleştirmekte sorun yaşıyorum. Ayrıca görüntü başladıktan sonra ana bilgisayar adını nasıl belirteceğimi anlama konusunda da sorun yaşıyorum .

İndirdiğim bir resimden bir konteyner başlattım:

sudo docker run -p 8080:80 -p 2222:22 oskarhane/docker-wordpress-nginx-ss

Ancak ana bilgisayar adı ile belirtmeyi unuttum -h; Ana bilgisayar adını şimdi kapsayıcının çalıştığını nasıl belirleyebilirim?


Konteyneri durdurup bir ana bilgisayar adı sağlayarak yeniden başlatabilir misiniz?
dawud

AFAIK, yalnızca runbir görüntü oluştururken çalışan, bir kaba başladığınızda çalışmaz.
Miguel Ping,

Bazen tek istediğin, bash komut istemini uygun bir isimle görmek. Bu durumda, PS1 değerini .bashrc'de düzenleyebilirsiniz. Öneriler için askubuntu.com/a/549150/55365 adresine bakın . Herhangi bir PS1'de, sunucunun veya hizmetin adını ayırmak için * veya # ile çevrili (renkli) bir dize ekleyebilirsiniz.
SPRBRN


Yanıtlar:


48

Düzenleme /etc/hostname, kabın içinde ssh erişimi gereken bir şeydir. Aksi takdirde, kabı -hseçeneği ile döndürebilirsiniz .

Ana bilgisayar ve etki alanı adlarını ayarlamak için:

$ docker run -h foo.bar.baz -i -t ubuntu bash
root@foo:/# hostname
foo
root@foo:/# hostname -d
bar.baz
root@foo:/# hostname -f
foo.bar.baz

5
Sen edebilirsiniz docker exec /bin/bashçalışan bir kabın üzerinde, gerek yüklemek için ssh(yönetim amaçları için kötü uygulama imho olan).
jjmontes

Ayrıca / etc / hosts dosyasını bir adrese doğru şekilde çözümlendiğini düzenlemek isteyebilirsiniz.
dtoubelis

2
Ana bilgisayar adını çalışan bir kapta hostname(eksik özellik) ile değiştiremezsiniz. Çalıştırma , verilen ana bilgisayar adıyla yeni bir kap docker run -h <hostname> <image> <container-name>oluşturur .
dangonfast

6

Konteyneri ve servisi durdur

sudo docker stop CONTAINER_NAME
sudo service docker stop

Config dosyasını düzenle (JSON) [Önce yedekleme yapmalısınız]

/var/lib/docker/containers/CONTAINER_ID/config.json

değiştirmek

"Ana makine adı": "NE"

ile

"Ana makine adı": "NEW_HOSTNAME"

Konteyneri ve servisi başlat

sudo service docker start
sudo docker start CONTAINER_NAME

(İsteğe bağlı olarak liman işçisi de ekleyebilirsiniz)

sudo docker attach CONTAINER_NAME

Liman işçilerine ilişkin ayrıntılar (yani CONTAINER_NAME, CONTAINER_ID) çalıştırılarak elde edilebilir

sudo docker ps -a

çalışmıyor konteynere her başladığımda üzerine yazılır.
Ahmed

bu garip. Ben sadece bu adımları çoğalttım ve hala çalışıyor. liman işçisi sürüm 1.7.1. Dosyayı düzenlemeden önce konteyner ve hizmeti kapattığınızdan emin misiniz?
Tomot

Docker 17.04.0-ce üzerinde çalışırken, / etc / hostname dosyasını düzenlemedi. Kabı henüz oluşturmadıysanız, -h ile diğer cevap daha iyidir, ancak benim durumumda kabı kurma sorununa çoktan başladım ve sadece ana bilgisayar adını ayarlamak için yeniden oluşturmak istemedim.
Una,

Değil çalışır mıDocker version 17.05.0-ce, build 89658be
dangonfast

4

Kabı yeniden başlatmak en kolay seçenek olacaktır - ancak / etc / hostname dosyasını düzenleyebilir ve oradan gidebilirsiniz.


Düzenlemenin /etc/hostnameyeniden başlatmanın ardından etkisi yoktur, çünkü her seferinde docker tarafından yönetilen "gerçek" ana bilgisayar adıyla değiştirilir. hostnameKonteyner üzerinde çalışamazsınız , çünkü konteyner bu işlem için bir yeteneğe sahip değildir (varsayılan olarak ve bunu değiştirmek istemezsiniz)
dangonfast

Ve /etc/hostnamekabın yeniden düzenlenmesi ve yeniden başlatılmasının hiçbir amacı yoktur.
dangonfast


1

https://evolvingweb.ca/blog/changing-docker-hostnames-namespaces , bunu yapmanın bir yolunu açıklar. Temel fikir docker inspectkabın kapağını almak için kullanmak ve ardından kabın uts ad alanına girmektir nsenter. hostnameBu ad alanında çalışan, bu ad alanını paylaşan docker örneğinin ana bilgisayar adını değiştirir.


2
Lütfen çözümü doğrudan buraya ekleyin, kaybolabilecek harici bir bağlantı değil
yetimler

0

Diğerlerinin de belirttiği gibi, bu config.v2.jsondosyayı değiştirerek kaplar için değiştirilebilir .

Dosya düzenlenmeden önce Docker hizmetinin durdurulduğundan emin olun, aksi halde GENELDİR. Adımlar bu sırayla yapılmalıdır

  • Kabı Durdur
  • Docker hizmetini durdur
  • - /var/lib/docker/containers/CONTAINER_ID/config.v2.json- dosyasını değiştir

  • Docker servisini başlatın

  • Konteyneri başlat

Bu benim için kullanarak bir konteyner üzerinde Docker v17.05.0-ce üzerinde çalıştığını doğruladı --net=host. /etc/hostnameDosyayı değiştirmek işe yaramaz ve dosyanın üzerine yazılır.


-3

İçinde

 /var/lib/docker/containers/CONTAINER/config.json

bul ve ayarla

"Config":{"Hostname":"utils","Domainname":"mysite.com", ...}

Çalışmaz Docker version 17.05.0-ce, build 89658be. Config nereden yazıldığını kim yazıyor? Ve yeniden başlattıktan sonra ana bilgisayar adı değişmez.
dangonfast
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.