Następna część kursu Dockera. Tym razem o przekierowaniach portów oraz o woluminach.
Wyświetlamy listę obrazów jakie mamy w naszym dockerze:
1 2 3 4 5 |
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 1e1148e4cc2c 2 weeks ago 202MB nginx latest 568c4670fa80 3 weeks ago 109MB docker/whalesay latest 6b362a9f73eb 3 years ago 247MB |
Uruchamiamy w tle NGINXa:
1 2 3 4 5 6 7 8 9 |
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES # docker run -d nginx:latest cff1324842e8b7765af4cf6d90cbf05afa061ce7e4f6624b44419e7f2542f57b # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cff1324842e8 nginx:latest "nginx -g 'daemon ..." 3 seconds ago Up 2 seconds 80/tcp angry_northcutt |
Szukamy IP uruchomionego kontenera:
1 2 3 4 |
# docker inspect angry_northcutt | grep "IPAddress" "SecondaryIPAddresses": null, "IPAddress": "172.17.0.2", "IPAddress": "172.17.0.2", |
Przeglądamy stronę uruchomioną na kontenerze nginx na adresie IP 172.17.0.2:
1 |
# elinks http://172.17.0.2 |
Serwer NGINX działa na tym adresie kontenera.
Ale na adresie localhosta serwer NGINX nie działa:
1 |
# elinsk localhost |
Zatrzymajmy nasz kontener z nginxem i wszystkie kontenery w dockerze:
1 2 3 4 5 6 7 8 9 10 |
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 48d5bf14252f nginx:latest "nginx -g 'daemon ..." 2 minutes ago Up 2 minutes 80/tcp angry_northcutt # docker stop angry_northcutt angry_northcutt # docker rm `docker ps -a -q` 48d5bf14252f 5f357e0a1a1d |
Zróbmy teraz przekierowanie aby strona uruchomiona w kontenerze była dostępna z zewnątrz. Odpowiada za to parametr -P
1 2 3 4 5 6 7 8 9 10 11 12 |
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 1e1148e4cc2c 2 weeks ago 202MB nginx latest 568c4670fa80 3 weeks ago 109MB docker/whalesay latest 6b362a9f73eb 3 years ago 247MB # docker run -d --name=MyWebserver1 -P nginx:latest 0cf60632d50c4d3ce4ecaf0742ec9053bf1784e1caaca63d70d91446d955c973 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0cf60632d50c nginx:latest "nginx -g 'daemon ..." 10 seconds ago Up 9 seconds 0.0.0.0:32768->80/tcp MyWebserver1 |
Sprawdzamy czy na porcie 32768 odezwie się NGINX
1 |
# elinks http://localhost:32768 |
Uruchomiony NGINX w kontenerze jest teraz dostępny na porcie 32768.
Informacje o przekierowaniach portów w kontenerach uzyskamy po wpisaniu komendy:
1 2 |
# docker port MyWebserver1 $CONTAINERPORT 80/tcp -> 0.0.0.0:32768 |
Zatrzymajmy nasz kontener:
1 |
# docker stop MyWebserver1 |
Teraz wybieramy jaki port zewnętrzny ma być przekierowany na konkretny port kontenera
1 2 3 4 |
# docker run -d -p 8080:80 --name=MyWebserver2 nginx:latest # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2231209b1b04 nginx:latest "nginx -g 'daemon ..." 24 seconds ago Up 24 seconds 0.0.0.0:8080->80/tcp MyWebserver2 |
Sprawdzamy czy NGINX jest dostępny na orcie 8080:
1 |
# elinks http://localhost:8080 |
Jest dostępny.
Zatrzymujemy nasz kontener:
1 2 |
# docker stop MyWebserver2 MyWebserver2 |
Uruchamianie webserwera w konkretnym katalogu w kontenerze:
1 |
# docker run -d -p 8080:80 --name=MyWebserver3 -v /mnt/data nginx:latest |
Jak jest taka potrzeba to zatrzymujemy kontener:
1 2 |
# docker stop MyWebserver3 MyWebserver3 |
Mapowanie katalogu zewnętrznego do katalogu wewn kontenera
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# pwd /media # mkdir www # cd www [www]# vim index.html <html> <head></head> <body> <hr/> To jest strona testowa <hr/> </body> </html> # docker run -d -p 8080:80 --name=MyWebserver4 -v /media/www:/usr/share/nginx/html nginx:latest |
Test:
1 |
# elinks http://localhost:8080 |
Na porcie 8080 localhosta uruchomiła się strona testowa.
Zamykamy nasz kontener i wszystkie inne w dockerze.
1 2 3 |
# docker stop MyWebserver4 MyWebserver4 # docker rm `docker ps -a -q` |