1. Rancher là gì?
Rancher là một công cụ miễn phí, có giao diện nền web để quản lý và xây dựng Kubernetes Cluster.
2. Cài đặt Rancher
Việc cài đặt Rancher khá đơn giản, các bạn chỉ việc ssh vào server có cài sẵn docker và chạy lệnh:
docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
--privileged \
--name rancher \
rancher/rancher:<RANCHER_VERSION_TAG>
Tùy chọn –privileged sẽ cung cấp các đặc quyền mở rộng cho vùng chứa, cho phép vùng chứa tự động tạo volume và mount dữ liệu.
3. Backup data Rancher
Đầu tiên, chúng ta cần stop conatiner hiện tại
docker stop <CURRENT_CONTAINER_ID>
Tạo một volume từ container hiện tại
docker create --volumes-from <CURRENT_CONTAINER_ID> \
--name rancher-data rancher/rancher:<CURRENT_CONTAINER_TAG>
Export dữ liệu backup ra file để khôi phục trong trường hợp upgrade có lỗi
docker run --rm --volumes-from rancher-data \
-v $PWD:/backup alpine \
tar zcvf /backup/rancher-data-backup.tar.gz /var/lib/rancher
4. Upgrade Rancher
Pull image của version Rancher mà bạn muốn nâng cấp
docker pull rancher/rancher:<NEW_RANCHER_VERSION_TAG>
Run Rancher mới
docker run -d --volumes-from rancher-data \
--restart=unless-stopped \
-p 80:80 -p 443:443 \
--privileged \
--name rancher-new \
rancher/rancher:<NEW_RANCHER_VERSION_TAG>
Các bạn login vào Rancher và xác minh việc Rancher đã upgrade thành công hay chưa bằng cách nhìn vào version phía dưới bên trái cửa sổ trình duyệt.

Xóa container cũ trước đó, nếu không container cũ có thể restart khi server reboot.
5. Restore Rancher
Nếu việc update Rancher gặp lỗi, thì các bạn có thể restore lại từ file nén vừa export ở bước 3. Sau đây, mình sẽ hướng dẫn các bạn restore lại từ file
Tạo mới một container
docker create --restart=unless-stopped \
-p 80:80 -p 443:443 \
--privileged \
--name rancher \
rancher/rancher:<RANCHER_VERSION_TAG>
Cách 1: Giải nén và copy thủ công
Đầu tiên các bạn giải nén file backup, sau khi giải nén các bạn sẽ được thư mục var.
tar -xvf rancher-data-backup.tar.gz
Gõ docker inspect <RANCHER_CONTAINER_ID> để xem đường dẫn của volume có “Destination”: “/var/lib/kubelet”, các bạn copy đường dẫn “Source” của volume này

Copy nội dung của thư mục var vừa giải nén vào đường dẫn Source bằng lệnh (\cp để accept all overwrite)
\cp -a ./var/lib/rancher/. /data/docker/volumes/02fe9c281c9dd5165179cafbfe1ca94c217eaed2bed7999e8f10e9953a4f62ae/_data/
Sau đó, start container vừa tạo bằng lệnh và vào trong login của Rancher để kiểm tra
docker start <RANCHER_CONTAINER_ID>
Cách 2: Chạy lệnh
docker run --volumes-from <RANCHER_CONTAINER_ID> -v $PWD:/backup \
busybox sh -c "rm /var/lib/rancher/* -rf && \
tar pzxvf /backup/rancher-data-backup.tar.gz"
Sau đó, start container vừa tạo bằng lệnh và vào trong login của Rancher để kiểm tra
docker start <RANCHER_CONTAINER_ID>
Thanks!