浅谈博物馆网站建设的意义,网线制作实验报告总结,自己创建一个app要多少钱,营销软文范例大全300字翻译自 Chetansingh 2020年4月24日的博文《Docker Vs Podman》 [1]容器化的一场全新革命是从 Docker 开始的#xff0c;Docker 的守护进程管理着所有的事情#xff0c;并成为最受欢迎和广泛使用的容器管理系统之一。但是#xff0c;请稍等#xff01;您真的会假设 Docker 是… 翻译自 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 dockerpodmanPodman 和 Docker 的镜像具有兼容性。很酷……不是吗Podman 入门安装 podman在 CentOS 8 上安装 podman[cloudbunnytechnopanti ~]$ yum install podman
安装 podman 之后您可以使用下面命令检查版本[cloudbunnytechnopanti ~]$ podman --version
输出podman version 2.1.1运行一个示例容器[cloudbunnytechnopanti ~]$ 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。列出运行中的容器[cloudbunnytechnopanti ~]$ podman ps
检查运行中的容器[cloudbunnytechnopanti ~]$ podman inspect -l
这将有助于“检查”正在运行的容器中的元数据和相关的详细信息 —— 状态运行或停止、创建日期和容器 ID等等。既然我们有容器的详细信息我们便可以测试 http server此例中在端口 8080 上执行端口转发。执行命令[cloudbunnytechnopanti ~]$ curl http://localhost:8080
上面的命令将会显示我们容器化的 httpd server 中的 index 页面。查看容器日志[cloudbunnytechnopanti ~]$ 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