1. Tổng quan.
Hướng dẫn này cung cấp hướng dẫn cài đặt và gỡ cài đặt Docker Engine trên hệ điều hành Debian. Docker Engine là một nền tảng ứng dụng dựa trên container cho việc triển khai và quản lý các ứng dụng trong môi trường containerized. Hướng dẫn này tập trung vào việc cài đặt Docker Engine trên Debian bằng cách sử dụng kho lưu trữ Apt của Docker và cách thao tác liên quan như nâng cấp và gỡ cài đặt.
Hướng dẫn này cũng đã trình bày các bước cụ thể từ việc chuẩn bị hệ thống, cài đặt các gói phần mềm liên quan, thiết lập kho lưu trữ Apt của Docker, cài đặt Docker Engine và kiểm tra cài đặt. Nó cũng đề cập đến việc cài đặt các phiên bản thử nghiệm của Docker và cách gỡ cài đặt Docker Engine cùng với việc làm sạch dữ liệu Docker liên quan.
Debian là một hệ điều hành Linux phổ biến và được sử dụng rộng rãi trong nhiều ứng dụng và môi trường khác nhau. Ví dụ như Proxmox Virtual Environment (Proxmox VE), nó là một trong những ứng dụng nổi tiếng chạy trên nền Debian. Nó là một nền tảng ảo hóa dựa trên KVM và LXC cho việc quản lý máy ảo và container.
2. Yêu cầu cơ bản.
- Nếu bạn sử dụng ufw hoặc firewalld để quản lý tường lửa, lưu ý rằng khi bạn mở cổng của container bằng Docker, các cổng này sẽ không tuân theo các quy tắc tường lửa của bạn. Để biết thêm thông tin, bạn có thể tham khảo về Docker và ufw.
- Để cài đặt Docker Engine, bạn cần phiên bản 64-bit của một trong những phiên bản Debian sau đây:
- Debian Bookworm 12 (bản ổn định)
- Debian Bullseye 11 (bản cũ)
- Docker Engine cho Debian tương thích với các kiến trúc x86_64 (hoặc amd64), armhf, arm64 và ppc64le (ppc64el).
3. Gỡ cài đặt phiên bản cũ.
- Trước khi cài đặt Docker Engine, bạn phải đảm bảo rằng tất cả các gói tương thích khác đã được gỡ bỏ. Các bản phân phối cung cấp các gói Docker không chính thức trong kho của họ. Bạn cần gỡ bỏ các gói này trước khi cài đặt phiên bản chính thức của Docker Engine.
- Các gói không chính thức cần gỡ bỏ là: docker.io, docker-compose, docker-doc, podman-docker.
- Ngoài ra, Docker Engine phụ thuộc vào containerd và runc. Docker Engine gói cả hai phần mềm này thành một gói duy nhất: containerd.io. Nếu bạn đã cài đặt containerd hoặc runc trước đây, bạn cũng cần gỡ bỏ chúng để tránh xung đột với phiên bản được đóng gói cùng Docker Engine.
- Chạy lệnh sau để gỡ bỏ tất cả các gói tương thích:
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
4. Cài đặt Docker Engine.
- Có nhiều cách để cài đặt Docker Engine, tùy thuộc vào nhu cầu của bạn.
- Docker Engine được bao gồm trong Docker Desktop for Linux, đây là cách dễ dàng và nhanh nhất để bắt đầu.
- Cài đặt Docker Engine từ kho Apt của Docker.
- Cài đặt thủ công và quản lý cập nhật thủ công.
- Sử dụng script. Chỉ nên được đề xuất cho môi trường kiểm tra và phát triển.
4.1. Cài đặt bằng kho Apt.
Trước tiên, bạn cần thiết lập kho Apt của Docker. Sau đó, bạn có thể cài đặt và cập nhật Docker từ kho này.
Làm theo các bước sau:
# Thêm khóa GPG chính thức của Docker:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg -y
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Thêm kho vào nguồn Apt:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Cài đặt Docker Engine và kiểm tra.
Để cài đặt phiên bản mới nhất, chạy lệnh sau:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Với Docker Compose.
curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Kiểm tra việc cài đặt thành công bằng cách chạy hình ảnh “hello-world” như sau:
sudo docker run hello-world
Lệnh này sẽ tải về một hình ảnh image và chạy nó trong một container. Khi container chạy, nó sẽ in ra một thông báo xác nhận và thoát.
Bây giờ bạn đã cài đặt và khởi động Docker Engine thành công. Nếu bạn gặp vấn đề về quyền truy cập khi chạy Docker mà không phải là người dùng root, bạn có thể tham khảo phần “Linux postinstall” trong tài liệu để cho phép người dùng không cần đặc quyền chạy các lệnh Docker và thực hiện các cấu hình tùy chọn khác.
Nâng cấp Docker Engine.
Để nâng cấp Docker Engine, bạn làm theo bước 2 trong hướng dẫn cài đặt, chọn phiên bản mới bạn muốn cài đặt.
4.2. Cài đặt từ gói deb.
- Nếu bạn không thể sử dụng kho apt của Docker để cài đặt Docker Engine, bạn có thể tải tệp deb cho phiên bản của bạn và cài đặt thủ công. Bạn cần tải tệp mới mỗi khi bạn muốn nâng cấp Docker Engine.
- Đến https://download.docker.com/linux/debian/dists/.
- Chọn phiên bản Debian của bạn trong danh sách.
- Điều hướng đến pool/stable/ và chọn kiến trúc tương ứng (amd64, armhf, arm64 hoặc s390x).
- Tải về các tệp deb sau cho các gói Docker Engine, CLI, containerd và Docker Compose:
- containerd.io_<version>_<arch>.deb
- docker-ce_<version>_<arch>.deb
- docker-ce-cli_<version>_<arch>.deb
- docker-buildx-plugin_<version>_<arch>.deb
- docker-compose-plugin_<version>_<arch>.deb
- Cài đặt các gói .deb. Cập nhật đường dẫn trong ví dụ sau đây đến nơi bạn đã tải về các gói Docker.
sudo dpkg -i ./containerd.io_<version>_<arch>.deb \
./docker-ce_<version>_<arch>.deb \
./docker-ce-cli_<version>_<arch>.deb \
./docker-buildx-plugin_<version>_<arch>.deb \
./docker-compose-plugin_<version>_<arch>.deb
- Dịch vụ Docker sẽ tự động khởi động.
- Để kiểm tra việc cài đặt Docker Engine thành công, chạy hình ảnh “hello-world” như sau:
sudo docker run hello-world
Lệnh này tải về một image kiểm tra và chạy nó trong một container. Khi container chạy, nó sẽ in ra một thông báo xác nhận và thoát.
- Bây giờ bạn đã cài đặt và khởi động Docker Engine thành công.
4.3. Cài đặt Docker sử dụng script.
- Docker cung cấp một script tại https://get.docker.com/ để cài đặt Docker vào môi trường phát triển mà không cần tương tác. Tuy script này không được khuyến nghị cho môi trường sản xuất, nhưng nó hữu ích để tạo script triển khai tùy chỉnh theo nhu cầu của bạn.
- Luôn kiểm tra script tải từ internet trước khi chạy chúng. Trước khi cài đặt, hãy tìm hiểu về các rủi ro và giới hạn tiềm ẩn của script:
- Script yêu cầu quyền root hoặc sudo để chạy.
- Script cố gắng phát hiện phiên bản và hệ điều hành Linux của bạn và cấu hình hệ thống quản lý gói cho bạn.
- Script không cho phép bạn tùy chỉnh hầu hết các tham số cài đặt.
- Script cài đặt các phụ thuộc và gợi ý mà không cần xác nhận. Điều này có thể cài đặt một số lượng lớn gói, tùy thuộc vào cấu hình hiện tại của máy chủ của bạn.
- Mặc định, script cài đặt phiên bản ổn định nhất của Docker, containerd và runc. Khi sử dụng script này để triển khai máy chủ, điều này có thể dẫn đến việc nâng cấp phiên bản lớn không mong đợi của Docker. Luôn kiểm tra việc nâng cấp trong môi trường thử nghiệm trước khi triển khai vào hệ thống sản xuất của bạn.
- Để xem trước các bước của script, bạn có thể chạy script với tùy chọn –dry-run để biết các bước mà script sẽ chạy khi gọi:
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh ./get-docker.sh --dry-run
Ví dụ này tải script từ https://get.docker.com và chạy nó để cài đặt phiên bản ổn định nhất của Docker trên Linux:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Sau đó, bạn đã cài đặt và khởi động Docker Engine thành công. Dịch vụ docker khởi động tự động trên các bản phân phối dựa trên Debian. Trên các bản phân phối dựa trên RPM, như CentOS, Fedora, RHEL hoặc SLES, bạn cần khởi động nó bằng tay bằng cách sử dụng lệnh systemctl hoặc service tương ứng. Như thông báo cho biết, người dùng không có quyền root không thể chạy các lệnh Docker mặc định.
Sử dụng Docker với người dùng không có quyền root hoặc cài đặt trong chế độ không có quyền root.
Script cài đặt yêu cầu quyền root hoặc sudo để cài đặt và sử dụng Docker. Nếu bạn muốn cấp quyền cho người dùng không có quyền root truy cập Docker, hãy tham khảo các bước sau cài đặt cho Linux. Bạn cũng có thể cài đặt Docker mà không cần quyền root hoặc cấu hình để chạy trong chế độ không có quyền root. Để biết thêm hướng dẫn về việc chạy Docker trong chế độ không có quyền root, hãy tham khảo “chạy Docker daemon như người dùng không có quyền root (beta versions, release-candidates)”.
Cài đặt phiên bản thử nghiệm (pre-releases).
Docker cũng cung cấp một script tại https://test.docker.com/ để cài đặt phiên bản thử nghiệm của Docker trên Linux. Script này tương tự như script tại get.docker.com, nhưng cấu hình hệ thống quản lý gói của bạn để sử dụng kênh thử nghiệm của kho lưu trữ gói Docker. Kênh thử nghiệm bao gồm cả phiên bản ổn định và phiên bản thử nghiệm (beta, release-candidate) của Docker. Sử dụng script này để truy cập sớm các phiên bản mới và đánh giá chúng trong môi trường thử nghiệm trước khi chúng được phát hành là phiên bản ổn định.
Để cài đặt phiên bản mới nhất của Docker trên Linux từ kênh thử nghiệm, chạy.
curl -fsSL https://test.docker.com -o test-docker.sh
sudo sh test-docker.sh
Nâng cấp Docker sau khi sử dụng script.
Nếu bạn đã cài đặt Docker bằng script, bạn nên nâng cấp Docker bằng trình quản lý gói của bạn trực tiếp. Không có lợi ích gì khi chạy lại script. Chạy lại script có thể gây ra vấn đề nếu nó cố gắng cài đặt lại kho lưu trữ đã tồn tại trên máy chủ của bạn.
5. Cách gỡ cài đặt Docker Engine trên hệ điều hành Debian và làm sạch dữ liệu liên quan.
Gỡ cài đặt Docker Engine.
Để gỡ cài đặt Docker Engine và các thành phần liên quan, bạn sử dụng lệnh sau:
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
Lệnh này sẽ gỡ cài đặt Docker Engine và các gói Docker liên quan khỏi hệ thống của bạn.
Xóa hình ảnh, container và dữ liệu liên quan.
Sau khi bạn đã gỡ cài đặt Docker, các hình ảnh, container, và thư mục dữ liệu tương ứng trong /var/lib/docker và /var/lib/containerd không được tự động xóa. Để xóa tất cả hình ảnh, container và thư mục dữ liệu này, bạn có thể sử dụng các lệnh sau:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
Lưu ý rằng việc này sẽ xóa toàn bộ dữ liệu Docker trên máy chủ của bạn, vì vậy hãy đảm bảo rằng bạn đã sao lưu hoặc không còn cần các dữ liệu này trước khi thực hiện thao tác này.
Xóa tệp cấu hình tùy chỉnh (nếu có).
Nếu bạn đã chỉnh sửa các tệp cấu hình Docker theo cách riêng của mình, bạn cần xóa chúng thủ công sau khi gỡ cài đặt Docker Engine. Các tệp cấu hình này có thể nằm trong các thư mục khác nhau trên hệ thống của bạn, tùy thuộc vào cách bạn đã tùy chỉnh chúng.
Bước tiếp theo.
Sau khi bạn đã gỡ cài đặt Docker Engine, bạn có thể tiếp tục với các bước sau đó bằng cách xem “Post-installation steps for Linux.” Đây là các bước sau khi cài đặt Docker để cấu hình nó cho việc sử dụng trong môi trường Linux của bạn.
Bạn cũng có thể xem các chủ đề trong “Develop with Docker” để tìm hiểu cách xây dựng các ứng dụng mới bằng cách sử dụng Docker.
Kết luận.
Docker Engine là một công cụ quan trọng cho việc quản lý và triển khai ứng dụng trong các container, giúp tạo ra môi trường ứng dụng cô đọng, di động và dễ quản lý.
Bài viết đã hướng dẫn cài đặt Docker Engine trên hệ điều hành Debian thông qua các bước chi tiết và cung cấp lựa chọn cài đặt thông qua kho lưu trữ Apt, tải gói deb trực tiếp hoặc sử dụng script của Docker.
Sau khi cài đặt, bạn có thể sử dụng Docker Engine để chạy các container và triển khai ứng dụng của mình.
Việc gỡ cài đặt Docker Engine và làm sạch dữ liệu Docker liên quan là quan trọng nếu bạn muốn loại bỏ Docker hoặc bắt đầu lại từ đầu.
Nếu bạn làm việc với Docker trên Debian, bạn nên nắm vững các bước cài đặt, nâng cấp và gỡ cài đặt để quản lý hiệu quả môi trường Docker của bạn.
Nguồn tham khảo: https://docs.docker.com/engine/install/debian/#install-using-the-repository