Podman là một công cụ gốc Linux để triển khai các ứng dụng sử dụng các container và hình ảnh container của Sáng kiến chứa mở (OCI). Công cụ này hỗ trợ nhiều định dạng hình ảnh container, bao gồm hình ảnh Docker và hình ảnh container OCI. Ngoài ra, Podman còn hỗ trợ quản lý các pod, nhóm container.
Podman là một công cụ không có daemon, chạy như một dòng lệnh nhị phân duy nhất mà không cần dịch vụ. Công cụ này cung cấp một dòng lệnh tương tự như Docker, bạn có thể sử dụng một bí danh như 'alias docker=podman'.
Để chạy các container và quản lý hình ảnh container, Podman dựa vào libpod và thời gian chạy container OCI như runc, crun và runv.
Trước khi bắt đầu, hãy đảm bảo bạn có đủ các yêu cầu sau:
1. Thực hiện lệnh DNF bên dưới để hiển thị thông tin về gói podman.
Bạn sẽ thấy đầu ra tương tự như bên dưới.
Kho lưu trữ appstream cung cấp phiên bản gói Podman '3.3.1'.
2. Cài đặt Podman bằng lệnh DNF bên dưới.
Gõ 'y' để xác nhận và nhấn 'Enter' để tiếp tục cài đặt.
3. Nếu quá trình cài đặt Podman hoàn tất, hãy xác minh bằng lệnh sau.
Bạn sẽ thấy đầu ra tương tự như bên dưới.
Dưới đây là một số cấu hình Podman mà bạn phải biết.
1. Chạy lệnh bên dưới để thêm người dùng mới 'johndoe'.
Nhập mật khẩu mạnh mới cho người dùng 'johndoe'.
2. Tiếp theo, đăng nhập với tư cách là người dùng 'johndoe' bằng lệnh sau.
3. Bây giờ hãy thực thi lệnh sau để chạy một vùng chứa mới dựa trên hình ảnh Docker 'hello-world'.
Bạn sẽ thấy thông báo đầu ra 'Hello World', nghĩa là vùng chứa đang chạy nhưng hiện đã thoát.
4. Kiểm tra trạng thái container trên hệ thống của bạn bằng lệnh Podman bên dưới
Bạn sẽ thấy container dựa trên hình ảnh Docker 'hello-world' với trạng thái hiện tại là 'Exited'.
Bạn sẽ thấy rất nhiều hình ảnh container từ nhiều sổ đăng ký.
2. Bạn có thể giới hạn kết quả tìm kiếm từ mỗi sổ đăng ký hình ảnh chứa bằng tùy chọn '--limit n'.
Bây giờ bạn sẽ thấy mỗi sổ đăng ký có 3 kết quả hình ảnh chứa có tên 'nginx'.
1. Tải xuống hình ảnh container 'nginx:alpine' bằng lệnh sau.
Chọn sổ đăng ký container bạn muốn sử dụng, sau đó nhấn 'Enter' để xác nhận. Đối với ví dụ này, chúng tôi sẽ sử dụng sổ đăng ký Docker.
Quá trình tải xuống sẽ bắt đầu.
2. Nếu quá trình tải xuống hình ảnh container hoàn tất, hãy xác minh hình ảnh trình tải xuống bằng lệnh sau.
Dưới đây là kết quả tương tự mà bạn sẽ nhận được.
1. Thực hiện lệnh sau để chạy container dựa trên hình ảnh 'nginx:alpine'.
Bạn sẽ nhận được chuỗi và số ngẫu nhiên của container.
2. Xác minh container đang chạy trên hệ thống của bạn bằng lệnh sau.
Bạn sẽ thấy đầu ra tương tự như bên dưới.
Tên container 'web' là 'Up' và hiển thị cổng '8080' trên máy chủ.
3. Bây giờ hãy mở trình duyệt web của bạn và nhập địa chỉ IP Rocky Linux vào thanh địa chỉ. Đối với ví dụ này, máy Rocky Linux có địa chỉ IP là '192.168.1.10'.
Bạn sẽ thấy index.html mặc định từ vùng chứa 'web', dựa trên ảnh vùng chứa 'nginx:alpine'.
1. Để kiểm tra nhật ký của container, bạn có thể sử dụng lệnh Podman bên dưới.
Bạn sẽ thấy nhật ký chi tiết của container 'web'.
2. Để giới hạn đầu ra nhật ký của container, hãy sử dụng tùy chọn '--tail n'.
Dưới đây là đầu ra nhật ký tương tự của container 'web'.
Bây giờ container 'web' sẽ dừng lại.
2. Xác minh bằng lệnh sau.
Bạn sẽ thấy vùng chứa 'web' tự động bị xóa vì bạn đang sử dụng tùy chọn '--rm' khi chạy vùng chứa.
1. Tạo thư mục mới 'data' và tệp tùy chỉnh 'index.html'. Thao tác này sẽ thay thế tệp 'index.html' Nginx mặc định trên vùng chứa Nginx.
Sao chép và dán tập lệnh HTML sau.
Lưu tập lệnh và thoát.
2. Tiếp theo, thực hiện lệnh sau để tạo một vùng chứa mới với ổ đĩa tùy chỉnh.
Sử dụng tùy chọn '-v data:/usr/share/nginx/html' để thiết lập ổ đĩa tùy chỉnh cho vùng chứa mới của bạn. Thư mục 'data' sẽ được gắn vào thư mục vùng chứa '/usr/share/nginx/html'.
3. Kiểm tra các container đang chạy bằng lệnh Podman bên dưới.
Tên container mới 'web' là 'Up' với ổ đĩa tùy chỉnh.
4. Mở trình duyệt web của bạn và nhập địa chỉ IP máy chủ có cổng '8080'.
Bây giờ bạn sẽ thấy trang 'index.html' tùy chỉnh như bên dưới.
1. Để đăng nhập vào container đang chạy, hãy sử dụng Podman với tùy chọn 'exec' như bên dưới.
2. Sau khi bạn đăng nhập vào container, hãy kiểm tra tên máy chủ, địa chỉ IP và bảng định tuyến của container.
Bây giờ hãy nhập 'exit' và nhấn 'Enter' để đăng xuất khỏi container.
1. Dừng container 'web' bằng lệnh sau.
2. Tiếp theo, xóa tất cả các container có trạng thái 'Đã thoát' bằng lệnh podman bên dưới.
Bây giờ bạn đã hoàn tất cách sử dụng cơ bản của Podman để quản lý container và hình ảnh container.
Đối với bước tiếp theo, bạn có thể quan tâm đến việc tạo hình ảnh Container tùy chỉnh dựa trên định dạng hình ảnh Docker hoặc thông số kỹ thuật hình ảnh container OCI.
Podman là một công cụ không có daemon, chạy như một dòng lệnh nhị phân duy nhất mà không cần dịch vụ. Công cụ này cung cấp một dòng lệnh tương tự như Docker, bạn có thể sử dụng một bí danh như 'alias docker=podman'.
Để chạy các container và quản lý hình ảnh container, Podman dựa vào libpod và thời gian chạy container OCI như runc, crun và runv.
Điều kiện tiên quyết
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Podman trên hệ thống Rocky Linux. Ngoài ra, bạn sẽ học cách sử dụng cơ bản Podman để quản lý container và hình ảnh container.Trước khi bắt đầu, hãy đảm bảo bạn có đủ các yêu cầu sau:
- Hệ điều hành: Rocky Linux 8.4 (Green Obsidian)
- Quyền root: Để cài đặt các gói mới và chỉnh sửa cấu hình hệ thống
Cài đặt Podman trên Rocky Linux
Theo mặc định, kho lưu trữ appstream Rocky Linux cung cấp các gói podman.1. Thực hiện lệnh DNF bên dưới để hiển thị thông tin về gói podman.
Mã:
sudo dnf info podman
Mã:
Kiểm tra hết hạn siêu dữ liệu lần cuối: 0:07:09 trước vào Thứ Ba, ngày 16 tháng 11 năm 2021 lúc 09:30:27 sáng UTC.
Các gói khả dụng
Tên: podman
Phiên bản: 3.3.1
Bản phát hành: 9.module+el8.5.0+710+4c471e88
Kiến trúc: x86_64
Kích thước: 12 M
Nguồn: podman-3.3.1-9.module+el8.5.0+710+4c471e88.src.rpm
Kho lưu trữ: appstream
Tóm tắt: Quản lý Pod, Container và Hình ảnh Container
URL: https://podman.io/
Giấy phép: ASL 2.0 và GPLv3+
Mô tả: podman (Pod Manager) là một công cụ container đầy đủ tính năng, là một công cụ
: không cần daemon đơn giản. podman cung cấp một dòng lệnh tương đương với Docker-CLI giúp chuyển đổi dễ dàng từ các công cụ container khác và cho phép quản lý
: pod, container và hình ảnh. Nói một cách đơn giản: alias docker=podman.
: Hầu hết các lệnh podman đều có thể chạy như một người dùng thông thường, mà không cần
: các đặc quyền bổ sung.
:
: podman sử dụng Buildah(1) nội bộ để tạo hình ảnh container.
: Cả hai công cụ đều chia sẻ bộ nhớ hình ảnh (không phải container), do đó mỗi công cụ có thể sử dụng hoặc
: thao tác hình ảnh (nhưng không phải container) do công cụ kia tạo ra.
:
: Quản lý Pod, Container và Hình ảnh Container
: podman Công cụ quản lý đơn giản cho pod, container và hình ảnh
2. Cài đặt Podman bằng lệnh DNF bên dưới.
Mã:
sudo dnf install podman
3. Nếu quá trình cài đặt Podman hoàn tất, hãy xác minh bằng lệnh sau.
Mã:
phiên bản podman
Mã:
Phiên bản: 3.3.1
Phiên bản API: 3.3.1
Phiên bản Go: go1.16.7
Được xây dựng: Thứ Tư, ngày 10 tháng 11 năm 2021 lúc 01:48:06
Hệ điều hành/Kiến trúc: linux/amd64
Cấu hình quan trọng của Podman
Gói Podman đi kèm với một số cấu hình mặc định nằm trong thư mục '/etc/containers'.Dưới đây là một số cấu hình Podman mà bạn phải biết.
- policy.json. Cấu hình chính sách để ký hình ảnh.
- registries.conf. Danh sách các sổ đăng ký hình ảnh container có sẵn như Docker Registry, RHEL Container image registry và Fedora Container images registry.
- storage.conf. Cấu hình lưu trữ mặc định cho Podman. Bao gồm trình điều khiển, vị trí, v.v.
- Thư mục registries.d/. Cấu hình sổ đăng ký bổ sung và ký hình ảnh
- Thư mục registries.conf.d/. Cấu hình bổ sung cho các bí danh hình ảnh container.
Thiết lập người dùng mới
Trong bước này, bạn sẽ tạo một người dùng mới và xác minh cài đặt Podman bằng cách chạy hình ảnh Docker 'hello-world'.1. Chạy lệnh bên dưới để thêm người dùng mới 'johndoe'.
Mã:
useradd -m -s /bin/bash johndoe
passwd johndoe
2. Tiếp theo, đăng nhập với tư cách là người dùng 'johndoe' bằng lệnh sau.
Mã:
su - johndoe
Mã:
podman run hello-world
Mã:
? docker.io/library/hello-world:latest
Đang cố gắng kéo docker.io/library/hello-world:latest...
Đang lấy chữ ký nguồn ảnh
Đã sao chép blob 2db29710123e xong
Đã sao chép config feb5d9fea6 xong
Đang ghi manifest vào đích ảnh
Đang lưu trữ chữ ký
Xin chào từ Docker!
Thông báo này cho thấy cài đặt của bạn có vẻ đang hoạt động bình thường.
Để tạo thông báo này, Docker đã thực hiện các bước sau:
1. Máy khách Docker đã liên hệ với daemon Docker.
2. Daemon Docker đã kéo ảnh "hello-world" từ Docker Hub.
(amd64)
3. Daemon Docker đã tạo một vùng chứa mới từ ảnh đó để chạy tệp thực thi tạo ra đầu ra mà bạn hiện đang đọc.
4. Chương trình nền Docker truyền phát đầu ra đó đến máy khách Docker, sau đó gửi đến thiết bị đầu cuối của bạn.
Để thử một điều gì đó tham vọng hơn, bạn có thể chạy một vùng chứa Ubuntu với:
$ docker run -it ubuntu bash
Chia sẻ hình ảnh, tự động hóa quy trình làm việc và nhiều hơn nữa với ID Docker miễn phí:
https://hub.docker.com/
Để biết thêm ví dụ và ý tưởng, hãy truy cập:
https://docs.docker.com/get-started/
Mã:
podman ps -a
Mã:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cea9bbfeac4d docker.io/library/hello-world:latest /hello 6 phút trước Exited (0) 6 phút trước recursing_shaw
Cách sử dụng cơ bản của Podman
Trong bước này, bạn sẽ tìm hiểu cách sử dụng cơ bản của Podman để quản lý container và hình ảnh container.Tìm kiếm hình ảnh container
1. Để tìm hình ảnh container bằng Podman, hãy sử dụng lệnh sau. Trong ví dụ này, chúng tôi đang tìm kiếm hình ảnh container có tên 'nginx'.
Mã:
podman search nginx
2. Bạn có thể giới hạn kết quả tìm kiếm từ mỗi sổ đăng ký hình ảnh chứa bằng tùy chọn '--limit n'.
Mã:
podman search nginx --limit 3
Mã:
TÊN MỤC LỤC MÔ TẢ STARS OFFICIAL AUTOMATED
fedoraproject.org registry.fedoraproject.org/f29/nginx 0
fedoraproject.org registry.fedoraproject.org/f29/origin-nginx-router 0
redhat.com registry.access.redhat.com/ubi8/nginx-120 Nền tảng để chạy nginx 1.20 hoặc đang xây dựng ... 0
redhat.com registry.access.redhat.com/ubi8/nginx-118 Nền tảng để chạy nginx 1.18 hoặc đang xây dựng ... 0
redhat.com registry.access.redhat.com/rhscl/nginx-18-rhel7 Máy chủ Nginx 1.8 và máy chủ proxy ngược 0
centos.org registry.centos.org/bamachrn/nginx-header 0
centos.org registry.centos.org/centos/nginx 0
centos.org registry.centos.org/centos/nginx-110-centos7 0
docker.io docker.io/library/nginx Bản dựng chính thức của Nginx. 15839 [OK]
docker.io docker.io/jwilder/nginx-proxy Proxy ngược Nginx tự động cho docker con... 2096 [OK]
docker.io docker.io/nginxinc/nginx-unprivileged NGINX Dockerfiles không có đặc quyền 54
Quản lý hình ảnh container
Podman hỗ trợ định dạng hình ảnh OCI và Docker. Ở giai đoạn này, bạn sẽ quản lý hình ảnh container bằng Podman.1. Tải xuống hình ảnh container 'nginx:alpine' bằng lệnh sau.
Mã:
podman pull nginx:alpine
Mã:
? Vui lòng chọn một hình ảnh:
registry.fedoraproject.org/nginx:alpine
registry.access.redhat.com/nginx:alpine
registry.centos.org/nginx:alpine
? docker.io/library/nginx:alpine
Mã:
? docker.io/library/nginx:alpine
Đang cố gắng kéo docker.io/library/nginx:alpine...
Đang lấy chữ ký nguồn hình ảnh
Đã sao chép blob a4e156412037 xong
Đã sao chép blob a2402c2da473 xong
Đã sao chép blob e0bae2ade5ec xong
Đã sao chép blob 97518928ae5f xong
Đã sao chép blob 3f3577460f48 xong
Đã sao chép blob e362c27513c3 xong
Đã sao chép config b46db85084 xong
Đang ghi manifest vào đích hình ảnh
Lưu trữ signatures
b46db85084b80a87b94cc930a74105b74763d0175e14f5913ea5b07c312870f8
Mã:
hình ảnh podman
Mã:
THẺ REPOSITORY ID ẢNH KÍCH THƯỚC ĐÃ TẠO
docker.io/library/nginx alpine b46db85084b8 3 ngày trước 24,7 MB
docker.io/library/hello-world mới nhất feb5d9fea6a5 7 tuần trước 19,9 kB
Chạy Container bằng Podman
Sau khi tải xuống hình ảnh container 'nginx:alpine', bạn sẽ học cách chạy một container mới bằng Podman.1. Thực hiện lệnh sau để chạy container dựa trên hình ảnh 'nginx:alpine'.
Mã:
podman run -it --rm -d -p 8080:80 --name web nginx:alpine
2. Xác minh container đang chạy trên hệ thống của bạn bằng lệnh sau.
Mã:
podman ps
Tên container 'web' là 'Up' và hiển thị cổng '8080' trên máy chủ.
3. Bây giờ hãy mở trình duyệt web của bạn và nhập địa chỉ IP Rocky Linux vào thanh địa chỉ. Đối với ví dụ này, máy Rocky Linux có địa chỉ IP là '192.168.1.10'.
Bạn sẽ thấy index.html mặc định từ vùng chứa 'web', dựa trên ảnh vùng chứa 'nginx:alpine'.
Kiểm tra Nhật ký vùng chứa bằng Podman
Bây giờ bạn sẽ học lệnh Podman để kiểm tra nhật ký vùng chứa bằng tùy chọn 'logs'.1. Để kiểm tra nhật ký của container, bạn có thể sử dụng lệnh Podman bên dưới.
Mã:
podman logs web
2. Để giới hạn đầu ra nhật ký của container, hãy sử dụng tùy chọn '--tail n'.
Mã:
podman logs --tail 10 web
Dừng Container bằng Podman
1. Để dừng container 'web', hãy sử dụng lệnh Podman bên dưới.
Mã:
podman stop web
2. Xác minh bằng lệnh sau.
Mã:
podman ps
podman ps -a
Thiết lập Ổ đĩa tùy chỉnh bằng Podman
Trong bước này, bạn sẽ tìm hiểu cách quản lý các ổ đĩa bằng Podman.1. Tạo thư mục mới 'data' và tệp tùy chỉnh 'index.html'. Thao tác này sẽ thay thế tệp 'index.html' Nginx mặc định trên vùng chứa Nginx.
Mã:
mkdir -p ~/data/
nano ~/data/inde.html
Mã:
Chào mừng đến với vùng chứa Nginx
[HEADING=2]Xin chào từ vùng chứa Nginx - Được quản lý bằng Podman[/HEADING]
2. Tiếp theo, thực hiện lệnh sau để tạo một vùng chứa mới với ổ đĩa tùy chỉnh.
Mã:
podman run -it --rm -d -p 8080:80 --name web -v ~/data:/usr/share/nginx/html nginx:alpine
3. Kiểm tra các container đang chạy bằng lệnh Podman bên dưới.
Mã:
podman ps
4. Mở trình duyệt web của bạn và nhập địa chỉ IP máy chủ có cổng '8080'.
Bây giờ bạn sẽ thấy trang 'index.html' tùy chỉnh như bên dưới.
SSH tới Container đang chạy
Trong bước này, bạn sẽ truy cập vào shell của container đang chạy.1. Để đăng nhập vào container đang chạy, hãy sử dụng Podman với tùy chọn 'exec' như bên dưới.
Mã:
podman exec -it web /bin/sh
Mã:
hostname
ip a
route -n
Dọn dẹp môi trường
Ở bước cuối cùng, bạn sẽ dọn dẹp môi trường của mình.1. Dừng container 'web' bằng lệnh sau.
Mã:
podman stop web
Mã:
podman rm $(podman ps --filter "status=exited" -q)
Kết luận
Xin chúc mừng! Bạn đã cài đặt thành công Podman trên hệ thống Rocky Linux. Ngoài ra, bạn đã tìm hiểu cách sử dụng cơ bản của Podman để quản lý container và hình ảnh container.Đối với bước tiếp theo, bạn có thể quan tâm đến việc tạo hình ảnh Container tùy chỉnh dựa trên định dạng hình ảnh Docker hoặc thông số kỹ thuật hình ảnh container OCI.