Saya mengalami kesulitan mengatur nama host pada wadah buruh pelabuhan yang sedang beroperasi. Saya juga mengalami kesulitan memahami cara menentukan nama host setelah gambar dimulai.
Saya memulai sebuah wadah dari gambar yang saya unduh:
sudo docker run -p 8080:80 -p 2222:22 oskarhane/docker-wordpress-nginx-ss
Tapi saya lupa menentukan nama host melalui -h
; bagaimana saya bisa menentukan nama host sekarang setelah wadah berjalan?
run
mengambil gambar, bukan saat memulai wadah.docker restart
dokumentasiJawaban:
Edit
/etc/hostname
adalah satu hal yang Anda perlukan akses ssh di dalam wadah. Jika tidak, Anda dapat memutar wadah dengan-h
opsi.Untuk mengatur nama host dan domain:
sumber
docker exec /bin/bash
menggunakan wadah yang sedang berjalan, tidak perlu menginstalssh
(yang merupakan praktik buruk untuk keperluan administrasi).hostname
(kemampuan yang hilang). Menjalankandocker run -h <hostname> <image> <container-name>
menciptakan wadah baru dengan nama host yang diberikan.Hentikan wadah dan layanan
Edit file config (JSON) [Anda harus membuat backup terlebih dahulu]
/var/lib/docker/containers/CONTAINER_ID/config.json
Menggantikan
dengan
Mulai wadah dan layanan
(Opsional Anda juga dapat memasang buruh pelabuhan)
Detail tentang buruh pelabuhan (yaitu CONTAINER_NAME, CONTAINER_ID) dapat diperoleh dengan menjalankan
sumber
Docker version 17.05.0-ce, build 89658be
Restart wadah akan menjadi pilihan termudah - tetapi Anda juga dapat mengedit / etc / hostname dan pergi dari sana.
sumber
/etc/hostname
tidak memiliki efek setelah dimulai ulang, karena ditimpa setiap kali dengan nama host "nyata", dikelola oleh buruh pelabuhan. Anda tidak dapat berjalanhostname
di wadah, karena wadah tidak memiliki kemampuan untuk operasi itu (secara default, dan Anda tidak ingin mengubahnya)/etc/hostname
dan tidak memulai ulang wadah tidak memiliki tujuan.Jika Anda menggunakan
--net=host
maka Anda tidak dapat mengubah nama host dari-h
atau dari dalam docker.Lihat https://github.com/docker/docker/issues/5708
sumber
https://evolvingweb.ca/blog/changing-docker-hostnames-namespaces menjelaskan cara untuk melakukan ini. Ide dasarnya adalah menggunakan
docker inspect
untuk mendapatkan pid dari wadah, kemudian masukkan namespace uts wadahnsenter
. Menjalankanhostname
di dalam namespace itu akan mengubah nama host untuk instance buruh pelabuhan yang membagikan namespace itu.sumber
Seperti yang ditunjukkan beberapa orang lainnya, ini dapat diubah untuk kontainer dengan memodifikasi
config.v2.json
file.Pastikan saja layanan Docker dihentikan sebelum file diedit, jika tidak maka akan TERLALU MENDATANG. Langkah-langkah HARUS dilakukan dalam urutan ini
Ubah
/var/lib/docker/containers/CONTAINER_ID/config.v2.json
file -Mulai layanan Docker
Ini telah dikonfirmasi bekerja untuk saya di Docker v17.05.0-ce, menggunakan wadah
--net=host
. Memodifikasi/etc/hostname
file tidak berfungsi dan file hanya ditimpa.sumber
Di
temukan dan atur
sumber
Docker version 17.05.0-ce, build 89658be
. Config ditimpa, siapa yang tahu dari mana. Dan nama host itu sendiri tidak berubah setelah restart.