Docker Vs Podman
翻译自 Chetansingh 2020年4月24日的博文《Docker Vs Podman》 [1]
容器化的一场全新革命是从 Docker 开始的,Docker 的守护进程管理着所有的事情,并成为最受欢迎和广泛使用的容器管理系统之一。
但是,请稍等!您真的会假设 Docker 是唯一有效的容器化方式而认为值得坚持去使用它吗?
这篇博文将帮助您了解以下问题:
为什么我们不使用 Docker?为什么我们要使用 Docker?没有别的选择了吗?其实,当您决定要开始使用一套新的工具进行容器管理时,Docker 便成了“别的”工具,此时没有了 “docker containers/images”,只有 “containers/images”。
在继续讨论本文内容之前,让我们先来了解一下 Docker 是什么以及它是如何工作的。
Docker 是什么?
Docker 是一个容器化平台,在这个平台中,我们可以将我们的应用程序与容器中的库和环境绑定在一起。Docker Container 在某种程度上类似于虚拟机。
但是……
与硬件虚拟化的虚拟机不同,在 Docker 中,运行中的容器共享主机 OS 内核。
Docker 是如何工作的呢?让我们来看一下:
Docker 流程:
Docker 的两个主要组成模块是: Docker Daemon 和 Docker CLI。
请允许我简短地解释一下:
Docker Daemon: 一个常驻的后台进程,帮助管理和创建 Docker 镜像、容器、网络和存储卷。
Docker Engine REST API: 一个应用程序用来与 Docker 守护进程进行交互的 API; 可以通过 HTTP 客户端访问它。
Docker CLI: 一个用来与 Docker 守护进程进行交互的 Docker 命令行客户端,也就是 Docker 命令。
如果换个角度思考,我们可以把下面这些问题与 Docker 联系起来:
众所周知,Docker 运行在单个进程上,这可能会导致单点故障。
所有子进程都归属于此进程。
无论何时,如果 Docker 守护进程失败,所有子进程都会失去跟踪并进入孤立状态。
安全漏洞。
对于 Docker 的操作,所有步骤都需要由 root 执行。
Podman
现在我们知道了 Docker 是如何工作的,下面我们来探讨有关 Podman 的主题,以及我们如何克服与 Docker 相关的大多数问题。
此时,您一定想了解“Podman 是什么?”
Podman 是一个无守护进程的容器引擎,用于在 Linux 系统上进行开发、管理和运行 OCI Containers。Containers 能以 root 模式运行,也能以非 root 模式运行。
Podman 直接与镜像注册表、容器和镜像存储进行交互。
我们知道,Docker 是建立在 runC 容器运行时之上 [2],并且使用了守护进程的; Podman 中没有使用守护进程,而是直接使用 runC 容器运行时。
译者注:
Podman 没有守护进程,也不用 REST API 交互,可以使用非 root 模式运行,这便解决了上面提到的 与 Docker 相关的问题 3、4 和 5。
关于 Podman,有几件事需要重点了解一下:
Podman 不需要启动或管理像 Docker daemon 那样的守护进程。
适用于 Docker 的命令在 Podman 中也是同样可用的。您可以指定命令别名:
alias docker=podman
Podman 和 Docker 的镜像具有兼容性。
很酷……不是吗?
Podman 入门
安装 podman
在 CentOS 8 上安装 podman:
[cloudbunny@technopanti ~]$ yum install podman
安装 podman 之后,您可以使用下面命令检查版本:
[cloudbunny@technopanti ~]$ podman --version
输出:podman version 2.1.1
运行一个示例容器
[cloudbunny@technopanti ~]$ podman run -dt -p 8080:8080/tcp -e HTTPD_VAR_RUN=/var/run/httpd -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d \
-e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf \
-e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ \
registry.fedoraproject.org/f29/httpd /usr/bin/run-httpd
由于在 podman run
命令中 -d
表示以分离模式运行容器,因此 Podman 将在容器运行后打印出容器 ID。注意,这里我们使用了端口转发来访问容器内的 HTTP server。
注释:
-d
表示以分离模式在后台运行此容器。Podman 在后台运行后会打印出容器 ID。(例如:f1f7215ccf26fe7bb83dd108cdb41480aae5794058a007dd85a098af0d390563)
-p
: 利用端口转发,使能够访问容器内的 HTTP server。
列出运行中的容器
[cloudbunny@technopanti ~]$ podman ps
检查运行中的容器
[cloudbunny@technopanti ~]$ podman inspect -l
这将有助于“检查”正在运行的容器中的元数据和相关的详细信息 —— 状态(运行或停止)、创建日期和容器 ID,等等。
既然我们有容器的详细信息,我们便可以测试 http server,此例中,在端口 8080 上执行端口转发。
执行命令:
[cloudbunny@technopanti ~]$ curl http://localhost:8080
上面的命令将会显示我们容器化的 httpd server 中的 index 页面。
查看容器日志
[cloudbunny@technopanti ~]$ podman logs --latest
希望您享受本文的阅读 ????
相关链接:
https://medium.com/technopanti/docker-vs-podman-c03359fabf77 Docker Vs Podman ↩︎
https://www.docker.com/blog/runc/ Introducing runC ↩︎
作者 :Chetansingh
译者 :技术译民
出品 :技术译站(https://ITTranslator.cn/)
END
Docker Vs Podman相关推荐
- 在openEuler 21.9安装自带的容器软件Docker、podman、skopeo
openEuler 21.9上的Docker.podman.Skopeo版本都偏低. 此外没有自带buildah和cri-o. 不知道下一个版本情况会不会好点. [root@openeuler iso ...
- Docker、Podman 容器“扫盲“ 学习笔记【与云原生的故事】
[摘要] 笔记内容:由理论和具体docker常用操作构成.这篇博文笔记的定位是:温习,查阅,不适合新手学习.你拥有青春的时候,就要感受它,不要虚掷你的黄金时代,不要去倾听... 写在前面 笔记内容:由 ...
- Docker、Podman 容器“扫盲“ 学习笔记
写在前面 之前只是做毕业设计时,接触一点,用DockFile在阿里云上部署了毕设.后来docker端口问题,机器被植入木马,拉去挖矿,cup天天爆满,百度半天删了好多文件不管用,后来恢复镜像了,之后在 ...
- Docker学习总结(65)—— 容器引擎 Docker 与 Podman 的详细对比分析
一.什么是 Linux 容器? Linux 容器是由 Linux 内核所提供的具有特定隔离功能的进程,Linux 容器技术能够让你对应用及其整个运行时环境(包括全部所需文件)一起进行打包或隔离.从而让 ...
- Podman又是什么新技术?它和Docker有啥区别?
容器编排工具作为当今最重要的Web开发技术之一,众多强者都在尝试争夺这一行业的主导地位. Podman是RedHat的一款产品,旨在使用类似于Kubernetes的方法来构建.管理和运行容器,作为一款 ...
- Docker 大势已去,Podman 万岁
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 米开朗基杨 来源 | 公众号「云原生实验室」 Podman 原来是 CRI-O 项 ...
- Docker/Podman使用入门---从容器构建镜像 提交镜像到服务器UCloud dockerhub
文章目录 1.docker commit 提交镜像命令 2.将镜像提交到UCloud服务器 step1: 先在UCloud服务器上面,创建镜像仓库 step2: 登录UCloud镜像仓库 step3: ...
- Containerd客户端工具(CLI)介绍ctr,nerdctl,crictl,podman以及docker
下面设计到私有镜像库私有镜像库 http和https两种方式 浅谈 containerd 架构及高级技巧 containerd是一个高级容器运行时,又名容器管理器.简单来说,它是一个守护进程,在单个主 ...
- 选择 podman 的理由, 以及它和 Kubernetes , Docker 的区别
一.podman 是什么 官方网站: podman.io 官方自己的介绍: https://podman.io/whatis.html 名称 podman ,官方说明是 Pod Manager , 所 ...
最新文章
- oracle管道化表函数
- java抛异常 代替返回_请问业务层方法是抛出一个异常好还是返回一个结果更好...
- 网络攻防第十一周作业
- Python字典技巧一锅炖
- go语言服务器连接mysql,golang中连接mysql数据库
- 悲苦手机命,“熬”在新零售
- 06-移动端开发教程-fullpage框架
- 【S交换机技术连载帖】交换机在江湖系列-序言
- 计算机网络对英语教学的消极影响,浅谈计算机对英语写作和教学的影响
- h5+app Android上架华为应用市场被拒原因“拒绝获取手机权限后app会闪退“以及隐私政策问题
- SQL数据库完美恢复 SQL数据库损坏修复
- ysoserial URLDNS解析
- 聊聊并发 生产者消费者模式
- HDU - 3594 Cactus (仙人掌图)
- 记录oracle的一些操作
- 1、会计的概念、职能和目标
- 【雷达与对抗】【2012.12】基于脉冲多普勒雷达的行走检测
- 树莓水果创意广告文案,朋友圈晒水果走心文案树莓
- python第四周和第五周
- 疯狂英语口语突破-突破句型3