Docker CE trên Alma Linux 9: Hướng dẫn cài đặt nhanh chóng và dễ dàng

theanh

Administrator
Nhân viên
Docker là phần mềm nguồn mở cung cấp ảo hóa cấp hệ điều hành để phát triển, vận chuyển và chạy ứng dụng. Trong Docker, các ứng dụng được phân phối dưới dạng các gói đơn vị chuẩn hóa được gọi là container. Mỗi container được cô lập với nhau, bao gồm các thư viện và tệp cấu hình, nhưng mỗi container có thể giao tiếp thông qua các kênh mạng được xác định rõ ràng.

Hiện tại, Docker đã trở thành tiêu chuẩn cho phát triển phần mềm và DevOps. Hàng triệu nhà phát triển sử dụng Docker để xây dựng, chia sẻ và chạy bất kỳ ứng dụng nào mỗi ngày tại nơi làm việc. Docker được sử dụng trong vòng đời phát triển ứng dụng, từ bản thân quá trình phát triển, thử nghiệm và sản xuất. Với Docker, ứng dụng trở nên linh hoạt và di động hơn. Các ứng dụng có thể chạy ở bất kỳ đâu trên các hệ điều hành khác nhau một cách dễ dàng, nhưng bản thân ứng dụng vẫn giống nhau từ thư viện đến tệp cấu hình.

Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Docker CE (Phiên bản cộng đồng) trên Alma Linux 9. Hướng dẫn này cũng đề cập đến cách sử dụng Docker cơ bản để quản lý hình ảnh, vùng chứa và khối lượng, làm việc với nhật ký vùng chứa và truy cập vùng chứa thông qua Docker Host.

Điều kiện tiên quyết​

Hướng dẫn này yêu cầu những điều sau:
  • Máy chủ Linux chạy Alma Linux 9 - Ví dụ này sử dụng máy chủ Alma Linux có tên máy chủ 'alma-linux' và địa chỉ IP '192.168.5.'
  • Người dùng không phải root có quyền quản trị viên sudo/root.

Thêm Docker CE Repository​

Docker là một công cụ phối hợp để phát triển, vận chuyển và chạy các ứng dụng thông qua vùng chứa. Nó làm cho quá trình phát triển nhanh hơn vì Docker cho phép bạn tạo hình ảnh ứng dụng mà không cần dựa vào máy chủ. Điều này làm cho việc phân phối ứng dụng cho các nhà phát triển nhanh hơn và dễ dàng hơn.

Docker là một hệ thống điều phối container đa nền tảng, có thể cài đặt trên Desktop và Server. Nếu bạn đang sử dụng Desktop, bạn có thể cài đặt Docker Desktop, nhưng nếu bạn đang sử dụng máy chủ, bạn có thể cài đặt Docker Engine thông qua kho lưu trữ Docker chính thức.

Trong phần đầu tiên, bạn sẽ thiết lập kho lưu trữ Docker CE trên máy chủ Alma Linux của mình.

Chạy lệnh sau để cài đặt gói 'dnf-utils'.
Mã:
sudo dnf install dnf-utils
Nhập y khi được nhắc, sau đó nhấn ENTER để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22168%22%3E%3C/svg%3E


Bây giờ, hãy thêm kho lưu trữ Docker CE bằng lệnh dnf sau.
Mã:
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Sau khi kho lưu trữ Docker CE được thêm vào, hãy xác minh bằng lệnh bên dưới. Thao tác này sẽ hiển thị cho bạn danh sách các kho lưu trữ khả dụng trên Alma Linux của bạn.
Mã:
sudo dnf repolist
Khi thành công, bạn sẽ nhận được kết quả như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22173%22%3E%3C/svg%3E


Chuyển sang phần tiếp theo để cài đặt Docker CE.

Cài đặt Docker CE​

Trong phần này, bạn sẽ cài đặt Docker CE trên máy chủ Alma Linux. Đến cuối phần này, bạn sẽ có Docker chạy trên hệ thống của mình.

Cài đặt Docker CE bằng lệnh dnf sau. Với điều này, bạn sẽ cài đặt Docker với gói bổ sung 'docker-buildx-plugin' là plugin Docker Build giúp việc xây dựng hình ảnh nhanh hơn và 'docker-compose-plugin' là plugin Docker Compose giúp phát triển ứng dụng dễ dàng hơn.
Mã:
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Khi được nhắc, hãy nhập y để xác nhận, sau đó nhấn ENTER để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22448%22%3E%3C/svg%3E


Ngoài ra, bạn sẽ được yêu cầu xác nhận khóa GPG cho kho lưu trữ Docker. Nhập để xác nhận, sau đó nhấn ENTER.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22603%22%20height=%22193%22%3E%3C/svg%3E


Sau khi Docker được cài đặt, hãy chạy lệnh systemctl sau để khởi động và kích hoạt dịch vụ 'docker'.
Mã:
sudo systemctl start docker
sudo systemctl enable docker
Sau khi thực hiện lệnh, Docker sẽ chạy và cũng sẽ được kích hoạt, điều đó có nghĩa là Docker sẽ tự động khởi động khi hệ thống khởi động.

Chạy lệnh bên dưới để xác minh trạng thái dịch vụ Docker và đảm bảo rằng Docker đang chạy.
Mã:
sudo systemctl status docker
Khi Docker đang chạy, bạn sẽ thấy kết quả như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22301%22%3E%3C/svg%3E

Cho phép người dùng không phải root chạy Docker Container​

Theo mặc định, chỉ người dùng root mới được phép chạy container thông qua Docker. Phần này sẽ chỉ cho bạn cách cho phép người dùng không phải root chạy Docker container bằng cách thêm người dùng vào nhóm hiện có có tên là 'docker'.

Chạy lệnh sau để thêm người dùng của bạn vào nhóm 'docker'. Ví dụ này sử dụng người dùng có tên là 'testuser'.
Mã:
sudo usermod -aG docker testuser
Bây giờ, hãy đăng nhập với tư cách là người dùng của bạn bằng lệnh sau. Sau đó thực hiện lệnh 'docker run' bên dưới để chạy container 'hello-world'.
Mã:
su - testuser
docker run hello-world
Khi thành công, bạn sẽ nhận được kết quả như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22615%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh docker sau để kiểm tra container đang chạy trên hệ thống của bạn.
Mã:
docker ps
docker ps -a
Lệnh 'docker ps' đầu tiên sẽ không có đầu ra vì nó chỉ hiển thị cho bạn một container đang chạy và container 'hello-world' sẽ thoát/dừng sau khi thông báo "Xin chào từ Docker" được in ra. Nhưng đối với lệnh thứ hai với 'docker ps -a', nó sẽ cung cấp cho bạn đầu ra cho cả vùng chứa đang chạy và thoát.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22147%22%3E%3C/svg%3E

Cách sử dụng Docker cơ bản​

Bây giờ bạn đã đạt đến giai đoạn Docker đang hoạt động và cho phép người dùng không phải root của bạn thực thi vùng chứa Docker. Không, hãy chuyển sang cách sử dụng Docker cơ bản.

Các bước sau sẽ chỉ cho bạn một số tình huống để sử dụng Docker. Bạn sẽ học cách quản lý Docker image, làm việc với container và volume, cũng như cách truy cập container từ máy chủ.

Khi mọi thứ đã sẵn sàng, chúng ta hãy bắt đầu.

Làm việc với Images​

Trong bước đầu tiên, bạn sẽ làm việc với Docker image. Bạn sẽ tải xuống image và xác minh danh sách các image có sẵn trên máy cục bộ của mình.

Để tải xuống image, hãy truy cập DockerHub và nhập tên Docker image mà bạn muốn tải xuống. Trong ví dụ này, bạn sẽ tải xuống image 'nginx' có thẻ 'alpine'. Nếu nhấp vào tab TAGS, bạn sẽ thấy danh sách các phiên bản có sẵn của hình ảnh Nginx.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22503%22%3E%3C/svg%3E


Bây giờ hãy chạy lệnh 'docker pull' bên dưới để tải xuống hình ảnh Docker. Trong ví dụ này, bạn sẽ tải xuống hình ảnh 'nginx:alpine', đây sẽ là phiên bản mới nhất của hình ảnh Nginx Alpine.
Mã:
docker pull nginx:alpine

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22737%22%20height=%22283%22%3E%3C/svg%3E


Sau khi tải xuống, hãy chạy lệnh sau để liệt kê các hình ảnh có sẵn trên máy chủ của bạn. Nếu bạn làm theo các bước này ngay từ đầu, bạn sẽ thấy hai hình ảnh Docker, 'hello-world' có thẻ 'latest' và 'nginx' có thẻ 'alpine'.
Mã:
docker images

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22611%22%20height=%22152%22%3E%3C/svg%3E

Làm việc với Container​

Sau khi tải xuống hình ảnh Docker, giờ bạn có thể chạy container. Phần này sẽ chỉ cho bạn cách tạo và chạy một container thông qua Docker.

Để chạy một container, hãy chạy lệnh 'docker run' sau đây.
Mã:
docker run -it -d -p 8080:80 --name web nginx:alpine
Lệnh này sẽ tạo một container mới có tên là 'web', dựa trên hình ảnh Docker 'nginx:alpine'. Container mới 'web' sẽ hiển thị cổng '8080' trên máy chủ Docker, bằng với cổng 80 trên container. Tham số bổ sung '-it' được sử dụng để chạy container ở chế độ tương tác và tham số '-d' sẽ chạy container ở chế độ nền.

Sau khi lệnh được thực thi, bạn sẽ thấy số và chuỗi ngẫu nhiên, đó là 'CONTAINER ID'.

Bây giờ, hãy chạy lệnh bên dưới để kiểm tra danh sách các container đang chạy.
Mã:
docker ps
Bạn sẽ mong đợi một đầu ra như thế này - Container 'web' có trạng thái 'Up' và hiển thị cổng 8080 trên máy chủ Docker.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22125%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh curl bên dưới để truy cập vào container 'web' được hiển thị trên cổng 8080. Khi thành công, bạn sẽ thấy mã nguồn HTML chỉ mục mặc định của container 'web'.
Mã:
curl http://192.168.5.43:8080/

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22707%22%20height=%22534%22%3E%3C/svg%3E


Cuối cùng, nếu bạn muốn truy cập vào container của mình từ ngoài mạng, bạn phải mở cổng 8080 trên máy chủ Alma Linux của mình thông qua lệnh 'firewall-cmd' bên dưới.
Mã:
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
Bây giờ hãy mở trình duyệt web và máy cục bộ của bạn và truy cập địa chỉ IP của máy chủ theo sau là cổng 8080 (tức là: http://192.168.5.43:8080/). Bạn sẽ thấy đầu ra của trang index.html cho vùng chứa 'web'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22257%22%3E%3C/svg%3E

Ghi nhật ký vùng chứa​

Ghi nhật ký rất quan trọng trong Docker, đặc biệt là nếu bạn đang phát triển hình ảnh cho các ứng dụng của mình. Ghi nhật ký giúp bạn gỡ lỗi quá trình phát triển ứng dụng.

Chạy lệnh sau để lấy nhật ký đầy đủ của vùng chứa 'web'.
Mã:
docker logs web
Dưới đây là kết quả tương tự mà bạn sẽ nhận được từ vùng chứa 'web'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22347%22%3E%3C/svg%3E


Bạn cũng có thể giới hạn đầu ra của nhật ký thông qua tham số 'tail' như bên dưới. Lệnh này sẽ hiển thị cho bạn 5 dòng nhật ký cuối cùng của vùng chứa 'web'.
Mã:
docker logs --tail 5 web

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22169%22%3E%3C/svg%3E

Quản lý vùng chứa​

Trong phần này, bạn sẽ học cách quản lý vùng chứa. Bạn sẽ học cách khởi động, dừng và xóa container.

Để dừng container 'web', hãy chạy lệnh 'docker stop' bên dưới.
Mã:
docker stop web
Bây giờ, hãy xác minh container bằng lệnh sau. Bạn sẽ nhận được kết quả đầu ra của container 'web' với trạng thái 'Đã thoát'.
Mã:
docker ps
docker ps -a

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22139%22%3E%3C/svg%3E


Để khởi động lại container 'web', hãy chạy lệnh 'docker start' bên dưới. Sau đó, hãy xác minh danh sách các container đang chạy bằng lệnh 'docker ps'.
Mã:
docker start web
docker ps
Bạn sẽ nhận được kết quả là container 'web' đang chạy với trạng thái 'Up'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22107%22%3E%3C/svg%3E


Cuối cùng, hãy chạy lệnh sau để xóa vùng chứa 'web'. Trước khi xóa container, trước tiên bạn phải dừng container.
Mã:
docker stop web
docker rm web
Nếu bạn kiểm tra danh sách container thông qua lệnh 'docker ps', bạn sẽ thấy kết quả đầu ra cho biết container 'web' đã bị xóa.
Mã:
docker ps -a

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22154%22%3E%3C/svg%3E

Làm việc với Volume​

Volume là nơi bạn gắn volume/thư mục cục bộ của mình vào container. Bạn có thể cho rằng volume giống như 'thư mục chia sẻ' trong máy ảo. Trong phần này, bạn sẽ tạo một container mới với một ổ đĩa tùy chỉnh cho phép bạn đính kèm thư mục cục bộ vào container.

Đầu tiên, hãy tạo một thư mục dự án mới '~/project/data' và di chuyển thư mục làm việc của bạn vào đó.
Mã:
mkdir -p ~/project/data; cd ~/project
Bây giờ, hãy chạy lệnh sau để tạo một tệp mới 'data/index.html'. Tệp này sẽ thay thế trang index.html mặc định của container 'web' mới.
Mã:
cat > data/index.html
 
Back
Bên trên