opened image

როგორ დააკოპიროთ მონაცემები ჰოსტიდან Docker-ში და Docker-დან ჰოსტზე

როგორც ხედავთ წინა სტატიებიდან, Docker-ი შეიძლება გამოიყენება სხვადასხვა აპლიკაციების დაყენებისა და გაშვების გამოსაყენებლად.

მაგრამ დანარჩენია შემთხვევა, როდესაც გსურთ ფაილების გადაგზავნა ჰოსტ მანათიდან Docker კონტეინერში და კონტეინერიდან ჰოსტში.

ამ სტატიაში ჩვენ შეგვიძლია ნახოთ, როგორ შეგვიძლია ეს გაკეთება.

 


ქვემოთ მოყვანილი ბრძანებები ითვლება, რომ Docker-ი უკვე დაყენებულია თქვენს კომპიუტერზე. თუ არ გაქვთ, შეგიძლიათ გაიგოთ, როგორ შეიძლება ეს გაკეთება სტატიებში: "როგორ დავაყენოთ Docker Centos 7-ზე" ან "როგორ დავაყენოთ Docker Ubuntu 20.04-ზე".
 

ფაილების კოპირება ჰოსტ სისტემიდან Docker კონტეინერში.


ფაილების კოპირებისთვის და კონტეინერიდან გადაგზავნისთვის, ჩვენ გამოვიყენებთ docker cp ინსტრუმენტს.

ინსტრუმენტი docker cp კოპირებს წყაროს შიგთავსს მის მისამართზე.

შეგიძლიათ კოპირება კონტეინერის ფაილური სისტემიდან ლოკალურ კომპიუტერზე ან პირიქით, ლოკალურ ფაილურ სისტემაში კონტეინერში.


მაგალითი: ლოკალური ჰოსტი -> კონტეინერი

docker cp <ფაილის მისამართი ჰოსტ მანათზე> containerid:<ფაილის მისამართი კონტეინერში>


მაგალითი: კონტეინერი -> ლოკალური ჰოსტი

 

docker cp containerid:<ფაილის მისამართი ჰოსტ მანათზე> <ფაილის მისამართი ჰოსტ მანათზე>


მოდით ნახოთ ეს მოქმედება მარტივ ნამდვილად ნგავსებულ მაგალითში Docker Nginx საბაზისო სანახავად.

შეგვიძლია გამოვიყენოთ შემდეგი ბრძანება:

 

 

docker run -d --name nginx_copy nginx

 


სადაც: 
nginx_copy - კონტეინერის სახელი (შეგიძლიათ გამოიყენოთ ნებისმიერი)
nginx - Docker Hub-ზე არსებული საბაზისო სახელი, რომელსაც გამოვიყენებთ


თუ ამ კონტეინერს არ გაქვთ სერვერზე, დაელოდეთ, სანამ ის ჩამოიტვირთება. 


 

ახლა შევიდეთ კონტეინერში, რათა ნახოთ/გაგვეცანით სად ან რომელ ფაილს კოპირაცია გვინდა.

 

 

docker exec -it nginx_copy /bin/bash

 


ახლა გამოვიტანოთ ტერმინალში /etc/nginx საქაღალდეში მდგომი ფაილების შიგთავსი

 

 

ls -la  /etc/nginx/

 


მაგალითად, თუ ჩვენ გვინდა კოპირება nginx.conf კონფიგურაციული ფაილი და ჩვენ ვიცით, რომ ის მდებარეობს /etc/nginx/nginx.conf მდებარე მისამართზე. ამისთვის შემოვიტანოთ შემდეგი ბრძანება:

 

 

docker cp nginx_copy:/etc/nginx/nginx.conf ~/nginx.conf

 


სადაც:

nginx_copy - კონტეინერი, რომელიდანაც კოპირებთ;
/etc/nginx/nginx.conf - ფაილის მისამართი, რომელსაც გვინდა კოპირაცია;
~/nginx.conf - მიმართვა და ფაილის სახელი (შეგიძლიათ მიანიჭოთ სხვა სახელი)

ახლა ნახეთ შედეგი:

 

 

 

ls -la

 



როგორც ხედავთ, ფაილი წარმოდგენილია ჰოსტზე. ახლა შეგვიძლია მისი შეცვლა, შემდეგ კი ატვირთოთ უკან.

 

 

როგორ დავაკოპიროთ ფაილი კონტეინერში.


თუ ჩვენ გვინდა ახალი ფაილის კოპირება დაცული nginx.conf ფაილის კონტეინერში, შეგვიძლია გამოვიყენოთ შემდეგი კონსტრუქცია:

 

 

 

 

docker cp ~/nginx.conf nginx_copy:/etc/nginx/nginx.conf_cp

 


თუ ყველაფერი კარგად შეიყვანით, ჩვენ შეგვიძლია ამ ფაილს ნახოთ კონტეინერში.

შევიდეთ კონტეინერში:

 

 

docker exec -it nginx_copy /bin/bash

 


და გამოვიტანოთ /etc/nginx დირექტორიის სია:

 

 

ls -la

 



 

როგორც ხედავთ, ახალი ფაილი კოპირირდა კონტეინერში. 

იგივე პრინციპით, შეგვიძლია მოვატანოთ მონაცემები კონტეინერიდან ჰოსტზე და პირიქით, ჰოსტზე კონტეინერში. 

 

ჩვენ ასევე გირჩევთ გაითვალისწინოთ სხვა სასარგებლო სტატიები: