Saya ingin memperbarui /etc/hosts
file saya selama "pembuatan buruh pelabuhan".
Saya menambahkan baris di bawah ini di Dockerfile tetapi tidak memperbarui /etc/hosts
file atau memberikan kesalahan apa pun.
RUN echo "192.168.33.11 mynginx" >> /etc/hosts
Saya perlu memperbarui /etc/hosts
. Adakah yang bisa menyarankan ini?
docker
dockerfile
hosts
Prakash
sumber
sumber
Jawaban:
Dengan versi buruh pelabuhan yang lebih baru, ini bisa dilakukan dengan buruh pelabuhan dan
extra_hosts
arahannyaSingkatnya: modifikasi
/etc/hosts
penampung Anda saat menjalankannya, bukan membuatnya.Dengan Docker 17.x +, Anda memiliki yang
docker build --add-host
disebutkan di bawah ini , tetapi, seperti yang dikomentari dalam masalah 34078 dan dalam jawaban ini :Solusi yang disebutkan merujuk pada docker-compose yang saya sarankan di atas:
sumber
docket exec -it <container name> /bin/bash
, lalu memperbarui host container buruh pelabuhan di bawah / ect / host dengan editor baris perintah pilihan Anda (vim, emacs, nano, echo ''. >> />).Anda tidak dapat memodifikasi file host pada gambar menggunakan
echo
diRUN
langkah karena daemon docker akan memelihara file (/ etc / hosts) dan isinya (entri host) saat Anda memulai container dari image.Namun, berikut ini dapat digunakan untuk mencapai hal yang sama:
Kunci untuk diperhatikan di sini adalah penggunaan
exec
perintah seperti yang disarankan oleh dokumentasi buruh pelabuhan. Penggunaan exec akan menjadikan perintah java sebagai PID 1 untuk container. Interupsi Docker hanya akan menanggapi itu.Lihat https://docs.docker.com/engine/reference/builder/#entrypoint
sumber
ENTRYPOINT
bukanlah instruksi untuk gambar. Ini hanya menandai titik masuk ketika kita menjalankan wadah dari gambar ini, yang berarti entri host hanya ada setelah wadah berjalan. Saya tidak berpikir persyaratan itu penting. Pasti ada kesalahpahaman.Saya pikir buruh pelabuhan baru-baru ini menambahkan file
--add-host
bendera ke pembuat buruh pelabuhan yang sangat bagus.[Sunting] Jadi fitur ini telah diperbarui pada 17.04.0-ce
Untuk detail lebih lanjut tentang cara menggunakan
docker build
dengan--add-host
bendera, silakan kunjungi: https://docs.docker.com/edge/engine/reference/commandline/build/sumber
--add-host
fitur tersedia di Docker 12 pada CentOS.Karena ini masih muncul sebagai jawaban pertama di Google, saya akan memberikan solusi yang mungkin.
Perintah diambil dari sini ternyata berfungsi untuk saya (Docker 1.13.1, Ubuntu 16.04):
sumber
Jika ini berguna untuk siapa saja,
HOSTALIASES
variabel env berfungsi untuk saya:sumber
Anda dapat melakukannya dengan perintah berikut pada saat menjalankan buruh pelabuhan
docker run [OPTIONS] --add-host example.com:127.0.0.1 <your-image-name>:<your tag>
Di sini saya memetakan
example.com
ke localhost127.0.0.1
dan cara kerjanya.sumber
Saya menggunakan AWS Elasticbeanstalk + Docker + Supervisord.
Jawaban cepat
Cukup tambahkan beberapa kode
Dockerfile
.sumber
Jawaban Lengkap
hosts
file Anda sendiri yang ingin Anda tambahkan ke kontainer buruh pelabuhan;hosts
file ke dalam wadah dengan menambahkan baris berikut diDockerfile
ENTRYPOINT
atauCMD
atauCRON
tugas, gabungkan baris perintah berikut ke dalamnya atau setidaknya jalankan ini di dalam penampung yang sedang berjalan:Dockerfile
karena modifikasi akan hilang:sumber
Anda dapat menggunakan --add-host selama menjalankan buruh pelabuhan.
Untuk kasus Anda, gunakan: docker run --add-host mynginx: 192.168.33.11 [image_name]: [tag]
Ini akan memperbarui / etc / hosts Anda
Anda dapat memeriksanya dengan menggunakan perintah berikut:
jika sh tidak bekerja untuk Anda, maka Anda dapat mencoba bash atau / bin / sh atau / bin / bash
sumber
sumber
Mengikuti bekerja untuk saya dengan memasang file selama menjalankan buruh pelabuhan alih-alih membangun buruh pelabuhan
sumber
Hanya jawaban cepat untuk menjalankan container Anda menggunakan:
setelah wadah terbuka:
kemudian
dan kemudian Anda bisa
atau:
atau editor apa pun yang Anda suka dan buka di vim, di sini Anda dapat memodifikasi, katakanlah ip startup Anda ke 0.0.0.0
sumber