这篇文章将为大家详细讲解有关podman容器工具怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
podman简介
Podman是一个开源项目,可在大多数Linux平台上使用并开源在GitHub上。Podman是一个无守护进程的容器引擎,用于在Linux系统上开发,管理和运行Open Container Initiative(OCI)容器和容器镜像。Podman提供了一个与Docker兼容的命令行前端,它可以简单地作为Docker cli,简单地说你可以直接添加别名:alias docker = podman来使用podman。
Podman控制下的容器可以由root用户运行,也可以由非特权用户运行。Podman管理整个容器的生态系统,其包括pod,容器,容器镜像,和使用libpod library的容器卷。Podman专注于帮助您维护和修改OCI容器镜像的所有命令和功能,例如拉取和标记。它允许您在生产环境中创建,运行和维护从这些映像创建的容器。
官网:https://podman.io/
安装文档:https://github.com/containers/libpod/blob/master/install.md
配置参考:https://github.com/containers/image/blob/master/docs/containers-registries.conf.5.md
Podman和Docker的主要区别是什么?
dockers在实现CRI的时候,它需要一个守护进程,其次需要以root运行,因此这也带来了安全隐患。
podman不需要守护程序,也不需要root用户运行,从逻辑架构上,比docker更加合理。
在docker的运行体系中,需要多个daemon才能调用到OCI的实现RunC。
在容器管理的链路中,Docker Engine的实现就是dockerd
daemon,它在linux中需要以root运行,dockerd调用containerd,containerd调用containerd-shim,然后才能调用runC。顾名思义shim起的作用也就是“垫片”,避免父进程退出影响容器的运训
podman直接调用OCI,runtime(runC),通过common作为容器进程的管理工具,但不需要dockerd这种以root身份运行的守护进程。
在podman体系中,有个称之为common的守护进程,其运行路径通常是/usr/libexec/podman/conmon,它是各个容器进程的父进程,每个容器各有一个,common的父则通常是1号进程。podman中的common其实相当于docker体系中的containerd-shim。
podman安装使用
使用centos官方yum源进行安装
$ yum install -y podman
$ podman version
Version: 1.4.4
RemoteAPI Version: 1
Go Version: go1.10.3
OS/Arch: linux/amd64
配置镜像加速
这里使用阿里云镜像加速器
cp /etc/containers/registries.conf{,.bak}
cat > /etc/containers/registries.conf << EOF
unqualified-search-registries = ["docker.io"]
[[registry]]
prefix = "docker.io"
location = "uyah70su.mirror.aliyuncs.com"
EOF
拉取镜像
$ podman pull centos
Trying to pull docker.io/library/centos...Getting image source signatures
Copying blob 8ba884070f61 done
Copying config 9f38484d22 done
Writing manifest to image destination
Storing signatures
9f38484d220fa527b1fb19747638497179500a1bed8bf0498eb788229229e6e1
运行容器
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/centos latest 9f38484d220f 4 months ago 209 MB
$ podman run -itd --name test centos sleep 3600
1fc033bb22096008049709d70869d54e3fa9e4d72c6d098f4b5601fd6747a9b9
$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1fc033bb2209 docker.io/library/centos:latest sleep 3600 7 seconds ago Up 6 seconds ago test
配置为别名
$ echo "alias docker=podman" >> .bashrc
$ source .bashrc
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1fc033bb2209 docker.io/library/centos:latest sleep 3600 7 minutes ago Up 7 minutes ago test
关于“podman容器工具怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。