Backup and Recovery Docker Containers
Backup and Recovery Docker Containers
Backup và Recovery Docker Containers
Mục lục
Nội dung
-
Nội dung của bài viết này sẽ nói về cách thực hiện backup và recovery Docker containers.
-
Để hiểu về quá trình backup và recovery, đầu tiên cần phải hiểu về sự khác nhau giữa Docker image và Docker containers:
-
Docker image là template để tạo ra các container. Tức là các container được chạy từ các images này.
-
Docker containers là một biểu hiện cụ thể được tạo ra từ images.
-
-
Nội dung của bài viết sẽ thực hiện backup container và
pushlên Docker Hub thay vì lưu container thành một tarball. Vì vậy, yêu cầu đã có một tài khoản người dùng tại Docker Hub. Có thể đăng ký tài khoản tại Docker HubTruy cập vào trang
hub.docker.com -
1. Docker containers backup
-
Khi cần backup Docker containers, chúng ta sẽ
committrạng thái hiện tại của containers và sau đó sẽ thực hiện lưu nó giống như một Docker image. Giả sử, ta có thông tin về containers như sau:# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dbeba4b48741 nginx "nginx -g 'daemon of…" 9 minutes ago Up 9 minutes 80/tcp docker-nginx -
Từ ouput trên, ta có thể thấy Docker Host đang có một container tên là
docker-nginxđang chạy vớicontainer idlàdbeba4b48741. Bây giờ, chúng ta cần sử dụng câu lệnhdocker commitđểsnapshotlại trạng thái hiện tại của container với câu lệnh như sau:docker commit -p dbeba4b48741 username/docker-nginxtrong đó:
-pcó ý nghĩa sẽ tạm dừng container trong khi đang commit.usernamelà thông tin về tên người dùng sử dụng để đăng nhập vào Docker Hubdocker-nginxlà tên của repository của image được tạo ra. Mặc định repository sẽ được gắn tag làlatest. Để thực hiểnpushimage lênDocker Hub, ta cần phải đặt tên của image kèm theousernamegiống như bên trên.
kết quả sẽ hiển thị tương tự như sau:
sha256:c3731be100382b261fce742035ec3e02d95145a468bb3e9d028fff599aa6ecab -
Sau khi thực hiện câu lệnh trên, ta có thể kiểm tra kết quả với câu lệnh như sau:
docker imageskết quả sẽ hiển thị tương tự như sau:
REPOSITORY TAG IMAGE ID CREATED SIZE username/docker-nginx latest c3731be10038 4 minutes ago 108MB -
Ngay lúc này, container được backup đã được lưu lại như một image tại Docker host để có thể triển khai một cách nhanh chóng. Nếu chúng ta muốn triển khai một image của container backup trên một Docker host khác. Ta có thể
pushnó lên một private repository có sẵn của Docker. Để thực hiện, ta cần phải đăng nhập vào Docker Hub với thông tin củaUsername/ Passwordtương ứng:docker loginsau khi đăng nhập thành công, sẽ nhận được thông báo:
Login Succeeded -
Sau khi đã thực hiện
commitcontainer, ta có thể tiến hànhpushimage được tạo ra với câu lệnh như sau:docker push username/docker-nginxkết quả sẽ hiển thị tương tự như sau:
The push refers to repository [docker.io/reministry/docker-nginx] 5262f3ce40c4: Pushed a103d141fc98: Pushed 73e2bd445514: Pushed 2ec5c0a4cb57: Pushed latest: digest: sha256:c51c0d1a8a876851515673458b02edacc074eaafd3e5268298becac2c9ab8998 size: 1155 -
Ta có thể kiểm tra kết quả bằng việc đi đến trang web Docker Hub, thực hiện đăng nhập với tài khoản người dùng đã có trước đó.
-
Ta cũng có thể backup containers theo dạng tarball và di chuyển nó đến một Docker Host khác để triển khai với câu lệnh như sau:
docker save docker-nginx -o docker-nginx.tarkết quả, sẽ có một file
docker-nginx.tarđược tạo ra trong thư mục chạy câu lệnh.
-
-
2. Docker containers recovery
-
Để thực hiện recovery từ một tarball file image trước đó đã tạo. Ta có thể sử dụng câu lệnh sau:
docker load -i docker-nginx.tartrong đó:
-idùng để khai báo luồng đọc filedocker-nginx.tarlà đường dẫn đến tarball file.
-
Để thực hiện recovery từ một image trên Docker Hub. Ta chỉ cần thực hiện sử dụng câu lệnh sau:
docker pull username/docker-nginx
-