4.1 Podstawowe koncepcje publikacji portów
Publikacja portów kontenerów w Dockerze pozwala serwisom działającym wewnątrz kontenerów być dostępnymi z zewnętrznej sieci lub z hosta. To ważna część konfiguracji aplikacji wielokontenerowych, ponieważ umożliwia interakcję z serwisami, takimi jak serwery WWW, bazy danych i inne aplikacje sieciowe. W tym wykładzie omówimy, jak publikować porty kontenerów i konfigurować dostęp do serwisów.
Podstawowe koncepcje publikacji portów
- Mapowanie portów: przypisanie portu hosta do portu kontenera.
- Parametr
-p/--publish
: służy do określenia mapowania portów podczas uruchamiania kontenera. - Parametr
-P/--publish-all
: automatyczne przypisanie portów hosta dla wszystkich eksportowanych portów kontenera.
Przykład użycia parametru -p
Podczas uruchamiania kontenera możesz użyć opcji -p
do mapowania portu hosta na port kontenera. Format polecenia:
docker run -d -p <host_port>:<container_port> <image>
Przykład 1: Publikacja portu serwera WWW Nginx
Uruchomimy kontener z Nginx i opublikujemy port 80 kontenera na porcie 8080 hosta.
Teraz Nginx będzie dostępny pod adresem http://localhost:8080.
docker run -d -p 8080:80 --name mynginx nginx
Przykład 2: Publikacja wielu portów
Możesz opublikować wiele portów, podając kilka opcji -p
.
W tym przykładzie Nginx będzie dostępny przez HTTP na porcie 8080 i przez HTTPS na porcie 8443.
docker run -d -p 8080:80 -p 8443:443 --name mynginx nginx
Przykład użycia parametru -P
Parametr -P
automatycznie publikuje wszystkie porty określone w Dockerfile lub w ustawieniach kontenera, na losowe porty hosta.
Przykład:
docker run -d -P --name mynginx nginx
Aby sprawdzić, które porty zostały przypisane, użyj polecenia docker port
:
docker port mynginx
Wynik będzie wyglądał mniej więcej tak:
80/tcp -> 0.0.0.0:32768
443/tcp -> 0.0.0.0:32769
4.2 Publikacja portów w Docker Compose
Do przypisania portów w Docker Compose używaj dyrektywy ports
w pliku docker-compose.yml
.
Przykład pliku docker-compose.yml
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
- "8443:443"
Uruchom Docker Compose:
docker compose up -d
Teraz Nginx będzie dostępny pod adresami http://localhost:8080 i https://localhost:8443.
4.3 Dodatkowe parametry publikowania portów
1. Ograniczenie adresu IP
Możesz ograniczyć dostęp do portu kontenera, podając adres IP hosta.
Przykład:
W tym przykładzie Nginx będzie dostępny tylko z lokalnego hosta pod adresem http://127.0.0.1:8080.
docker run -d -p 127.0.0.1:8080:80 --name mynginx nginx
2. Używanie zakresu portów
Możesz określić zakres portów do publikowania.
Przykład:
docker run -d -p 8080-8081:80-81 --name mynginx nginx
Praktyczne porady:
- Publikowanie tylko niezbędnych portów: Publikuj tylko te porty, które są naprawdę potrzebne do uzyskania dostępu do usług, aby zmniejszyć potencjalne luki w zabezpieczeniach.
- Używanie zapory sieciowej: Skonfiguruj zaporę sieciową, aby ograniczyć dostęp do opublikowanych portów tylko z zaufanych adresów IP.
- Monitorowanie i logowanie: Używaj narzędzi monitorowania i logowania do śledzenia dostępu do opublikowanych portów i wykrywania podejrzanej aktywności.
GO TO FULL VERSION