Bagaimana cara mengubah nama host docker setelah pembuatan gambar?

Saya belajar docker 1.8. Saya ingin mengubah nama host wadah setelah Saya membuat mereka. Saya mencoba mengedit /etc/host di dalam wadah dan mendapat ditimpa setiap kali saya attach kemudian start gambar. Saya mencoba mengedit file berikut, dan nama host ditimpa.

[root@localhost ~]# docker inspect high_blackwell | grep hostname"HostnamePath": "/var/lib/docker/containers/15b84f7012383b1af2d4c8c6443506cdff3b19cb1d87d3dfdcb10df126c4eec3/hostname",

[akar@localhost ~]#

Tak satu pun dari jawaban ini bekerja untuk saya

Bagaimana Anda memberi nama wadah docker?

Saya Tidak yakin apakah maksud Anda ingin mengatur nama host dari wadah baru atau wadah yang sedang berjalan. Anda mengatakan Anda ingin melakukannya setelah membuat wadah, tetapi kemudian Anda juga mengatakan Anda "memulai gambar". Jika Anda belum started gambar Anda belum membuat wadah-wadah adalah apa yang anda dapatkan ketika Anda mulai gambar.

Anda membuat penampung baru

Anda dapat mengatur nama host pada baris perintah:

docker run --rm -h "example.com" -t -i ubuntu bash# ...root@example:/# hostnameexample.com

Kontainer Anda sudah berjalan

Ini lebih sulit. Anda akan ingin mengawasi masalah Docker ini tapi sampai itu diselesaikan Anda tidak dapat melakukan lebih dari untuk mengedit /etc/hosts Kurasa. The hostname perintah tidak akan bekerja.

Untuk mengubah nama host dari wadah yang sedang berjalan, Anda dapat menggunakan perintah "nsenter". Anda akan harus akar pada host, meskipun.

Kita dapat membuat daftar ruang nama pada host dengan perintah " lsns:

# lsns        NS TYPE  NPROCS   PID USER COMMAND4026531836 pid       73     1 root init      4026531837 user     101     1 root init      4026531838 uts       73     1 root init      4026531839 ipc       73     1 root init      4026531840 mnt       72     1 root init      4026531857 mnt        1    14 root kdevtmpfs4026531957 net       73     1 root init      4026532300 mnt       28  1785 root /usr/bin/python /usr/local/bin/supervisord -c4026532301 uts       28  1785 root /usr/bin/python /usr/local/bin/supervisord -c4026532302 ipc       28  1785 root /usr/bin/python /usr/local/bin/supervisord -c4026532303 pid       28  1785 root /usr/bin/python /usr/local/bin/supervisord -c4026532305 net       28  1785 root /usr/bin/python /usr/local/bin/supervisord -c

Yang dengan pid 1785 adalah wadah docker saya. Jenis namespace yang menangani nama host adalah "uts" , jadi mari kita jalankan hostname di namespace itu:

# nsenter --target 1785 --uts hostname foo

Sekarang "hostname" dalam wadah Anda harus menghasilkan"foo"!

1.Hentikan kontainer dan layanan

sudo docker stop CONTAINER_NAMEsudo service docker stop

2.Mengedit file konfigurasi (JSON) [Anda harus selalu membuat cadangan pertama]

    /var/lib/docker/containers/CONTAINER_ID/config.jsonReplace    "Hostname":"WHATEVER"with    "Hostname":"NEW_HOSTNAME"

3.Mulai wadah dan layanan

sudo service docker startsudo docker start CONTAINER_NAME