日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker Vs Podman

發布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。