Computer >> Máy Tính >  >> Hệ thống >> Linux

Cách sao chép / di chuyển vùng chứa Docker sang máy chủ khác

Cách sao chép / di chuyển vùng chứa Docker sang máy chủ khác

Vì vùng chứa Docker là một hộp phần mềm nhỏ, nên có thể nói, bạn có thể sao chép và di chuyển chúng từ máy tính này sang máy tính khác. Tuy nhiên, điều này không thường được thảo luận, có thể là do các tổ chức lớn hơn thiết lập kho lưu trữ của riêng họ, nơi họ có thể tùy chỉnh hình ảnh của riêng mình và phân phối trên các máy chủ của họ khi họ thấy phù hợp. Nhưng bạn sẽ không phải gặp khó khăn khi thiết lập dòng phân phối của riêng mình nếu đôi khi bạn cần di chuyển một hoặc nhiều vùng chứa xung quanh.

Có thể bạn đã làm việc trên một phiên bản Docker trên máy tính cục bộ của mình và quyết định chuyển nó sang một máy chủ mạnh hơn. Hoặc có thể bạn chỉ muốn triển khai vùng chứa tùy chỉnh của mình trên nhiều máy tính, "sao chép và dán" nó xung quanh. Đôi khi, bạn có thể không hài lòng với một nhà cung cấp dịch vụ điện toán đám mây và muốn chuyển sang một nhà cung cấp khác. Dù trong tình huống nào, có một quy trình khá đơn giản để thực hiện việc này sẽ được trình bày chi tiết bên dưới.

Lưu hình ảnh vùng chứa từ Máy chủ nguồn

Trước tiên, không bắt buộc phải dừng vùng chứa, nhưng bạn thực sự nên làm như vậy. Bạn sẽ chụp nhanh dữ liệu trong phiên bản Docker của mình. Nếu nó đang chạy trong khi bạn thực hiện việc này, thì có khả năng nhỏ là một số tệp có thể không hoàn chỉnh trong ảnh chụp nhanh của bạn. Hãy tưởng tượng ai đó đang tải lên một tệp 500MB. Khi 250MB đã được tải lên, bạn phát hành docker commit yêu cầu. Sau đó, quá trình tải lên sẽ tiếp tục, nhưng khi bạn khôi phục hình ảnh Docker này trên một máy chủ khác, chỉ 250 MB trong số 500 MB có thể khả dụng.

Vì vậy, nếu bạn có thể, trước tiên hãy dừng phiên bản này lại.

docker stop NAME_OF_INSTANCE
Cách sao chép / di chuyển vùng chứa Docker sang máy chủ khác

Vùng chứa Docker được tạo từ một hình ảnh ban đầu, chung chung. Theo thời gian, bạn thêm các thay đổi của riêng mình vào hình ảnh cơ sở này. Các quy trình đang chạy bên trong vùng chứa cũng có thể lưu dữ liệu của chính chúng hoặc thực hiện các thay đổi khác. Để duy trì tất cả những điều này, bạn có thể chuyển trạng thái mới này sang một hình ảnh mới.

Lưu ý rằng nếu phiên bản hiện đang chạy, hành động này sẽ tạm dừng nó trong khi nội dung của nó được lưu. Nếu bạn đã thêm nhiều dữ liệu vào vùng chứa của mình, thì thao tác này sẽ mất nhiều thời gian hơn để hoàn thành. Nếu đây là sự cố, bạn có thể tránh việc tạm dừng này bằng cách nhập docker commit -p=false NAME_OF_INSTANCE mycontainerimage thay vì lệnh tiếp theo. Tuy nhiên, đừng làm điều này trừ khi thực sự cần thiết. Tỷ lệ tạo ra một hình ảnh với dữ liệu không nhất quán / không đầy đủ sẽ tăng lên trong trường hợp này.

Trong hướng dẫn này, một tên chung đã được chọn cho hình ảnh kết quả, mycontainerimage . Bạn có thể thay đổi tên này nếu bạn muốn. Nếu bạn làm như vậy, hãy nhớ thay thế nó trong tất cả các lệnh tiếp theo mà bạn gặp phải.

docker commit NAME_OF_INSTANCE mycontainerimage
Cách sao chép / di chuyển vùng chứa Docker sang máy chủ khác

Bây giờ, hãy lưu hình ảnh này vào một tệp và nén nó.

docker save mycontainerimage | gzip > mycontainerimage.tar.gz

Tiếp theo, sử dụng phương thức truyền tệp ưa thích của bạn và sao chép mycontainerimage.tar.gz tới máy chủ lưu trữ nơi bạn muốn di chuyển vùng chứa của mình.

Tải hình ảnh vùng chứa trên máy chủ đích

Sau khi bạn đăng nhập vào máy chủ lưu trữ nơi bạn đã chuyển hình ảnh, hãy nhập hình ảnh đó vào Docker.

gunzip -c mycontainerimage.tar.gz | docker load

Vì bạn chưa bao giờ khởi tạo vùng chứa này ở đây, bạn không thể khởi động nó bằng docker start chưa. Thay vào đó, hãy đưa ra cùng một lệnh mà bạn đã sử dụng trước đây, khi bạn chạy phiên bản Docker này lần đầu tiên. Sự khác biệt duy nhất bây giờ là bạn sẽ sử dụng “mycontainerimage” ở cuối thay vì bất kỳ hình ảnh nào bạn đã sử dụng trong quá khứ.

Lệnh tiếp theo chỉ là một ví dụ; không sao chép và dán cái này trừ khi nó áp dụng cho bạn. (Không có thông số đặc biệt nào được yêu cầu khi bạn chạy hình ảnh lần đầu tiên)

docker run -d --name=PICK_NAME_FOR_CONTAINER mycontainerimage

Ngược lại, sau đây là ví dụ về lệnh trong đó tham số --publish được yêu cầu chuyển tiếp cổng 80 trên máy chủ sang cổng 80 trên thùng chứa:

docker run -d --name=http-server --publish 80:80 mycontainerimage

Sau đó, bạn có thể dừng và khởi động vùng chứa này bình thường, với docker stopdocker start lệnh.

Truyền hình ảnh mà không cần tạo tệp

Đôi khi bạn có thể muốn bỏ qua việc tạo mycontainerimage.tar.gz tập tin. Có thể bạn không có đủ dung lượng ổ đĩa vì vùng chứa có nhiều dữ liệu trong đó. Bạn có thể lưu, nén, chuyển, giải nén và tải hình ảnh trên máy chủ đích trong một lệnh. Sau khi chạy docker commit lệnh được thảo luận trong phần đầu tiên, bạn có thể sử dụng lệnh này:

docker save mycontainerimage | gzip | ssh root@203.0.113.1 'gunzip | docker load'

Nó cũng sẽ hoạt động trên Windows, vì nó hiện có một ứng dụng khách SSH tích hợp sẵn (PuTTY không cần thiết nữa).

Sau đó, tiếp tục với docker run lệnh áp dụng cho tình huống của bạn.

Kết luận

docker savedocker load là một giải pháp tuyệt vời để thỉnh thoảng di chuyển các thùng chứa xung quanh. Nhưng hãy nhớ rằng, nếu bạn làm điều này thường xuyên, bạn có thể muốn thiết lập kho lưu trữ riêng của mình.

Tín dụng hình ảnh:Dịch vụ Y tế Không quân