Bagaimana saya bisa mengekspos lebih dari 1 port dengan Docker?


Jawaban:


716

Untuk mengekspos hanya satu port, inilah yang perlu Anda lakukan:

docker run -p <host_port>:<container_port>

Untuk mengekspos banyak port, cukup sediakan beberapa -pargumen:

docker run -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>

4
Terima kasih! Temukan ini di dokumen di sini: docs.docker.com/userguide/dockerlinks/… di mana dikatakanNote: The -p flag can be used multiple times to configure multiple ports.
Ted M. Young

Apakah ada cara untuk menentukan port dalam file konfigurasi? Misalnya menggunakan opsi --env-file?
Giovanni Bitliner

8
@GiovanniBitliner Saya masih cukup baru dalam hal ini, tapi saya cukup yakin Anda akan mendefinisikan port di Dockerfile dengan EXPOSE , kemudian melakukan docker run -P(perhatikan huruf besar) yang secara otomatis mengekspos semua port yang didefinisikan dengan EXPOSE di Dockerfile
Ted Avery

Beberapa port dapat menghentikan proses init di bawah file layanan systemd?
Lanti

1
Saya pikir istilah yang tepat di sini publishbukan expose.
tgogos

290

Langkah 1

Di Anda Dockerfile, Anda dapat menggunakan kata kerja EXPOSEuntuk mengekspos beberapa port.
misalnya

EXPOSE 3000 80 443 22

Langkah 2

Anda kemudian ingin membangun gambar baru berdasarkan di atas Dockerfile.
misalnya

docker build -t foo:tag .

Step3

Kemudian Anda dapat menggunakan -puntuk memetakan port host dengan pelabuhan kontainer, sebagaimana didefinisikan dalam di atas EXPOSEdari Dockerfile.
misalnya

docker run -p 3001:3000 -p 23:22

Jika Anda ingin mengekspos berbagai port berkelanjutan, Anda dapat menjalankan buruh pelabuhan seperti ini:

docker run -it -p 7100-7120:7100-7120/tcp 

17
EXPOSE hanya dokumentasi untuk port yang dipublikasikan dan berguna untuk menghubungkan saja. Daftar lengkap port dapat ditemukan menggunakan -P dan mereka akan secara otomatis dipetakan ke port yang tersedia di host.
Arun Gupta

4
Paparan tidak diperlukan. Hapus langkah pertama atau jadikan opsional.
AmirHossein

27

jika Anda menggunakan docker-compose.ymlfile:

services:
    varnish:
        ports:
            - 80
            - 6081

Anda juga dapat menentukan port host / jaringan

varnish:
    ports:
        - 80:80
        - 6081:6081

0

Jika Anda membuat wadah dari gambar dan ingin mengekspos beberapa port (tidak mempublikasikan) Anda dapat menggunakan perintah berikut:

buruh pelabuhan membuat --name container name--expose 7000 --expose 7001image name

Sekarang, ketika Anda memulai wadah ini menggunakan docker startperintah, port yang dikonfigurasi di atas akan terbuka.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.