Sau một thời gian làm quen với Docker, mình đã nắm được các lệnh căn bản của Docker nên ít khi truy cập vào Portainer để quản lý container. Hôm nay truy cập lại thì thấy Portainer thông báo đã có phiên bản mới: A new version is available.
Nhân tiện ngồi nâng cấp Portainer lên phiên bản mới nhất, mình chia sẻ luôn hướng dẫn lên blog. Có lẽ sẽ giúp ích cho nhiều bạn mới làm quen với Docker.
Cập nhật ứng dụng khởi tạo bằng Docker-Compose
Với ứng dụng Portainer hiện tại, mình khởi tạo nó bằng cách sử dụng Docker-Compose
services:
portainer:
image: portainer/portainer-ce:alpine
container_name: portainer
command: -H unix:///var/run/docker.sock
ports:
- "9000:9000"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "portainer_data:/data"
restart: always
volumes:
portainer_data:
Để cập nhật lên bản mới nhất, đầu tiên cần kéo bản Docker image mới nhất về máy bằng lệnh sau. Chú ý: cần phải truy cập vào thư mục đang chứa file docker-compose.yml
của ứng dụng trước khi nhập lệnh
docker-compose pull
Khởi tạo lại container mới dựa trên image vừa tải. Mình bổ sung thêm hậu tố --remove-orphans
để loại bỏ các container không còn sử dụng.
docker-compose up -d --remove-orphans
Nhập thêm lệnh sau để xóa image cũ không còn sử dụng nữa.
docker image prune
Truy cập lại Portainer, ứng dụng sẽ được cập nhật lên phiên bản mới nhất.
Cập nhật Ứng dụng khởi tạo bằng docker run
Nếu bạn chạy ứng dụng trực tiếp thông qua lệnh docker run
, cách làm sẽ hơi khác xíu. Đầu tiên, cần kéo image mới về bằng lệnh sau
docker pull portainer/portainer-ce:alpine
Thay thế portainer/portainer-ce:alpine
bằng tên Docker image tương ứng của ứng dụng bạn cần cập nhật.
Kiểm tra ID của ứng dụng đang hoạt động bằng lệnh
docker ps
Theo kết quả trả về, Container ID của Portainer là a3ca0e0f360b
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a3ca0e0f360b portainer/portainer-ce:alpine "/portainer -H unix:…" 2 days ago Up 30 hours 8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp portainer
5e963e0c4588 jc21/nginx-proxy-manager:latest "/init" 5 weeks ago Up 30 hours 0.0.0.0:80-81->80-81/tcp, :::80-81->80-81/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginxproxymanager_app_1
641c6af1efd7 guacamole/guacamole "/opt/guacamole/bin/…" 2 months ago Up 30 hours 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp guacamole_compose
9869abf6ba12 guacamole/guacd "/bin/sh -c '/usr/lo…" 2 months ago Up 30 hours (healthy) 4822/tcp guacd_compose
5a0ceb014be9 postgres:13.4 "docker-entrypoint.s…" 2 months ago Up 30 hours 5432/tcp postgres_guacamole_compose
Tạm ngưng và xóa container đang chạy
sudo docker stop a3ca0e0f360b
sudo docker rm a3ca0e0f360b
Khởi tạo lại container mới cho ứng dụng
sudo docker run --name=[container_name] [options] [docker_image]
Với Portainer, lệnh khởi tạo sẽ như sau
docker run -d -p 8000:8000 -p 9443:9443 --name portainer
--restart=always
-v /var/run/docker.sock:/var/run/docker.sock
-v portainer_data:/data
portainer/portainer-ce:alpine
Vậy là xong!