7.1 Podstawy przekierowania portów (Port forwarding)
Przekierowanie portów to ważna funkcja Dockera, która pozwala aplikacjom wewnątrz kontenerów być dostępnymi na zewnątrz. Ta funkcja jest potrzebna, aby łączyć się z serwerami WWW, bazami danych lub innymi usługami uruchomionymi w kontenerach z maszyny-host lub nawet z innych sieci.
Domyślnie kontenery działają w izolowanej sieci. Aby usługa w kontenerze była dostępna, Docker przekierowuje porty kontenera na porty maszyny-host.
Do przekierowania portów używa się parametru -p
lub --publish
w poleceniu docker run
.
Składnia
docker run -p [HOST_PORT]:[CONTAINER_PORT] [OPTIONS] IMAGE [COMMAND] [ARG...]
Gdzie:
- HOST_PORT: port na maszynie-host, przez który będzie przechodził ruch.
- CONTAINER_PORT: port wewnątrz kontenera, do którego będzie przekierowywany ruch.
- OPTIONS: dodatkowe parametry do konfiguracji kontenera.
- IMAGE: obraz, z którego tworzony jest kontener.
- COMMAND: polecenie wykonywane wewnątrz kontenera.
- ARG...: argumenty dla polecenia.
Przykład podstawowego użycia
W tym przykładzie port 80 kontenera, gdzie działa serwer WWW Nginx, jest przekierowany na port 8080 maszyny-host. Po tym kroku będziesz mógł otworzyć serwer WWW w przeglądarce pod adresem http://localhost:8080.
docker run -d -p 8080:80 nginx
7.2 Inne opcje przekierowania portów
1. Wielokrotne przekierowanie portów
Docker pozwala na przekierowanie kilku portów jednocześnie. W tym celu używa się kilku opcji -p
.
Przykład
W tym przykładzie port 80 kontenera jest przekierowany na port 8080 hosta, a port 443 kontenera — na port 8443 hosta.
docker run -d -p 8080:80 -p 8443:443 nginx
2. Przekierowanie portów z określeniem adresu IP
Możesz określić konkretny adres IP, do którego zostanie przypisany przekierowany port. Jest to szczególnie przydatne, jeśli maszyna hosta ma kilka interfejsów sieciowych i trzeba ograniczyć dostęp do kontenera.
Przykład:
W tym przykładzie port 80 kontenera jest przekierowany na port 8080 tylko na interfejsie 127.0.0.1
maszyny hosta. Oznacza to, że dostęp do usługi będzie możliwy tylko z samej maszyny hosta.
docker run -d -p 127.0.0.1:8080:80 nginx
3. Przekierowanie zakresu portów
Jeśli trzeba przekierować kilka portów jednocześnie, Docker obsługuje zakresy portów.
Przykład:
W tym przykładzie porty od 7000
do 8000
kontenera są przekierowane na porty od 7000
do 8000
maszyny hosta.
docker run -d -p 7000-8000:7000-8000 someimage
7.3 Praktyczne scenariusze użycia
1. Dostęp do web-serwera
Przekierowanie portów najczęściej wykorzystuje się do zapewnienia dostępu do web-serwera uruchomionego wewnątrz kontenerów.
docker run -d -p 8080:80 nginx
Po wykonaniu tej komendy web-serwer Nginx, działający na porcie 80 kontenera, stanie się dostępny na porcie 8080 maszyny hosta.
2. Dostęp do bazy danych
Przekierowanie portów jest również wygodne do uzyskiwania dostępu do baz danych uruchomionych w kontenerach.
docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=mysecretpassword postgres
W tym przykładzie PostgreSQL, działający na porcie 5432 kontenera, będzie dostępny na porcie 5432 maszyny hosta.
3. Testowanie i rozwój
Kontenery Docker są często używane do tworzenia izolowanych środowisk testowych. Przekierowanie portów pozwala deweloperom uruchamiać i testować aplikacje tak, jakby działały w rzeczywistych warunkach.
docker run -d -p 8080:80 -p 8443:443 myapp
W tym przykładzie aplikacja jest testowana na portach 8080 i 8443, co odpowiada standardowym portom używanym w środowisku produkcyjnym.
7.4 Dodatkowe rekomendacje
1. Ochrona portów
Gdy przekierowujesz porty, pamiętaj o bezpieczeństwie. Otwarte porty mogą stać się celem ataków. Przekierowuj tylko te porty, które są naprawdę potrzebne, i korzystaj z firewalla, aby ograniczyć dostęp.
2. Firewalle i NAT
Aby zwiększyć ochronę i zarządzać ruchem, korzystaj z firewalli i Network Address Translation (NAT). Dzięki temu możesz ograniczyć dostęp do swoich usług i kontrolować połączenia sieciowe.
3. Monitoring i logi
Skonfiguruj monitoring i zbieranie logów, aby śledzić ruch na przekierowanych portach. To pomoże szybciej zauważać i reagować na podejrzane aktywności.
GO TO FULL VERSION