Podman là một container runtime cung cấp các tính năng tương tự như Docker. Nó là một phần của thư viện libpod và có thể được sử dụng để quản lý các pod, container, hình ảnh container và khối lượng container. Podman rất khác so với Docker sử dụng kiến trúc máy khách-máy chủ và yêu cầu một daemon docker để chạy, trong khi Podman không yêu cầu bất kỳ daemon nào để chạy và cũng có thể chạy hoàn hảo mà không cần quyền root.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách sử dụng cơ bản của Podman để quản lý container, hình ảnh và khối lượng, cũng như tạo hình ảnh container. Để hoàn thành hướng dẫn này, bạn phải cài đặt podman. sau đây là hướng dẫn cho các hệ điều hành khác nhau:
Để lấy phiên bản Podman đã cài đặt trên máy, hãy sử dụng lệnh sau.
Bất kỳ phiên bản Podman nào > 1.0.1 đều phù hợp với hướng dẫn này.
Bây giờ hãy kiểm tra thiết lập môi trường Podman.
Và bạn sẽ được hiển thị môi trường hệ thống của quá trình cài đặt Podman. Bao gồm thông tin gói Host, Registry và Storage.
Tiếp theo, chạy lệnh sau để hiển thị tất cả các tùy chọn lệnh Podman khả dụng.
Để hiển thị trợ giúp cho lệnh cụ thể, bạn có thể sử dụng như bên dưới.
Chạy lệnh bên dưới để tìm kiếm hình ảnh.
Lệnh sẽ tìm kiếm hình ảnh có chứa từ 'nginx' trên tất cả các kho lưu trữ có sẵn đã được xác định tại tệp cấu hình '/etc/containers/repositories.conf'.
Bây giờ hãy tải xuống một số hình ảnh bằng lệnh 'podman pull' bên dưới.
Sau khi hoàn tất, hãy kiểm tra tất cả hình ảnh có sẵn trên máy chủ.
Bây giờ bạn sẽ nhận được hình ảnh nginx và alpine trên hệ thống.
Để xóa hình ảnh alpine, bạn có thể sử dụng tùy chọn 'rmi' như bên dưới.
Kết quả là, bạn sẽ chỉ có hình ảnh container nginx trên hệ thống.
Để tạo một container mới, chúng ta có thể sử dụng lệnh 'podman run' như bên dưới.
Lệnh này sẽ tạo một container mới có tên 'hakase-nginx' dựa trên hình ảnh nginx và sẽ hiển thị cổng 8000 trên máy chủ.
Chi tiết các tùy chọn lệnh:
-d - giữ cho container chạy ở chế độ nền và chỉ in ID container dưới dạng kết quả.
-p 8000:80 - ánh xạ cổng cho container và hệ thống máy chủ. Cổng 8000 trên máy chủ và cổng 80 trên container.
--name hakase-nginx - chỉ định tên container với 'hakase-nginx'.
Bây giờ hãy hiển thị tất cả các container đang chạy trên hệ thống.
Và bạn sẽ thấy container có tên 'hakase-nginx' đang hoạt động.
Nếu bạn muốn kiểm tra tất cả các container khả dụng, bạn có thể sử dụng tùy chọn '-a'.
Bây giờ bạn sẽ nhận được tất cả các container khả dụng với các trạng thái khác nhau.
Sau khi bạn nhận được tất cả các container đang chạy trên máy chủ, chúng tôi sẽ chỉ cho bạn cách kiểm tra tất cả các quy trình bên trong container, đính kèm container đó vào container đang chạy và dừng và xóa container.
Để kiểm tra quy trình bên trong container đang chạy, hãy sử dụng lệnh sau.
Bây giờ để đính kèm và truy cập vào container đang chạy, bạn có thể sử dụng lệnh 'exec' như bên dưới.
Bên trong container 'hakase-nginx', hãy kiểm tra phiên bản nginx trên đó.
Bạn sẽ nhận được kết quả như bên dưới.
Bây giờ hãy nhập 'exit' để đăng xuất khỏi container.
Tiếp theo, dừng container 'hakase-nginx'.
Sau đó xóa container.
Nếu bạn muốn buộc dừng và xóa container đang chạy, bạn có thể sử dụng lệnh '-f' để thực hiện tùy chọn.
Bây giờ hãy tạo một ổ đĩa cục bộ mới bằng lệnh sau.
Sau đó, hiển thị tất cả các ổ đĩa khả dụng trên hệ thống.
Và bạn sẽ nhận được 'hakase-volume' trong danh sách.
Để kiểm tra thông tin chi tiết về ổ đĩa 'hakase-volume', chúng ta có thể sử dụng tùy chọn 'inspect' như bên dưới.
Và bạn sẽ thấy 'mountPoint' của ổ đĩa là thư mục cục bộ '/var/lib/containers/storage/hakase-volume/_data'.
Vào thư mục đó và tạo một tệp index.html mới.
Bây giờ hãy tạo một vùng chứa mới và gắn 'hakase-volume' vào vùng chứa.
Sau khi vùng chứa được tạo, hãy kiểm tra các ổ đĩa khả dụng trên vùng chứa bằng lệnh sau.
Ở cuối kết quả, bạn sẽ nhận được 'hakase-volume' trên container.
Tiếp theo, hãy kiểm tra địa chỉ IP của container.
Truy cập container trên cổng HTTP bằng httpie.
Và bạn sẽ nhận được tệp index.html tùy chỉnh đã được tạo trên 'hakase-volume'.
Bây giờ nếu bạn muốn xóa volume, bạn có thể sử dụng tùy chọn 'rm'.
Và 'hakase-volume' sẽ bị xóa.
Trong phần này, chúng ta sẽ tạo hình ảnh tùy chỉnh mới dựa trên container đã thay đổi thông qua lệnh 'podman commit'.
Tải xuống/kéo hình ảnh chính 'ubuntu'.
Bây giờ hãy chạy container dựa trên hình ảnh ubuntu. Và bên trong container, hãy chạy lệnh 'bash' để cập nhật kho lưu trữ và cài đặt gói nginx.
Chờ cài đặt nginx bên trong container.
Sau khi hoàn tất, hãy tạo một hình ảnh tùy chỉnh mới dựa trên 'container-temp' bằng lệnh sau.
Tiếp theo, hãy kiểm tra các hình ảnh có sẵn trên hệ thống.
Và bạn sẽ nhận được một hình ảnh mới có tên là 'my-nginx' trong danh sách.
Nếu bạn muốn chạy container dựa trên hình ảnh 'my-nginx', hãy chạy lệnh sau.
Bây giờ hãy kiểm tra container đang chạy và kiểm tra địa chỉ IP của nó.
Và bạn sẽ thấy container 'nginx01' đang hoạt động. Sau đó, hãy truy cập cổng HTTP trên container 'nginx01'.
Kết quả là, bạn sẽ nhận được phản hồi tiêu đề HTTP như bên dưới.
Tạo một thư mục dự án mới và tạo một 'Dockerfile' mới bên trong.
Dán cấu hình sau.
Lưu và đóng.
Bây giờ hãy chạy podman bên dưới để xây dựng một hình ảnh tùy chỉnh mới bằng Dockerfile.
Sau khi hoàn tất, hãy kiểm tra hình ảnh trên máy.
Và bạn sẽ nhận được 'hakase-image'.
Tiếp theo, tạo một container mới dựa trên 'hakase-image' bằng cách chạy lệnh sau.
Sau đó, kiểm tra container 'nginx02' và địa chỉ IP của nó.
Đảm bảo container 'nginx02' đang hoạt động.
Bây giờ hãy kiểm tra container bằng công cụ httpie.
Và bạn sẽ thấy trang Nginx mặc định và HTTP của nó header.
Cuối cùng, bây giờ bạn có thể quản lý container, hình ảnh và khối lượng bằng Podman. Và bạn có thể tạo hình ảnh tùy chỉnh mới cho ứng dụng của mình bằng Dockerfile.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách sử dụng cơ bản của Podman để quản lý container, hình ảnh và khối lượng, cũng như tạo hình ảnh container. Để hoàn thành hướng dẫn này, bạn phải cài đặt podman. sau đây là hướng dẫn cho các hệ điều hành khác nhau:
- Cách cài đặt Podman trên Ubuntu 22.04
- Bắt đầu với Podman (Docker Alternative) trên Rocky Linux
- Cách cài đặt và sử dụng Podman (Docker Alternative) trên Ubuntu 20.04
- Cách cài đặt Podman làm Docker alternative trên Debian 11
- Máy chủ Ubuntu có cài đặt Podman
- Kiến thức cơ bản về Docker sẽ giúp bạn dễ dàng hơn
1. Lệnh Podman cơ bản
Sau khi cài đặt Podman trên hệ thống Ubuntu, chúng ta phải biết cách kiểm tra bản thân Podman. Chúng ta cần kiểm tra phiên bản đã cài đặt trên hệ thống, môi trường hệ thống Podman và cách sử dụng trợ giúp cơ bản.Để lấy phiên bản Podman đã cài đặt trên máy, hãy sử dụng lệnh sau.
Mã:
phiên bản podman
Bây giờ hãy kiểm tra thiết lập môi trường Podman.
Mã:
thông tin podman
Tiếp theo, chạy lệnh sau để hiển thị tất cả các tùy chọn lệnh Podman khả dụng.
Mã:
podman --help
Mã:
podman pod help
2. Quản lý hình ảnh container bằng Podman
Bây giờ chúng ta sẽ chuyển sang quản lý hình ảnh container bằng Podman. Có một số lệnh cơ bản mà bạn phải biết liên quan đến quản lý hình ảnh container, bao gồm tìm kiếm hình ảnh, tải xuống hình ảnh, hiển thị hình ảnh có sẵn trên hệ thống cục bộ và xóa hình ảnh.Chạy lệnh bên dưới để tìm kiếm hình ảnh.
Mã:
podman search nginx
Bây giờ hãy tải xuống một số hình ảnh bằng lệnh 'podman pull' bên dưới.
Mã:
podman pull docker.io/library/nginx
podman pull docker.io/library/alpine
Mã:
podman images
Để xóa hình ảnh alpine, bạn có thể sử dụng tùy chọn 'rmi' như bên dưới.
Mã:
podman rmi alpine
Kết quả là, bạn sẽ chỉ có hình ảnh container nginx trên hệ thống.
3. Quản lý Container
Ở giai đoạn này, chúng ta đã tìm hiểu về quản lý hình ảnh container. Và bước tiếp theo, chúng ta sẽ tìm hiểu cách tạo và quản lý container bằng Podman.Để tạo một container mới, chúng ta có thể sử dụng lệnh 'podman run' như bên dưới.
Mã:
podman run -d -p 8000:80 --name hakase-nginx docker.io/library/nginx
Chi tiết các tùy chọn lệnh:
-d - giữ cho container chạy ở chế độ nền và chỉ in ID container dưới dạng kết quả.
-p 8000:80 - ánh xạ cổng cho container và hệ thống máy chủ. Cổng 8000 trên máy chủ và cổng 80 trên container.
--name hakase-nginx - chỉ định tên container với 'hakase-nginx'.
Bây giờ hãy hiển thị tất cả các container đang chạy trên hệ thống.
Mã:
podman ps
Nếu bạn muốn kiểm tra tất cả các container khả dụng, bạn có thể sử dụng tùy chọn '-a'.
Mã:
podman ps -a
Sau khi bạn nhận được tất cả các container đang chạy trên máy chủ, chúng tôi sẽ chỉ cho bạn cách kiểm tra tất cả các quy trình bên trong container, đính kèm container đó vào container đang chạy và dừng và xóa container.
Để kiểm tra quy trình bên trong container đang chạy, hãy sử dụng lệnh sau.
Mã:
podman top hakase-nginx
Mã:
podman exec -it hakase-nginx /bin/bash
Mã:
nginx -V
Bây giờ hãy nhập 'exit' để đăng xuất khỏi container.
Tiếp theo, dừng container 'hakase-nginx'.
Mã:
podman stop hakase-nginx
Mã:
podman rm hakase-nginx
Nếu bạn muốn buộc dừng và xóa container đang chạy, bạn có thể sử dụng lệnh '-f' để thực hiện tùy chọn.
Mã:
podman rm hakase-nginx -f
4. Quản lý ổ đĩa
Kể từ phiên bản 0.12, Podman đã hỗ trợ việc tạo và quản lý ổ đĩa cục bộ. Vì vậy, nếu bạn đang sử dụng phiên bản cũ hơn, bạn sẽ không nhận được lệnh 'podman volume' này.Bây giờ hãy tạo một ổ đĩa cục bộ mới bằng lệnh sau.
Mã:
podman volume create hakase-volume
Mã:
podman volume ls
Để kiểm tra thông tin chi tiết về ổ đĩa 'hakase-volume', chúng ta có thể sử dụng tùy chọn 'inspect' như bên dưới.
Mã:
podman volume inspect hakase-volume
Vào thư mục đó và tạo một tệp index.html mới.
Mã:
cd /var/lib/containers/storage/hakase-volume/_data
echo "[HEADING=1]Đây là chỉ mục và ổ đĩa tùy chỉnh - Xin chào Podman[/HEADING]" > index.html
Mã:
podman run -d -p 8000:80 -v hakase-volume:/usr/share/nginx/html --name hakase-nginx docker.io/library/nginx
Mã:
podman inspect -f '{{ json .Mounts }}' hakase-nginx | jq
Tiếp theo, hãy kiểm tra địa chỉ IP của container.
Mã:
podman inspect -f '{{ .NetworkSettings.IPAddress }}' hakase-nginx
Mã:
http http://10.88.0.4/
Bây giờ nếu bạn muốn xóa volume, bạn có thể sử dụng tùy chọn 'rm'.
Mã:
podman volume rm hakase-volume
5. Tạo hình ảnh tùy chỉnh với Commit
Bây giờ chúng ta sẽ tạo hình ảnh container tùy chỉnh bằng Podman. Về cơ bản, Podman cho phép bạn tạo hình ảnh tùy chỉnh dựa trên container đã thay đổi hoặc tạo hình ảnh tùy chỉnh mới bằng 'Dockerfile'.Trong phần này, chúng ta sẽ tạo hình ảnh tùy chỉnh mới dựa trên container đã thay đổi thông qua lệnh 'podman commit'.
Tải xuống/kéo hình ảnh chính 'ubuntu'.
Mã:
podman pull docker.io/library/ubuntu
Mã:
podman run --name container-temp ubuntu bash -c "apt update && apt install -y nginx"
Sau khi hoàn tất, hãy tạo một hình ảnh tùy chỉnh mới dựa trên 'container-temp' bằng lệnh sau.
Mã:
podman commit container-temp my-nginx
Mã:
podman images
Nếu bạn muốn chạy container dựa trên hình ảnh 'my-nginx', hãy chạy lệnh sau.
Mã:
podman run -dt -p 8001:80 --name nginx01 my-nginx /usr/sbin/nginx -g 'daemon off;'
Mã:
podman ps
podman inspect --format '{{ .NetworkSettings.IPAddress }}' nginx01
Mã:
http -p h 10.88.0.19
6. Tạo hình ảnh tùy chỉnh bằng Dockerfile
Bây giờ chúng ta sẽ tạo một hình ảnh container tùy chỉnh mới bằng Dockerfile.Tạo một thư mục dự án mới và tạo một 'Dockerfile' mới bên trong.
Mã:
mkdir project; cd project/
vim Dockerfile
Mã:
TỪ ubuntu
# Cài đặt Nginx
CHẠY \
apt-get update && \
apt-get install -y nginx && \
rm -rf /var/lib/apt/lists/* && \
echo "\ndaemon off;" >> /etc/nginx/nginx.conf && \
chown -R www-data:www-data /var/lib/nginx
# Xác định các thư mục có thể gắn kết.
VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]
# Xác định thư mục làm việc.
WORKDIR /etc/nginx
# Xác định lệnh mặc định.
CMD ["nginx"]
# Hiển thị cổng.
EXPOSE 80
EXPOSE 443
Bây giờ hãy chạy podman bên dưới để xây dựng một hình ảnh tùy chỉnh mới bằng Dockerfile.
Mã:
podman build -t hakase-image .
Sau khi hoàn tất, hãy kiểm tra hình ảnh trên máy.
Mã:
hình ảnh podman
Tiếp theo, tạo một container mới dựa trên 'hakase-image' bằng cách chạy lệnh sau.
Mã:
podman run -d -p 8002:80 --name nginx02 hakase-image
Mã:
podman ps
podman inspect --format '{{ .NetworkSettings.IPAddress }}' nginx02
Bây giờ hãy kiểm tra container bằng công cụ httpie.
Mã:
http 10.88.0.21
Cuối cùng, bây giờ bạn có thể quản lý container, hình ảnh và khối lượng bằng Podman. Và bạn có thể tạo hình ảnh tùy chỉnh mới cho ứng dụng của mình bằng Dockerfile.