足够的背景,让我们继续前进。这里使用的是reshot linux
第一步是安装podman。 像往常一样,明智的第一步是运行更新,以获得良好的系统:
$ sudo dnf -y update
$ sudo dnf -y install podman
使用yum或apt-get来安装和管理软件。
$ sudo podman version podman version 0.9.3.1
$ sudo podman info . . . registries: - docker.io - registry.fedoraproject.org - quay.io - registry.access.redhat.com - registry.centos.org . . .
唯一细节是podman在系统上使用了五个注册表。 正在尝试加载容器映像,它首先在本地计算机上查找,然后按照列出的顺序检查其他注册表。
FROM registry.centos.org/che-stacks/centos-stack-base WORKDIR /usr/src/open-adventure COPY ./open-adventure /usr/src/open-adventure RUN sudo yum -y update && \ sudo yum -y install kernel-headers && \ sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org && \ sudo rpm -Uvh http://elrepo.org/linux/kernel/el7/x86_64/RPMS/elrepo-release-7.0-3.el7.elrepo.noarch.rpm && \ sudo yum --enablerepo=elrepo-kernel -y install kernel-ml && \ sudo yum --enablerepo=elrepo-kernel -y swap kernel-headers -- kernel-ml-headers && \ sudo yum -y install centos-release-scl && \ sudo yum -y install gcc && \ sudo yum -y install make && \ sudo yum -y install libedit-devel && \ sudo yum -y install python-yaml && \ sudo make
$ sudo podman build -t open-adventure:podman . STEP 1: FROM registry.centos.org/che-stacks/centos-stack-base Getting image source signatures Copying blob sha256:f9ce27a295e879233c8fbbf9ab67944a10e1ce80da69a46f87c583082a1ff3bb . . . STEP 8: CMD tail -f /dev/null --> 9e5d996316fac25084c5fa4d62ff4cbebad39dd8913ca4aff46c53653589ec7 STEP 9: COMMIT open-adventure:podman
(一如既往,不要忘记构建命令末尾的点。)pull基本映像需要几分钟,尤其是第一次构建容器映像时。 这是铁的数据,但根据我的经验,使用podman构建映像似乎没有比docker更快或更慢。
正如您所料,运行podman映像会显示刚构建的映像:
$ sudo podman images REPOSITORY TAG IMAGE ID CREATED SIZE localhost/open-adventure podman a2b9a17504ac About a minute ago 1.1GB registry.centos.org/che-stacks/centos-stack-base latest
请注意,localhost /已添加到图像的名称。 这告诉podman图像位于本地计算机上的图像缓存中。
接下来,我将从图像中创建一个容器。 podman run --rm -it [我刚刚创建的图像的名称] / bin / bash。 这在容器启动时运行bash shell。
$ podman run --rm -it open-adventure:podman /bin/bash ssh-keygen: generating new host keys: RSA1 RSA DSA ECDSA ED25519 [user@d767729eca88 open-adventure]$
在容器内部进行bash提示,这个容器里有Colossal Cave Adventure,正如podman构建图像时编译的那样。 可以运行./advent并玩游戏。 进入建筑物内,吃点东西,喝点东西,然后退出游戏。 诸如此类的事情。
这里的要点是我创建了一个图像,可以与任何想要玩游戏的人分享。 当然,也可以构建包含有用软件的图像。
谈到分享,我会把图像放在quay.io的公共回购中。 首先,我将使用podman登录:
sudo podman login quay.io -u dougtidwell -p [password]
注意,把图像推送到quay.io时,必须指定quay.io repo和用户名(dougtidwell)作为远程图像名称的一部分。
根据映像的基本操作系统,quay.io可能会扫描安全漏洞。 我使用未安装任何内核更新的修改过的Dockerfile构建了标记为不安全的图像。 该图像有一些漏洞,quay.io给了我帮助我解决问题的建议。 我留下旧图像来说明问题。 (关键是安全扫描非常酷。)
根据映像的基本操作系统,quay.io可能会扫描安全漏洞。 使用未安装任何内核更新的修改过的Dockerfile构建了标记为不安全的图像。 该图像有一些漏洞,quay.io给出帮助解决问题的建议。 (关键是安全扫描非常酷。)
最后,为了结束演示,让我们回到我的Mac并使用docker从quay.io中提取图像。 请记住,podman只是Linux,所以我们必须使用docker。 我在一分钟前就在Linux上使用了相同的选项,我可以像在Linux上一样运行该图像并使用它:
$ docker run --rm -it open-adventure:podman /bin/bash ssh-keygen: generating new host keys: RSA1 RSA DSA ECDSA ED25519
image完全兼容。 事实上,podman使用的一些库也是docker的一部分。
在我们开始之前,请快速了解容器架构。 docker在Linux上作为守护进程运行。 这会产生一定的开销,并且还需要任何想要构建容器映像的人具有root访问权限。 这可能会产生安全风险,尤其是当用户知道docker run命令的--privileged选项时。
守护进程也扼杀了容器社区的创新。 如果要更改容器的工作方式,则需要更改docker守护程序并将这些更改推送到上游。 没有守护进程,容器基础结构更加模块化,更容易进行更改。 podman的无守护进程架构更加灵活和安全。

这是对podman的快速概述。 正如您所料,它是完全开源的,请查看podman.io以获取文档,演示文稿,当然还有源代码。 我们建议您在Linux系统上安装该工具并使用它。 您可以从我的quay.io帐户中提取我刚建立的容器图像,并使用它来播放Colossal Cave Adventure。