1. 程式人生 > >使用 Podman 以非 root 使用者身份執行 Linux 容器

使用 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 執行容器

  1. $ podman run --rm-it fedora:28echo"Hello world!"

使用通用 Dockerfile 構建映象的方式與 Docker 相同:

  1. $ catDockerfile
  2. FROM fedora:28
  3. RUN dnf -y install cowsay
  4. $ podman build .-t hello-world
  5. ... output omitted ...
  6. $ podman run --rm-it hello-world cowsay "Hello!"

為了構建容器,Podman 在後臺呼叫另一個名為 Buildah 的工具。你可以閱讀最近一篇關於使用 Buildah 構建容器映象的文章 —— 它不僅僅是使用典型的 Dockerfile。

除了構建和執行容器外,Podman 還可以與容器託管進行互動。要登入容器註冊庫,例如廣泛使用的 Docker Hub,請執行:

  1. $ podman login docker.io

為了推送我剛剛構建的映象,我只需打上標記來代表特定的容器註冊庫,然後直接推送它。

  1. $ podman -t hello-world docker.io/asamalik/hello-world
  2. $ podman push docker.io/asamalik/hello-world

順便說一下,你是否注意到我如何以非 root 使用者身份執行所有內容?此外,我的系統上沒有執行又大又重的守護程序!

安裝 Podman

Podman 預設在 Silverblue 上提供 —— 一個基於容器的工作流的新一代 Linux 工作站。要在任何 Fedora 版本上安裝它,只需執行:

  1. $ sudo dnf install podman

via: https://fedoramagazine.org/running-containers-with-podman/

作者:Adam Šamalík 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出