Cách cài đặt Podman từ Source trên Ubuntu

theanh

Administrator
Nhân viên
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 (Thuật ngữ Kubernetes), container, hình ảnh container và khối lượng container. Podman rất khác với Docker khi 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 cài đặt Podman theo cách thủ công từ mã nguồn trên máy chủ Ubuntu. Chúng tôi sẽ cài đặt tất cả các phụ thuộc cần thiết cho quá trình cài đặt Podman, bao gồm các plugin conmon (giám sát container), CNI (Giao diện mạng container) và Runc - thời gian chạy tuân thủ OCI.

Điều kiện tiên quyết
  • Máy chủ Ubuntu 18.04
  • Quyền root
Những gì chúng tôi sẽ làm:
  1. Cài đặt các phụ thuộc
  2. Tải xuống các cấu hình bổ sung
  3. Cài đặt Conmon (Giám sát container)
  4. Cài đặt các plugin CNI (Giao diện mạng container)
  5. Cài đặt Runc OCI Container Runtime
  6. Cài đặt Podman

Bước 1 - Cài đặt các phụ thuộc​

Trước tiên, chúng ta cần cài đặt go và một số phụ thuộc của gói để xây dựng Podman và các gói khác từ mã nguồn.

Trước khi thực hiện bất kỳ bước nào khác, hãy đảm bảo cập nhật kho lưu trữ ubuntu và nâng cấp hệ thống.
Mã:
sudo apt update
sudo apt upgrade
Bây giờ hãy cài đặt go và tất cả các phụ thuộc của gói bằng lệnh apt sau.
Mã:
sudo apt install -y btrfs-tools git golang-go go-md2man iptables libassuan-dev libdevmapper-dev libglib2.0-dev libc6-dev libgpgme-dev libgpg-error-dev libprotobuf-dev libprotobuf-c-dev libostree-dev libseccomp-dev libselinux1-dev pkg-config
Chờ tất cả các gói cài đặt.

Bước 2 - Tải xuống Cấu hình bổ sung​

Sau khi cài đặt các gói phụ thuộc Podman, chúng ta cần tạo thư mục chứa '/etc/containers' và tải xuống một số cấu hình vào đó.

Chạy lệnh bên dưới để tạo thư mục chứa '/etc/containers'.
Mã:
sudo mkdir -p /etc/containers
Sau đó, tải xuống các sổ đăng ký chứa và cấu hình chính sách vào đó bằng các lệnh curl bên dưới.
Mã:
sudo curl https://raw.githubusercontent.com/projectatomic/registries/master/registries.fedora -o /etc/containers/registries.conf
sudo curl https://raw.githubusercontent.com/containers/skopeo/master/default-policy.json -o /etc/containers/policy.json


Chi tiết hơn về từng cấu hình.

registries.conf - Có thể dùng để định nghĩa sổ đăng ký hình ảnh container. Theo mặc định, Podman sẽ truy xuất và tải xuống hình ảnh container dựa trên tệp đó và từ các sổ đăng ký hình ảnh như docker.io, registry.fedoraproject.org và registry.access.redhat.com.

policy.json - Là một phần của dự án 'skopeo' có thể dùng cho nhiều hoạt động khác nhau trên hình ảnh container và kho lưu trữ hình ảnh.

Bước 3 - Cài đặt Conmon Container Monitoring​

Conmon hay Container Monitoring là một phần của dự án CRI-O có thể dùng để giám sát container, xử lý việc ghi nhật ký từ quy trình container, phục vụ và kết nối máy khách và phát hiện tình huống Out Of Memory (OOM). Podman sử dụng conmon để giám sát các container, mỗi container đều có conmon container monitoring.

Trong bước này, chúng ta sẽ xây dựng và cài đặt conmon từ mã nguồn CRI-O. Nhưng trước tiên, chúng ta cần tạo và xác định thư mục dự án go path.

Theo mặc định, go 1.8+ sẽ sử dụng thư mục '~/go' làm thư mục dự án '$GOPATH'. Vì vậy, hãy tạo bằng lệnh sau.
Mã:
export GOPATH=~/go
mkdir -p $GOPATH
Sau đó, tải mã nguồn CRI-O xuống thư mục dự án '$GOPATH'.
Mã:
git clone https://github.com/kubernetes-sigs/cri-o $GOPATH/src/github.com/kubernetes-sigs/cri-o
Vào thư mục dự án CRI-O.
Mã:
cd $GOPATH/src/github.com/kubernetes-sigs/cri-o
Bây giờ hãy xây dựng và cài đặt tiện ích conmon bằng các lệnh sau.
Mã:
mkdir bin
make bin/conmon
sudo install -D -m 755 bin/conmon /usr/libexec/podman/conmon


Kết quả là tiện ích conmon sẽ được cài đặt trên thư mục '/usr/libexec/podman'. Kiểm tra bằng lệnh sau.
Mã:
/usr/libexec/podman/conmon --help
Và bạn sẽ thấy kết quả như bên dưới.


Bước 4 - Cài đặt CNI (Container Network Interface) Plugin​

Trong bước này, chúng ta sẽ cài đặt thủ công từ mã nguồn các plugin mạng chuẩn cho các container Linux CNI (Container Network Interface).

Tải xuống mã nguồn plugin CNI vào thư mục dự án '$GOPATH' rồi vào đó.
Mã:
git clone https://github.com/containernetworking/plugins.git $GOPATH/src/github.com/containernetworking/plugins
cd $GOPATH/src/github.com/containernetworking/plugins
Sau đó, xây dựng các plugin CNI dành riêng cho hệ thống Linux bằng cách sử dụng tập lệnh xây dựng.
Mã:
./build_linux.sh
Sau khi hoàn tất, hãy tạo một thư mục mới '/usr/libexec/cni' và di chuyển tất cả các plugin nhị phân CNI vào thư mục đó.
Mã:
sudo mkdir -p /usr/libexec/cni
sudo cp bin/* /usr/libexec/cni
Tiếp theo, chúng ta cần tạo thư mục cấu hình CNI và tải xuống mẫu cấu hình CNI cho Podman.



Tạo một thư mục mới '/etc/cni/net.d' và tải xuống cấu hình CNI vào đó bằng các lệnh sau.
Mã:
mkdir -p /etc/cni/net.d
curl -qsSL https://raw.githubusercontent.com/containers/libpod/master/cni/87-podman-bridge.conflist | tee /etc/cni/net.d/99-loopback.conf
Và kết quả là quá trình cài đặt plugin CNI đã hoàn tất.

Bạn có thể kiểm tra tất cả các plugin có sẵn trong thư mục '/usr/libexec/cni'.
Mã:
ls -lah /usr/libexec/cni

Bước 5 - Cài đặt Runc OCI Container Runtime​

Runc là thời gian chạy container OCI có thể được sử dụng để tạo và chạy container, và Podman được sử dụng để khởi chạy container.

Trong bước này, chúng ta sẽ cài đặt Runc OCI runtime từ mã nguồn. Vì vậy, chúng ta cần tải mã nguồn Runc xuống thư mục dự án '$GOPATH'.

Tải mã nguồn Runc xuống thư mục dự án '$GOPATH' và vào đó.
Mã:
git clone https://github.com/opencontainers/runc.git $GOPATH/src/github.com/opencontainers/runc
cd $GOPATH/src/github.com/opencontainers/runc
Bây giờ hãy xây dựng và cài đặt Runc OCI runtime bằng lệnh sau.
Mã:
make BUILDTAGS="seccomp"
sudo cp runc /usr/bin/runc


Sau khi cài đặt hoàn tất, hãy kiểm tra Runc OCI container runtime bằng lệnh sau.
Mã:
runc --help
Và bạn sẽ thấy kết quả như bên dưới.


Bước 6 - Cài đặt Podman​

Tải mã nguồn podman xuống thư mục dự án '$GOPATH' và vào đó.
Mã:
git clone https://github.com/containers/libpod/ $GOPATH/src/github.com/containers/libpod
cd $GOPATH/src/github.com/containers/libpod
Bây giờ hãy xây dựng và cài đặt Podman bằng cách chạy lệnh sau.
Mã:
make
sudo make install PREFIX=/usr


Sau khi cài đặt hoàn tất, hãy chạy các lệnh podman bên dưới.
Mã:
phiên bản podman
thông tin podman
Và bạn sẽ được hiển thị phiên bản Podman và môi trường cài đặt.



Kiểm tra để kéo hình ảnh container.
Mã:
tìm kiếm podman alpine

Mã:
podman pull alpine
podman images


Kiểm tra để chạy một container.
Mã:
podman run --net host --rm -ti alpine echo 'Hello Podman'


Với kết quả đó, quá trình cài đặt và cấu hình Podman trên Ubuntu 18.04 đã hoàn tất thành công.

Sử dụng Podman​

Hướng dẫn chi tiết về cách sử dụng Podman để tạo image, volumes và container có sẵn tại đây: Bắt đầu với Podman: Quản lý Images, Container và Volume

Tham khảo​

 
Back
Bên trên