Fedora Silverblue上的工具箱入門

在本指南中,我們將研究什麼是Toolbox,以及如何在Fedora Linux上使用Toolbox創建和管理容器化的開發環境。

什麼是工具箱?

近年來,Linux容器虛擬化獲得了很大的發展勢頭。 實際上,新一代虛擬化是容器化。 如今,應用程序開發人員大多使用容器作為其首選的開發環境。 存在許多用於創建和管理Linux容器的工具。 Podman,Docker,Vagrant是一些流行的容器管理應用程序。 今天,我們將討論另一個名為 工具箱 這使得使用容器化環境輕鬆進行日常軟件開發變得很容易。

Toolbox是Fedora的內部工具,用於在Fedora基本系統之上創建容器化的命令行環境。 這對於設置可以安裝和使用開發工具和庫的使用和拋出軟件開發環境特別有用。

工具箱專門為 操作系統樹 基於系統,例如 Fedora核心操作系統Fedora銀藍色。 您可能已經知道,基於OSTree的系統是不可變的。 不變操作系統的實際目標是阻止在主機系統上安裝軟件,並鼓勵用戶將軟件安裝在容器中。

與基於OSTree的系統不同,容器是完全可變的。 因此,您可以在容器內安裝安裝自己喜歡的開發和調試工具,編輯器和SDK。 主機系統上未安裝任何軟件。 用外行術語來說,我們可以藉助Toolbox在不可變的主機操作系統上部署可變容器。

默認情況下,Toolbox根據您當前的系統創建容器。 例如,如果您的基本系統是Fedora 33,則工具箱將基於Fedora 33創建一個容器。在該容器中,您可以使用軟件包管理器,例如 yum 或者 dnf 安裝您的首選應用程序。 您也可以基於其他Fedora版本創建容器。

您可以一次啟動多個容器,並同時開始處理不同的項目。 使用完容器後,只需刪除它,並在需要時創建一個新容器即可。 同樣,主機系統不會受到任何影響。 這樣,我們可以保持乾淨的主機操作系統。 這也將極大地避免混亂,並減少了主機OS​​重新安裝的過程。

工具箱建立在 OCI容器圖像Podman。 不需要任何 root 部署容器的特權。 好東西是Toolbox的安裝和使用非常易於使用且易於記憶!

在Fedora上安裝工具箱

工具箱已預裝Fedora Silverblue 30和更高版本。 在Fedora工作站上,您可以使用 dnf 或者 yum 包管理器:

$ sudo dnf install toolbox

或者,

$ sudo yum install toolbox

Fedora Silverblue上的工具箱入門

工具箱提供了少量命令來創建,列出,輸入和刪除容器。

1.顯示工具箱幫助

如果您不熟悉Toolbox,最好顯示Toolbox幫助部分以了解每個命令的功能。 要查看工具箱幫助,請使用以下任一命令:

$ toolbox --help
$ toolbox help
$ toolbox -h

現在讓我們開始創建新的容器。

2.創建一個新的容器

要基於您當前的Fedora OS版本創建新容器,只需運行:

$ toolbox create

此命令將搜索用於從本地系統構建容器的基礎映像。 如果找不到本地圖像,將提示您下載相應的圖像。 類型 ÿ 並按ENTER鍵下載圖像。

樣本輸出:

Image required to create toolbox container.
Download registry.fedoraproject.org/fedora-toolbox:33 (500MB)? [y/N]: y
Created container: fedora-toolbox-33
Enter with: toolbox enter

使用工具箱創建一個新容器

工具箱將從以下位置下載與您當前主機系統的操作系統版本匹配的映像: Fedora註冊表 並根據下載的圖像創建一個新容器。 圖像通常是實際發行版的精簡版。

2.1。 用自定義名稱創建容器

工具箱將自動分配一個唯一的名稱(例如, fedora-toolbox-33)到新創建的容器。 如果您想使用自己選擇的自定義名稱創建容器,請使用 --container-c 標誌,後跟容器名稱,如下所示:

$ toolbox create --container mytoolbox-f33

或不久:

$ toolbox create -c mytoolbox-f33

這裡, mytoolbox-f33 是容器的名稱。

3.根據特定的操作系統版本創建一個新的容器

正如我已經提到的,Toolbox根據當前的操作系統版本創建容器。 例如,如果您正在運行Fedora 34,則Toolbox將基於Fedora 34映像創建一個容器。 但是,您也可以基於其他版本創建容器。 我使用以下命令在Fedora 33 silverblue版本上創建了Fedora 32容器:

$ toolbox create --release f32

或不久之後,

$ toolbox create -r f32

4.列出容器

要列出系統上所有本地可用的容器,請運行:

$ toolbox list

樣本輸出:

IMAGE ID      IMAGE NAME                                        CREATED
9659c2039e64  registry.fedoraproject.org/f32/fedora-toolbox:32  4 months ago
675192cc4238  registry.fedoraproject.org/fedora-toolbox:33      4 weeks ago

CONTAINER ID  CONTAINER NAME     CREATED         STATUS      IMAGE NAME
2cfb48d6a6c5  fedora-toolbox-32  4 months ago    exited      registry.fedoraproject.org/f32/fedora-toolbox:32
1f709997b871  fedora-toolbox-33  27 minutes ago  configured  registry.fedoraproject.org/fedora-toolbox:33

列出工具箱容器列出工具箱容器

如您在上面的輸出中看到的,我有兩個容器,分別是 fedora-toolbox-32fedora-toolbox-33 在我的系統上。

輸出的頂部顯示用於創建容器的基本映像的詳細信息,例如映像ID,映像名稱以及創建這些映像的時間。 在底部,您將看到容器的詳細信息,例如容器ID,容器名稱,創建容器的時間以及容器的狀態。

您也可以分別顯示容器詳細信息或圖像詳細信息。 要僅列出容器詳細信息,請使用 --containers-c 選項:

$ toolbox list --containers
 CONTAINER ID  CONTAINER NAME     CREATED       STATUS   IMAGE NAME
 2cfb48d6a6c5  fedora-toolbox-32  4 months ago  running  registry.fedoraproject.org/f32/fedora-toolbox:32
 1f709997b871  fedora-toolbox-33  21 hours ago  running  registry.fedoraproject.org/fedora-toolbox:33

要僅列出圖像,請使用 --images-i 旗幟:

$ toolbox list --images
 IMAGE ID      IMAGE NAME                                        CREATED
 9659c2039e64  registry.fedoraproject.org/f32/fedora-toolbox:32  4 months ago
 675192cc4238  registry.fedoraproject.org/fedora-toolbox:33      4 weeks ago

請注意,容器名稱和圖像名稱看起來幾乎相同,除了名稱的最後一部分。 容器名稱通常有 連字號 (-)在其名稱的最後一部分之前(例如, fedora-toolbox-33),並且圖片名稱包含 冒號 (:)(例如, fedora-toolbox:33)。

5.進入容器

我們已經創建了容器,但尚未輸入它們。 因此,讓我們使用命令進入容器:

$ toolbox enter

輸入容器後,shell提示符前會帶有一個 鑽石 符號,如以下輸出所示:

⬢[[email protected] ~]$ 

您是否注意到提示最左側的菱形符號? 這意味着您在容器內。

工具箱容器在Fedora Silverblue中運行工具箱容器在Fedora Silverblue中運行

容器與您當前的操作系統無縫集成。 在每個容器內,您將找到現有的用戶名和權限。

您可以從主機系統訪問自己的主目錄和其他幾個位置。 您還可以訪問系統和會話D-Bus,系統日誌和Kerberos等。

每個容器都包含通用的命令行工具,包括程序包管理器(例如, DNF 在Fedora上)。 因此,您可以在容器內安裝和測試任何軟件。 例如,以下命令將安裝所有必需的開發工具:

$ sudo yum groupinstall "Development Tools"

5.1。 輸入特定的容器

當您運行 toolbox enter 命令,不帶任何選項,它將打開默認的工具箱容器。 默認容器是基於主機OS的容器。 如果要打開其他容器,請明確提及其名稱,如下所示:

$ toolbox enter -c fedora-toolbox-32

這裡, -c 用於引用容器名稱和 fedora-toolbox-32 是容器名稱。

6.退出工具箱

容器處理完畢後,只需鍵入 exit 從容器中註銷。

$ exit

7.在容器中運行命令,而無需輸入命令

工具箱的一個顯着功能是您可以在容器中運行命令而無需輸入命令。 以下命令顯示默認容器從主機系統的發行版本:

$ toolbox run cat /etc/redhat-release
Fedora release 33 (Thirty Three)

當您運行 toolbox run 命令,不帶任何選項,它將在默認容器上執行命令。 您還可以通過在其他容器上指定其名稱來在其他容器上運行命令 --container-c 旗幟:

$ toolbox run -c fedora-toolbox-32 cat /etc/redhat-release
Fedora release 32 (Thirty Two)

在工具箱容器中運行命令,而無需輸入命令在工具箱容器中運行命令,而無需輸入命令

8.停止運行容器

從容器退出後,它將繼續運行,直到您停止它為止。 沒有直接的工具箱命令來停止正在運行的容器。 但是,我們可以使用 podman 停止工具箱容器的命令:

$ podman container stop fedora-toolbox-33

記住Toolbox在引擎蓋下使用podman。

9.刪除工具箱容器和圖像

如果您不想要容器或其基本圖像,則可以像下面這樣簡單地擺脫它們。

刪除容器之前,請確保您已退出該容器。

要刪除容器,請運行:

$ toolbox rm fedora-toolbox-32

上面的命令刪除名為的容器 fedora-toolbox-32

要強行刪除容器(即使正在運行),請使用 --force-f 旗幟:

$ toolbox rm -f fedora-toolbox-32

要刪除所有容器,請使用 --all-a 旗幟:

$ toolbox rm --all

通過列出可用的容器來驗證是否刪除了該容器:

$ toolbox list

同樣,您可以使用以下方法刪除工具箱圖像: toolbox rmi 如下命令:

$ toolbox rmi fedora-toolbox:32

請注意 i 在上面的命令中。 這 rm 命令刪除容器,而 rmi 命令刪除圖像。 另外,請不要忘記提及要刪除的圖像的正確名稱。

要刪除所有圖像,請使用 --all-a 旗幟:

$ toolbox rmi --all

10.使用podman管理工具箱容器和圖像

由於Toolbox只是podman的包裝,因此您可以直接使用podman命令來管理容器。

要使用podman命令列出工具箱容器,請運行:

$ podman ps -a

要使用podman列出工具箱圖像,請運行:

$ podman images

要啟動容器:

$ podman start fedora-toolbox-33

要查看所有正在運行的容器的實時資源使用情況統計信息:

$ podman stats

要停止容器:

$ podman stop fedora-toolbox-33

檢查容器:

$ podman inspect fedora-toolbox-33

取出容器:

$ podman rm <container-name>

移除圖片:

$ podman rmi <image-name>

有許多可用的podman命令。 您可以從podman幫助部分查看所有可用的常規命令和選項:

$ podman --help

結論

容器不僅用於實驗和學習目的,而且對於隔離的開發環境也是理想的,您可以在該環境中使用不同的OS版本處理不同的項目。 工具箱使容器的管理變得更加輕鬆和完善!

資源

FedoraFedora SilverblueLinuxLinux容器OstreePodmanToolbox

Sidebar