将 OS 相关变量加载到 shell:
. /etc/os-release
添加 repo:
sudo sh -c "echo 'deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_${VERSION_ID}/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list"
添加 apt key:
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_${VERSION_ID}/Release.key | sudo apt-key add -
安装前常规更新:
sudo apt update
安装 Podman:
sudo apt install podman
我这里遇到以下错误:
The following packages have unmet dependencies:
podman : Depends: libseccomp2 (>= 2.4.3-1) but 2.3.3-4 is to be installed
Depends: dbus-user-session but it is not going to be installed
Recommends: slirp4netns (>= 100:1.1.8-3) but it is not going to be installed
Recommends: containernetworking-plugins (>= 100:0.9.1-1) but it is not going to be installed
Recommends: uidmap but it is not going to be installed
Recommends: fuse-overlayfs but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
根据提示逐一解决:
apt-get install libseccomp2 dbus-user-session slirp4netns containernetworking-plugins uidmap fuse-overlayfs
其中libseccomp2 可能需要添加源:
deb http://ftp.de.debian.org/debian sid main
deb http://mirrors.aliyun.com/debian sid main
再次运行安装程序后,应该有安装了基本的 Podman,检查哈:
podman info
然后可能会有以下报错:
ERRO[0000] unable to write system event: "write unixgram @00008->/run/systemd/journal/socket: sendmsg: no such file or directory"
编辑或者新建 /etc/containers/containers.conf :
sudo vim /etc/containers/containers.conf
修改 events_logger 从:
events_logger = "journald"
到(新建请新加):
events_logger = "file"
可以通过以下方式来测试Podman功能 :
podman run --name nginx -p 8080:80 -d nginx:alpine
可能会出现以下报错:
Trying to pull docker.io/library/nginx:alpine...
Getting image source signatures
Copying blob 758848c48411 done
Copying blob 0ae30075c5da done
Copying blob 9da81141e74e done
[engine]
Copying blob 540db60ca938 done
Copying blob 7f40e809fb2d done
Copying blob b2e41dd2ded0 done
Copying config a6eb2a334a done
Writing manifest to image destination
Storing signatures
ERRO[0032] unable to write pod event: "write unixgram @0000e->/run/systemd/journal/socket: sendmsg: no such file or directory"
WARN[0032] Failed to add conmon to systemd sandbox cgroup: dial unix /run/systemd/private: connect: no such file or directory
Error: cannot open sd-bus: No such file or directory: OCI not found
同样还是设置containers.conf文件:
vim /etc/containers/containers.conf
更新或者添加如下内容:
[engine]
events_logger="file"
cgroup_manager="cgroupfs"
再次尝试运行nginx:alpine,并打开 http://localhost:8080/ ,看到熟悉的Welcome to nginx! 就完工啦。
更多安装请参照 Installation 和 How to run Podman on Windows with WSL2