შესვლა
    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-ში და Docker-დან ჰოსტზე

     

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

     

     

    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
    

     


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

     

     

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


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

     

     

     

     

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

     


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

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

     

     

    docker exec -it nginx_copy /bin/bash
    

     


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

     

     

    ls -la
    

     


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

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

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