Wprowadzenie
Zazwyczaj kontenery Docker działają tylko przez określony czas – czas potrzebny na wykonanie polecenia. Dane dostępne wewnątrz kontenera mogą być dostępne tylko z poziomu kontenera podczas jego działania.
Wolumeny Docker mogą być używane do łatwego dostępu do plików i przechowywania ich przez dłuższy czas. Na przykład, jeśli masz serwer WWW Nginx i chcesz przechowywać logi do celów audytu, możesz użyć wolumenu Docker do przechowywania logów z kontenera na maszynie hosta.
W tym samouczku dowiesz się, jak udostępniać dane między wnętrzem kontenera Docker a maszyną hosta.
Wymagania wstępne
Do tego samouczka wymagane są następujące elementy:
- Ubuntu 18.04 Server: Możesz łatwo utworzyć nowy serwer CloudSigma z obrazem Ubuntu 18.04, postępując zgodnie z naszym pomocnym samouczkiem.
- Docker – Możesz zainstalować Docker, korzystając z naszego samouczka dotyczącego konfiguracji Docker na Ubuntu i zapoznać się z nim.
Krok 1 – Montowanie wolumenu typu Bind Mount
Możesz utworzyć katalog o nazwie logs w katalogu domowym bieżącego użytkownika i zamontować go jako bind-mount do /var/log/nginx w kontenerze Nginx za pomocą następującego polecenia:
|
1 |
docker run --name=nginx -d -v ~/logs:/var/log/nginx -p 5000:80 nginx |
Oto bardziej szczegółowe informacje o tym poleceniu:
--name=nginxnadaje nazwę kontenerowi w celu łatwego odwoływania się do niego.-dargument odłącza proces i uruchamia go w tle.-v hostPath:containerPathmapuje ścieżkę hosta i ścieżkę kontenera w celu zamontowania typu bind.-p hostPort:containerPortargument mapuje port kontenera na port hosta.nginxna końcu linii to nazwa obrazu, który powinien zostać użyty do uruchomienia kontenera.
Krok 2 – Dostęp do danych na hoście
Teraz masz kontener Nginx uruchomiony na swoim serwerze, a port 5000 Twojego serwera mapuje się na port 80 serwera Nginx. Możesz otworzyć ten port w przeglądarce internetowej pod następującym adresem URL:
|
1 |
http://serverIP:5000/ |

W katalogu ~/logs zobaczysz pliki access.log i error.log. Możesz wyświetlić logi za pomocą polecenia cat:
|
1 |
cat access.log |
|
1 2 3 |
Wyjście: xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET /favicon.ico HTTP/1.1" 404 556 "http://xx.xxx.xxx.xxx:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" |
Możesz również sprawdzić katalog logów ~/logs na swojej maszynie hosta i znaleźć plik logów Nginx. Co więcej, jeśli dokonasz jakichkolwiek zmian w folderze logs, zostaną one również odzwierciedlone w folderze kontenera /var/log/nginx.
Podsumowanie
W tym samouczku dowiedziałeś się, jak udostępniać dane między wnętrzem kontenera Docker a maszyną hosta. Jest to niezbędne w środowiskach programistycznych, gdzie analiza logów jest konieczna do debugowania.
Więcej zasobów dotyczących platformy Docker na naszym blogu, można znaleźć poniżej:
- Jak zainstalować & obsługiwać Docker na Ubuntu w chmurze publicznej
- Instalacja i konfiguracja Docker na CentOS 7
- Czyszczenie zasobów Docker – obrazy, kontenery i wolumeny
- Jak uruchomić Docker na CloudSigma (z CloudInit) Zaktualizowano
Miłej pracy!
Komentarze
Brak komentarzy. Bądź pierwszy.