Udostępnianie usług sieciowych w Dockerze

Docker średnio zaawansowany

Mike Metzger

Data Engineering Consultant

Usługi sieciowe

  • Usługi sieciowe nasłuchują na określonym porcie
  • Tylko jeden program może nasłuchiwać na danej kombinacji IP:port w tym samym czasie
    • Na przykład 10.1.2.3:80 oznacza nasłuchiwanie na 10.1.2.3 na porcie 80.
  • Rozważmy debugowanie różnych wersji serwera WWW nasłuchującego na porcie 80
    • Można uruchomić tylko jedną instancję aplikacji, skoro nasłuchuje ona wyłącznie na tym porcie
Docker średnio zaawansowany

Usługi w kontenerach

  • Umieszczenie aplikacji w kontenerze pozwala każdemu kontenerowi nasłuchiwać na tym porcie (kombinacja IP:port jest różna, bo każdy kontener ma inny adres IP)
  • Można uruchomić wiele kopii kontenerów jednocześnie
  • Jak jednak połączyć się z aplikacją w kontenerze z poziomu hosta?
Docker średnio zaawansowany

Mapowanie portów

  • Rozwiązaniem jest mapowanie portów, zwane też przekierowaniem lub translacją portów
  • Mapowanie portów przekazuje połączenie z danego IP:port do innego IP:port
  • W tym przypadku można zmapować wolny port hosta na port 80 kontenera (lub kontenerów)
  • Silnik Docker może obsłużyć to automatycznie, jeśli zostanie odpowiednio skonfigurowany

Przykład mapowania portów

Docker średnio zaawansowany

Włączanie mapowania portów

  • Aby włączyć mapowanie portów dla kontenera, należy użyć polecenia docker run z flagą -p
  • -p <port hosta>:<port kontenera>
  • -p 5501:80
  • Można podać wiele flag -p dla różnych portów
repl@host:~$ docker run -p 5501:80 nginx

repl@host:~$ docker ps -a
CONTAINER ID IMAGE ... PORTS NAMES 84266724ff47 nginx ... 0.0.0.0:5501->80/tcp, :::5501->80/tcp coiled_elgamal
Docker średnio zaawansowany

Czas na ćwiczenia!

Docker średnio zaawansowany

Preparing Video For Download...