首頁 > 套件與系統管理 > systemd-nspawn

systemd-nspawn:輕量級容器執行

systemd-nspawn 是 systemd 專案的一部分,是一個用於在沒有虛擬機的情況下建立和執行獨立 Linux 容器環境的工具。它比 chroot 更強大,比虛擬機更輕量級,用於隔離系統,建構測試、開發和部署環境。

概述

systemd-nspawn 在共享主機系統核心的同時,隔離檔案系統、進程樹和網路等,以執行容器。這對於安全地隔離開發和測試環境,或測試不同的發行版環境非常有用。

主要特點

  • 提供輕量級容器環境
  • 共享主機核心和資源效率
  • 檔案系統、進程、網路隔離
  • 比 chroot 更強大的隔離功能
  • 支援基於 systemd 的容器啟動

主要選項

systemd-nspawn 的主要選項用於控制容器的行為、隔離級別和網路設定。

容器基本設定

網路設定

資源與權限

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`systemd-nspawn` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

使用範例

使用 systemd-nspawn 執行各種容器環境的範例。

基本容器執行 (bash)

sudo systemd-nspawn -D /var/lib/machines/mycontainer /bin/bash

使用指定的根檔案系統啟動容器並執行 bash 殼層。

systemd 啟動容器

sudo systemd-nspawn -b -D /var/lib/machines/mycontainer

在容器內部將 systemd 作為初始進程啟動,提供完整的系統環境。

網路隔離容器

sudo systemd-nspawn --private-network -D /var/lib/machines/mycontainer /bin/bash

在沒有網路介面的情況下執行容器,以阻止外部網路存取。

主機路徑綁定掛載

sudo systemd-nspawn -D /var/lib/machines/mycontainer --bind=/home/user/data:/mnt/data /bin/bash

將主機的 /home/user/data 目錄掛載到容器的 /mnt/data。

透過虛擬乙太網路連接網路

sudo systemd-nspawn -D /var/lib/machines/mycontainer --network-veth /bin/bash

在主機和容器之間建立虛擬乙太網路介面以連接網路。

安裝

systemd-nspawn 作為 `systemd-container` 套件的一部分提供。在大多數基於 systemd 的 Linux 發行版中,它預設已安裝或可以輕鬆安裝。

Debian/Ubuntu

sudo apt update && sudo apt install systemd-container

使用 apt 套件管理器安裝 systemd-container 套件。

Fedora/RHEL/CentOS

sudo dnf install systemd-container

使用 dnf 套件管理器安裝 systemd-container 套件。

Arch Linux

sudo pacman -S systemd-container

使用 pacman 套件管理器安裝 systemd-container 套件。

提示與注意事項

有效使用 systemd-nspawn 的提示和注意事項。

主要提示

  • **需要 root 權限**:systemd-nspawn 存取系統資源,因此需要使用 `sudo` 或 root 權限執行。
  • **準備容器映像**:容器的根檔案系統需要預先準備好。可以使用 `debootstrap`、`dnf --installroot`、`pacstrap` 等工具建立。
  • **理解網路設定**:`--network-veth` 允許主機和容器之間的通訊,而 `--private-network` 則完全隔離容器。請根據您的用途選擇合適的選項。
  • **安全考量**:雖然 systemd-nspawn 提供強大的隔離,但由於共享主機核心,它可能比 Docker 等完全虛擬化解決方案更容易受到安全漏洞的影響。執行不可信程式碼時請務必小心。


相同類別命令