2021-05-12 14:32:11
使用 Podman 以非 root 使用者身份執行 Linux 容器
Linux 容器是由 Linux 核心所提供的具有特定隔離功能的進程 —— 包括檔案系統、進程和網路的隔離。容器有助於實現可移植性 —— 應用可以在容器映象中與其依賴項一起分發,並可在幾乎任何有容器執行時環境的 Linux 系統上執行。
雖然容器技術存在了很長時間,但 Linux 容器是由 Docker 而得到了廣泛推廣。 “Docker” 這個詞可以指幾個不同的東西,包括容器技術和工具,周圍的社群,或者 Docker Inc. 公司。但是,在本文中,我將用來指管理 Linux 容器的技術和工具。
什麼是 Docker
Docker 是一個以 root 身份在你的系統上執行的守護程式,它利用 Linux 核心的功能來管理正在執行的容器。除了執行容器之外,它還可以輕鬆管理容器映象 —— 與容器註冊庫互動、儲存映像、管理容器版本等。它基本上支援執行單個容器所需的所有操作。
但即使 Docker 是管理 Linux 容器的一個非常方便的工具,它也有兩個缺點:它是一個需要在你的系統上執行的守護行程,並且需要以 root 許可權執行,這可能有一定的安全隱患。然而,Podman 在解決這兩個問題。
Podman 介紹
Podman 是一個容器執行時環境,提供與 Docker 非常相似的功能。正如已經提示的那樣,它不需要在你的系統上執行任何守護行程,並且它也可以在沒有 root 許可權的情況下執行。讓我們看看使用 Podman 執行 Linux 容器的一些範例。
使用 Podman 執行容器
其中一個最簡單的例子可能是執行 Fedora 容器,在命令列中列印 “Hello world!”:
$ podman run --rm-it fedora:28echo"Hello world!"
使用通用 Dockerfile 構建映象的方式與 Docker 相同:
$ catDockerfile
FROM fedora:28
RUN dnf -y install cowsay
$ podman build .-t hello-world
... output omitted ...
$ podman run --rm-it hello-world cowsay "Hello!"
為了構建容器,Podman 在後台呼叫另一個名為 Buildah 的工具。你可以閱讀最近一篇關於使用 Buildah 構建容器映象的文章 —— 它不僅僅是使用典型的 Dockerfile。
除了構建和執行容器外,Podman 還可以與容器託管進行互動。要登入容器註冊庫,例如廣泛使用的 Docker Hub,請執行:
$ podman login docker.io
為了推播我剛剛構建的映象,我只需打上標記來代表特定的容器註冊庫,然後直接推播它。
$ podman -t hello-world docker.io/asamalik/hello-world
$ podman push docker.io/asamalik/hello-world
順便說一下,你是否注意到我如何以非 root 使用者身份執行所有內容?此外,我的系統上沒有執行又大又重的守護行程!
安裝 Podman
Podman 預設在 Silverblue 上提供 —— 一個基於容器的工作流的新一代 Linux 工作站。要在任何 Fedora 版本上安裝它,只需執行:
$ sudo dnf install podman
via: https://fedoramagazine.org/running-containers-with-podman/
作者:Adam Šamalík 選題:lujun9972 譯者:geekpi 校對:wxy
相關文章