Jak widzieliśmy z poprzednich artykułów, Docker może ułatwić wdrażanie różnych aplikacji i ich uruchamianie.
Ale czasami musisz przesyłać pliki z maszyny hosta do kontenera Docker i z kontenera na hosta.
W tym artykule dowiemy się, jak to zrobić.
Poniższe polecenia zakładają, że Docker jest już zainstalowany. Jeśli nie, możesz dowiedzieć się, jak to zrobić w artykułach: "Jak zainstalować Dockera na Centos 7" lub "Jak zainstalować Dockera na Ubuntu 20.04".
Kopiowanie plików z systemu hosta do kontenera Docker.
Aby skopiować do i z Docker, użyjemy narzędzia docker cp.
Narzędzie docker cp kopiuje zawartość źródła do miejsca docelowego.
Możesz kopiować z systemu plików kontenera na komputer lokalny lub odwrotnie, z lokalnego systemu plików do kontenera.
Przykład: Lokalny host -> Kontener
docker cp <ścieżka do pliku na maszynie hosta> containerid:<ścieżka do pliku w kontenerze>
Przykład: Kontener -> Lokalny host
docker cp containerid:<ścieżka do pliku na maszynie hosta> <ścieżka do pliku na maszynie hosta>
Zobaczmy to w akcji na prostym przykładzie obrazu Docker Nginx.
Możemy użyć następującego polecenia:
docker run -d --name nginx_copy nginx
gdzie:
nginx_copy - nazwa kontenera (możesz użyć dowolnej)
nginx - nazwa obrazu na Docker Hub, który będziemy używać
Jeśli nie masz tego kontenera na serwerze, poczekaj, aż zostanie pobrany.
Teraz wejdźmy do kontenera, aby zobaczyć/gdzie skopiować plik.
docker exec -it nginx_copy /bin/bash
Teraz wyświetl zawartość folderu /etc/nginx w terminalu
ls -la /etc/nginx/
Na przykład, chcemy skopiować plik konfiguracyjny nginx.conf i wiemy, że znajduje się pod ścieżką /etc/nginx/nginx.conf. Wprowadź następujące polecenie:
docker cp nginx_copy:/etc/nginx/nginx.conf ~/nginx.conf
Gdzie:
nginx_copy - kontener, z którego kopiujemy;
/etc/nginx/nginx.conf - ścieżka do pliku, który chcemy skopiować;
~/nginx.conf - miejsce docelowe i nazwa pliku (nazwę pliku można zmienić)
Teraz zobaczmy wynik:
ls -la
Jak widać, plik został pomyślnie skopiowany na hosta. Teraz możemy go zmienić, a następnie ponownie go załadować.
Jak skopiować plik do kontenera.
Załóżmy teraz, że chcemy skopiować zmieniony plik nginx.conf z powrotem do kontenera. Możemy skorzystać z następującej konstrukcji:
docker cp ~/nginx.conf nginx_copy:/etc/nginx/nginx.conf_cp
Jeśli wszystko zostało wprowadzone poprawnie, będziemy mogli zobaczyć ten plik w kontenerze.
Wejdźmy do kontenera:
docker exec -it nginx_copy /bin/bash
I wyświetl listę katalogu /etc/nginx:
ls -la
Jak możemy zobaczyć, nowy plik został skopiowany do wnętrza kontenera.
Według tego samego zasady można przenosić dane z kontenera na hosta i odwrotnie.
Sugerujemy również rozważenie innych przydatnych artykułów: