安装Podman

让我们看一下Podman如何安装在CentOS和Fedora中:

1、CentOS

$ sudo yum -y install podman

2、Fedora

$ sudo dnf install -y podman

3、如果你使用的是Ubuntu,请看:在Ubuntu系统上安装Podman的方法。

使用Podman运行Docker容器

1、使用Podman来Pull image

podman pull ubuntu

podman images

详细请看如下图:

四、上手podman
4.1.安装

下面我们就来简单的搞一搞,在CentOS操作系统可以直接使用yum命令安装podman。事先说明的是我这个是一台新的最小化安装的CentOS7虚拟机,并不包含docker,也不曾安装。

yum -y install podman # root用户安装

查看版本

podman version

Version: 1.6.4
RemoteAPI Version: 1
Go Version: go1.12.12
OS/Arch: linux/amd64

新建podman用户,后续使用该用户运行容器。

adduser podman # root用户新建podman用户

4.2.CentOS7环境下需要做的特殊处理

出于上文中所说的安全性考虑,我们不使用root用户操作镜像及容器。所以需要做如下的一些配置。

如果你使用CentOS7,需要做如下的一些特殊处理。其他的操作系统可能需要不同的解决方案,这些解决方案基本大同小异。

如果你使用root用户运行镜像容器,这些特殊处理就不需要做,直接就可以用

CentOS7默认关闭用户namespace,将它打开

echo 10000 > /proc/sys/user/max_user_namespaces;
grubby –args=”user_namespace.enable=1” –update-kernel=”$(grubby –default-kernel)”;
echo “user.max_user_namespaces=10000” >> /etc/sysctl.conf;

4.3. 配置非root用户id及组id范围

尝试在linux宿主机操作系统新建用户podman用户环境下执行nginx镜像拉取

su - podman # 切换用户为podman
podman pull docker.io/library/nginx # 执行拉取镜像

如果你有如下的报错信息

ERRO[0000] cannot find mappings for user podman: No subuid ranges found for user “podman” in /etc/subuid

或者如下报错信息

Error processing tar file(exit status 1): there might not be enough IDs available in the namespace

请退出podman用户切换回到root用户(exit命令),执行下列命令,podman为运行容器的一个非root用户

echo “podman:100000:65536” >> /etc/subuid
echo “podman:100000:65536” >> /etc/subgid

这段配置的作用就是设置一个容器内的操作系统与宿主机操作系统用户的uid、gid之间的映射关系。如上所示 100000 - 165535(100000 + 65535) 在宿主机的id就映射到容器内的 0-65535的用户。配置完之后执行如下命令

podman system migrate

官方解释上面的命令可以让配置生效,但是不知道什么原因,笔者执行该命令配置并未生效,而是重启了一下操作系统才生效。
五、在非root用户下容器镜像的使用

同样的先把root切换到宿主机的podman用户

su - podman

拉取镜像命令

$ podman pull docker.io/library/nginx

Trying to pull docker.io/library/nginx…
Getting image source signatures
Copying blob 1ae07ab881bd done
Copying blob 091c283c6a66 done
Copying blob 78091884b7be done
Copying blob 5eb5b503b376 done
Copying blob b559bad762be done
Copying blob 55de5851019b done
Copying config c316d5a335 done
Writing manifest to image destination
Storing signatures
c316d5a335a5cf324b0dc83b3da82d7608724769f6454f6d9a621f3ec2534a5a

查看镜像列表(在x用户下拉取的镜像,在y用户下是查看不到的)

$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/nginx latest c316d5a335a5 2 weeks ago 146 MB

运行容器镜像

podman run -p 8080:80 -d docker.io/library/nginx

其他的命令就不一一的列举了,和docker命令运行方式是一模一样的,参数顺序、名称也是一摸一样的。

作者:Jeebiz  创建时间:2023-02-12 02:00
最后编辑:Jeebiz  更新时间:2023-05-24 09:42