opened image

Jak skopiować dane z hosta do Docker i z Docker na hosta

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: