Dalam docker, dedahkan bermaksud menandai maklumat dan merupakan cara ekspresi dokumen boleh membolehkan pembangun memahami dengan cepat perkhidmatan mana yang dibuka oleh Imej dalam fail docker yang tidak boleh dibuka secara langsung, yang sesuai untuk operasi. Apabila kakitangan penyelenggaraan menggunakan bekas, mereka tahu port mana yang hendak dibuka. Jika tiada port dedah, perkhidmatan antara Kontena juga boleh mengakses satu sama lain.
Persekitaran pengendalian tutorial ini: sistem linux7.3, docker versi 19.03, komputer Dell G3.
Expose dalam Dockerfile ialah maklumat tag Anda tidak boleh membuka port secara langsung, supaya kakitangan operasi dan penyelenggaraan tahu apa yang perlu terbuka apabila menggunakan bekas yang mana. Apabila menggunakan docker run -itd -P xxx:xxx , capital -P akan memetakan port yang ditakrifkan menggunakan EXPOSE dalam fail Dockerfile, dan tidak perlu secara manual -p: borang ini.
EXPOSE hanyalah cara ekspresi dokumen Dalam fail docker, pembangun boleh memahami perkhidmatan mana yang dibuka oleh Imej tidak mempunyai kepentingan praktikal. Jika tiada port EXPOSE, perkhidmatan antara Kontena juga boleh mengakses satu sama lain.
Perbezaan antara expose dan publish (run -p) dalam Docker
Rekod utama di sini ialah sedikit keraguan yang saya temui baru-baru ini menggunakan docker. Kesimpulannya:
Dalam docker, apakah perbezaan dan hubungan antara docker run -p antara muka terdedah apabila memulakan baris arahan dan mendedahkan antara muka dalam dockerfile.
Penerangan khusus adalah seperti berikut:
Sebagai contoh, saya mula-mula Dedahkan port 8080 dalam Dockerfile
EXPOSE 8080
Kemudian saya membina imej ini untuk kegunaan kemudian Gunakan
docker build -t myimage - Dockerfile
Langkah seterusnya ialah menggunakan docker run untuk memulakan contoh kontena imej ini dan menerbitkan port
docker container run -d -p 8080 myimage
Inilah soalan yang saya nyatakan, kerana saya telah mengisytiharkan port Expose 8080 dalam Dockerfile. Mengapa saya masih perlu menerbitkan port ini (-p). Apakah perbezaan dan hubungan antara keduanya? Bolehkah saya terus
docker container run -d myimage
Dalam kes ini, adakah terdapat sebarang port yang terdedah?
Selepas ujian, (proses ujian diabaikan, rakan yang berminat boleh mengujinya sendiri. Malah, terdapat perbezaan penting antara keduanya, dan terdapat juga tahap korelasi tertentu
Saya menyenaraikan empat kombinasi ini di sini
A, bukan Expose mahupun run -p
B dalam Dockerfile, hanya Expose port ini dalam Dockerfile
C, manakala Expose dalam Dockerfile, dan jalankan -p
D, hanya jalankan -p
1------Untuk kes A, mulakan dalam bekas ini Perkhidmatan tidak boleh diakses oleh hos hos dan luaran rangkaian, mahupun oleh bekas pautan Ia hanya boleh digunakan di dalam bekas ini
2-------- Untuk kes B, mulakannya dalam bekas ini Perkhidmatan tidak boleh diakses oleh dunia luar docker (hos dan hos lain), tetapi boleh diakses oleh bekas pautan lain melalui bekas
pautan
3-------- Disasarkan Dalam kes C, cotnainer yang mula boleh boleh diakses oleh kedua-dua dunia luar docker dan bekas pautan
4---------Untuk kes D, sebenarnya, docker telah membuat Penukaran tersirat khas, bersamaan dengan kes C, boleh diakses oleh dunia luar atau oleh bekas pautan (ini benar kerana docker percaya bahawa kerana anda perlu membuka port
ke luar Dunia, bersamaan dengan bekas lain, pasti boleh diakses, jadi docker telah melakukan Expose automatik
Pembelajaran yang disyorkan: "tutorial video docker"
Atas ialah kandungan terperinci Apakah maksud expose dalam docker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!