Docker ile 1'den fazla bağlantı noktasını nasıl gösterebilirim?


460

Bu yüzden makinenin arayüzüne maruz kalması gereken 3 portum var. Bunu bir Docker konteyneri ile yapmak mümkün müdür?


1
Birden çok bağlantı noktasını yeniden yönlendirmek mümkün. Bkz. Doco
Mark O'Connor

Yanıtlar:


718

Sadece bir bağlantı noktasını ortaya çıkarmak için yapmanız gereken budur:

docker run -p <host_port>:<container_port>

Birden çok bağlantı noktasını göstermek için birden çok -pbağımsız değişken sağlamanız yeterlidir :

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

4
Teşekkürler! Bunu dokümanlarda bulabilirsiniz: docs.docker.com/userguide/dockerlinks/… nerede diyorNote: The -p flag can be used multiple times to configure multiple ports.
Ted M. Young

Bir yapılandırma dosyasındaki bağlantı noktalarını belirtmenin bir yolu var mı? Örneğin --env-file?
Giovanni Bitliner

8
Hala bu kadar çok yeni değilim, ama oldukça emin bir Dockerfile limanları tanımlayacak olduğum @GiovanniBitliner MARUZ ardından gerçekleştirmek docker run -Potomatik Dockerfile içinde MARUZ ile tanımlanan tüm portları açığa hangi (büyük harf dikkat edin)
Ted Avery

Birden çok bağlantı noktası bir systemd hizmet dosyası altında başlatma işlemini durdurabilir mi?
Lanti

1
Bence buradaki doğru terim publishdeğil expose.
tgogos

291

Aşama 1

İçinde Dockerfile, fiili EXPOSEbirden fazla bağlantı noktasını ortaya çıkarmak için kullanabilirsiniz .
Örneğin

EXPOSE 3000 80 443 22

Adım 2

Daha sonra yukarıdakilere dayanarak yeni bir görüntü oluşturmak istersiniz Dockerfile.
Örneğin

docker build -t foo:tag .

Aşama 3

Sonra kullanabilirsiniz -pyukarıda tanımlandığı gibi, konteyner limanı ile ev sahibi portu eşleştirmek için EXPOSEbir Dockerfile.
Örneğin

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

Bir dizi sürekli bağlantı noktasını göstermek isterseniz, docker'ı şu şekilde çalıştırabilirsiniz:

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

18
EXPOSE, yalnızca yayımlanan bağlantı noktaları için olan belgelerdir ve yalnızca bağlantı için yararlıdır. -P kullanılarak bağlantı noktalarının tam listesi bulunabilir ve bunlar otomatik olarak ana bilgisayardaki kullanılabilir bir bağlantı noktasına eşlenir.
Arun Gupta

4
Pozlamaya gerek yoktur. İlk adımı kaldırın veya isteğe bağlı yapın.
AmirHossein

27

Eğer kullanırsanız docker-compose.ymldosyayı:

services:
    varnish:
        ports:
            - 80
            - 6081

Ana bilgisayar / ağ bağlantı noktasını da belirtebilirsiniz

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

0

Bir görüntüden kapsayıcı oluşturuyorsanız ve birden çok bağlantı noktasını açığa çıkarmak (yayınlamak istemiyorsanız) aşağıdaki komutu kullanabilirsiniz:

docker create --name container name--expose 7000 --expose 7001image name

Şimdi, bu kapsayıcıyı docker startkomutu kullanarak başlattığınızda , yukarıdaki yapılandırılmış bağlantı noktaları görünecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.