Quantcast
Channel: 容器云计算,Devops,DBA,网络安全。
Viewing all articles
Browse latest Browse all 780

Podman - 下一代Linux容器工具

$
0
0

Podman  - 下一代Linux容器工具            

     podman是一个用于处理容器的开源Linux工具。 包括注册表中的容器,例如docker.io和quay.io. 在本文中,将展示如何使用podman构建容器映像并从中创建容器。 接下来,我展示如何将图像上传到注册表,最后,展示如何使用docker在非Linux系统上使用podman创建的完全兼容的图像创建容器。

     开始之前,快速了解项目名称及徽标。 像展示的那样,podman可以使用容器,但也适用于在同一主机上一起部署的容器,容器组。 (如果了解Kubernetes,就会熟悉podman的工作原理。)重要的是,一组海豹被称为豆荚,因为上面有令人敬畏的豆荚标志。 不会在这里讨论pods,的确它是该工具的一个很棒的功能。

足够的背景,让我们继续前进。这里使用的是reshot linux

第一步是安装podman。 像往常一样,明智的第一步是运行更新,以获得良好的系统:

$ sudo dnf -y update

 在系统是最新时,继续安装podman:

$ sudo dnf -y install podman

使用yum或apt-get来安装和管理软件。

准备podman,可使用别名docker = podman。 这意味着Linux系统将始终调用podman,即使习惯性地输入docker也是如此。 出于研究目的,运行docker和podman来表明它们是兼容的,为了区分,最好不要使用别名。 

 安装后,从sudo podman版本开始查看正在使用的版本。 这里使用的是0.9.3.1版本:

$ sudo podman versionpodman version 0.9.3.1

     这里以root身份运行podman,该命令永远不需要root访问权限。 很快就会谈到root访问权限。

接下来,运行podman  info 以获取有关环境的一些信息: 

$ sudo podman info. . .  registries:
  - docker.io
  - registry.fedoraproject.org
  - quay.io
  - registry.access.redhat.com
  - registry.centos.org
. . .

唯一细节是podman在系统上使用了五个注册表。 正在尝试加载容器映像,它首先在本地计算机上查找,然后按照列出的顺序检查其他注册表。

     使用下面的Dockerfile,并使用podman来构建一个图像。 该文件将Colossal Cave Adventure游戏的源代码复制到容器映像(WORKDIR和COPY命令)中,出于安全原因(RUN命令的前六行)安装一些内核更新,以构建 代码(接下来的五行RUN),最后构建代码(RUN的最后一行):

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
CMD tail -f /dev/null

 用命令创建容器映像:

$ 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 imagesREPOSITORY                                         TAG                 IMAGE ID            CREATED              SIZElocalhost/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/bashssh-keygen: generating new host keys: RSA1 RSA DSA ECDSA ED25519
[user@d767729eca88 open-adventure]$

将localhost /添加到图像名称的开头,可以工作,指出一点。 

在容器内部进行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/bashssh-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。


Viewing all articles
Browse latest Browse all 780

Trending Articles


Vimeo 10.7.1 by Vimeo.com, Inc.


UPDATE SC IDOL: TWO BECOME ONE


KASAMBAHAY BILL IN THE HOUSE


Girasoles para colorear


Presence Quotes – Positive Quotes


EASY COME, EASY GO


Love with Heart Breaking Quotes


Re:Mutton Pies (lleechef)


Ka longiing longsem kaba skhem bad kaba khlain ka pynlong kein ia ka...


Vimeo 10.7.0 by Vimeo.com, Inc.


FORECLOSURE OF REAL ESTATE MORTGAGE


FORTUITOUS EVENT


Pokemon para colorear


Sapos para colorear


Smile Quotes


Letting Go Quotes


Love Song lyrics that marks your Heart


RE: Mutton Pies (frankie241)


Hato lada ym dei namar ka jingpyrshah jong U JJM Nichols Roy (Bah Joy) ngin...


Long Distance Relationship Tagalog Love Quotes