当前位置: 首页 > 科技观察

使用Podman以非根用户身份运行Linux容器

时间:2023-03-13 04:33:09 科技观察

Linux容器是由Linux内核提供的进程,具有特定的隔离功能——包括文件系统、进程和网络的隔离。容器有助于提高可移植性——应用程序可以连同其依赖项一起分布在容器映像中,并在几乎任何具有容器运行时的Linux系统上运行。虽然容器技术已经存在了很长时间,但Linux容器是由Docker普及的。“Docker”一词可以指代几种不同的事物,包括容器技术和工具、周边社区或DockerInc公司。但是,在本文中,我将使用它来指代管理Linux容器的技术和工具。什么是DockerDocker是一个守护进程,它以root身份在您的系统上运行,并利用Linux内核的功能来管理正在运行的容器。除了运行容器之外,它还可以轻松管理容器镜像——与容器注册表交互、存储镜像、管理容器版本等等。它基本上支持运行单个容器所需的一切。但是,即使Docker是一个非常方便的Linux容器管理工具,它也有两个缺点:它是一个需要在您的系统上运行的守护进程,并且它需要以root权限运行,这可能存在安全风险。但是,Podman正在解决这两个问题。Podman简介Podman是一个容器运行时环境,提供与Docker非常相似的功能。正如已经暗示的那样,它不需要在您的系统上运行任何守护进程,并且它也可以在没有root权限的情况下运行。让我们看一些使用Podman运行Linux容器的示例。使用Podman运行容器的最简单示例之一可能是运行打印“Helloworld!”的Fedora容器。到命令行:$podmanrun--rm-itfedora:28echo"Helloworld!"方式同Docker:$catDockerfileFROMfedora:28RUNdnf-yinstallcowsay$podmanbuild。-thello-world...省略输出...$podmanrun--rm-ithello-worldcowsay"Hello!"为了构建容器,Podman在后台调用另一个名为Buildah的工具。您可以阅读最近一篇关于使用Buildah构建容器镜像的文章——它不仅仅是使用典型的Dockerfile。除了构建和运行容器,Podman还可以与容器托管进行交互。要登录到容器注册表,例如广泛使用的DockerHub,请运行:$podmanlogindocker.io要推送我刚刚构建的镜像,我只需将其标记为代表一个特定的容器注册表,然后直接推送它。$podman-thello-worlddocker.io/asamalik/hello-world$podmanpushdocker.io/asamalik/hello-world顺便说一下,你有没有注意到我是如何以非root身份运行所有内容的?另外,我的系统上没有运行大而重的守护进程!安装PodmanPodman默认在Silverblue上可用——Silverblue是用于基于容器的工作流的下一代Linux工作站。要在任何Fedora版本上安装它,只需运行:$sudodnfinstallpodman