一個超級牛皮的容器管理工具 Container Desktop
一、介紹
Container Desktop 是一款為 Podman 設計的跨平臺桌面伴侶應用程序,提供直觀的圖形化界面,簡化容器管理。作為業界首個跨平臺容器用戶界面解決方案,它通過定制化連接技術解決了不同操作系統間的通信難題。在 Windows 上,它利用自定義 TCP 中繼實現 WSL 與原生環境的通信;5.2.13 版本引入基于 SSH 中繼的新方法,結合 Windows 命名管道,提升安全性并減少 TCP 服務暴露風險。該技術基于 gvisor-tap-vsock 改進,支持 Podman 和 Docker。盡管項目創建者坦言這是其首次開源嘗試,并感受到開發挑戰,但 Container Desktop 仍被視為“完成狀態”,展現了其在容器管理領域的重要價值。
二、主要功能與使用
Podman Desktop 提供以下關鍵功能:
- 容器管理:創建、啟動、停止和刪除容器,查看日志并進入容器 shell。
- 鏡像處理:拉取、推送、構建和搜索容器鏡像。
- Pod 管理:管理容器組(Pods),查看統一日志。
- Kubernetes 集成:本地部署和管理 Kubernetes 應用,生成和測試 Kubernetes YAML 配置。
- 擴展點:開發和集成自定義擴展,增強功能。
- 多引擎支持:同時處理多個容器引擎,如 Podman 和 Docker。
三、平臺要求與兼容性
Container Desktop 支持多個主流操作系統平臺,每個平臺有其特定的安裝要求:
平臺 | 最低要求 | 推薦配置 | 依賴組件 |
Linux | Kernel 4.0+ | Kernel 5.15+ | Podman 4.0+, aardvark-dns, passt |
Windows | Windows 10 | Windows 11 22H2 | WSL2, Podman-WSL |
macOS | macOS 11 | macOS 13+ | Lima 0.8+, QEMU |
在 Linux 系統上,用戶需要安裝 podman,建議使用 4.0 或更高版本。許多發行版通常包含的是較舊版本的 podman,因此可能需要使用第三方倉庫如 Aalvistack 獲取最新版本。
在 Windows 系統上,可以直接安裝 podman 或者在自定義的 WSL 發行版中按照 Linux 的安裝說明配置最新版本的 podman。Container Desktop 提供了一個定制的 TCP 中繼,用于將 Unix 套接字從 WSL 環境傳遞回 Windows 原生上下文。
在 macOS 系統上,用戶可以選擇安裝 podman 或 lima。
四、與 Docker Desktop 的比較
Container Desktop vs Podman Desktop:
功能/特性 | Container Desktop | Podman Desktop |
開發狀態 | 完成狀態,個人維護 | 活躍開發,RedHat 官方支持 |
首次發布 | 較早(先驅) | 較晚 |
跨平臺支持 | Windows, macOS, Linux | Windows, macOS, Linux |
支持的容器引擎 | Podman, Docker | 主要是 Podman,可擴展 |
GUI 設計 | 簡潔實用 | 現代化,功能豐富 |
社區活躍度 | 較低 | 較高 |
遠程管理 | 支持 SSH 連接 | 支持但配置較復雜 |
WSL 集成 | 專門優化 | 基本支持 |
資源占用 | 輕量級 | 中等 |
Container Desktop vs Docker Desktop:
功能/特性 | Container Desktop | Docker Desktop |
開源狀態 | 完全開源 | 部分開源,商業使用受限 |
許可證要求 | 自由使用 | 商業環境需訂閱 |
支持的容器引擎 | 主要是 Podman,可用 Docker | 僅 Docker |
資源消耗 | 較低 | 較高 |
Kubernetes 集成 | 有限支持 | 內置支持 |
企業功能 | 基本功能 | 豐富的企業級功能 |
安裝方式 | 輕量級安裝 | 需要安裝虛擬機組件 |
安全特性 | 基于 Podman 的無根容器 | 需要特權訪問 |
GUI 完善度 | 基本完善 | 非常完善 |
不同平臺上的性能對比:
平臺 | 啟動時間 | 內存占用 | CPU 占用 | 穩定性 |
Windows (WSL2) | 中等 | 中等 (約 200MB) | 低-中 | 良好 |
macOS (Lima) | 較慢 | 較高 (約 300MB) | 中等 | 一般 |
Linux 原生 | 快速 | 低 (約 150MB) | 低 | 優秀 |
五、安裝部署指南
1. Windows 平臺安裝
Windows 用戶可以通過以下步驟安裝 Container Desktop:
# 首先確保已安裝 WSL2
wsl --install
# 在 WSL2 中安裝 Podman
wsl -d Ubuntu-20.04
sudo apt-get update
sudo apt-get -y install podman
# 下載并安裝 Container Desktop
# 從 GitHub releases 頁面下載最新的 Windows 安裝文件(.exe)
# 運行安裝文件完成安裝
2. macOS 平臺安裝
macOS 用戶可以使用以下命令安裝:
# 使用 Homebrew 安裝 Podman
brew install podman
# 初始化并啟動 Podman 虛擬機
podman machine init
podman machine start
# 下載 Container Desktop
# 從 GitHub releases 頁面下載最新的 macOS 安裝文件(.dmg)
# 打開 DMG 文件,將應用拖到 Applications 文件夾
3. Linux 平臺安裝
Linux 用戶安裝過程如下:
# Debian/Ubuntu 系統安裝 Podman 及依賴
sudo apt-get update
sudo apt-get -y install podman aardvark-dns passt
# Fedora 系統安裝 Podman 及依賴
sudo dnf install podman aardvark-dns passt
# 下載 Container Desktop
# 從 GitHub releases 頁面下載最新的 Linux 安裝文件(.AppImage 或 .deb)
# 對于 AppImage 文件
chmod +x Container.Desktop-*.AppImage
./Container.Desktop-*.AppImage
# 對于 .deb 包
sudo dpkg -i container-desktop_*.deb
4. 遠程連接配置
如需配置遠程主機連接,需執行以下步驟:
# 在遠程服務器上啟用 Podman socket
systemctl --user enable --now podman.socket
# 在本地 ~/.ssh/config 中配置 SSH 連接
# 添加如下內容:
Host remote-podman-server
HostName 192.168.1.100
User username
IdentityFile ~/.ssh/id_rsa
六、核心功能特性與使用示例
Container Desktop 提供了豐富的功能,使容器管理變得更加直觀和高效。根據最新的 5.2.13 版本更新,該項目在功能上有了顯著增強。
1. 基本容器管理
以下是創建和管理 Nginx 容器的示例:
# 在 Container Desktop 中創建 Nginx 容器的等效命令
podman run -d --name nginx-web -p 8080:80 -v ./website:/usr/share/nginx/html nginx:alpine
通過 Container Desktop 界面,用戶可以點擊"Create Container",然后填寫相關信息:
- Image: nginx:alpine
- Name: nginx-web
- Port mapping: 8080:80
- Volume: ./website:/usr/share/nginx/html
2. 鏡像管理示例
Container Desktop 提供了直觀的鏡像管理界面,用戶可以執行以下操作:
- 鏡像搜索與拉取:在搜索框中輸入"nginx",點擊搜索,然后選擇需要的標簽版本并點擊"Pull"
- 鏡像構建:選擇包含 Dockerfile 的目錄,設置標簽為"myapp:1.0",點擊"Build"
- 鏡像推送:選擇本地鏡像"myapp:1.0",點擊"Push"推送到配置好的注冊表
3. 數據卷管理
創建和管理持久化卷的示例:
# 創建一個名為 data-volume 的卷
podman volume create data-volume
# 使用該卷啟動 MySQL 容器
podman run -d --name mysql-db -e MYSQL_ROOT_PASSWORD=password -v data-volume:/var/lib/mysql mysql:8
在 Container Desktop 中,用戶可以在 Volumes 選項卡中查看、創建和管理所有卷,并可以直接將卷掛載到新容器中。
4. 網絡配置示例
創建自定義網絡并連接容器:
# 創建一個名為 app-network 的網絡
podman network create app-network
# 將容器連接到該網絡
podman run -d --name api-service --network app-network api-image:latest
在 Container Desktop 中,用戶可以圖形化管理網絡,創建新網絡并設置容器的網絡連接。
七、高級配置與實用技巧
1. 多主機管理
Container Desktop 支持管理多個 Podman 主機,包括本地和遠程主機。以下是配置多主機的步驟:
- 在主界面點擊"Connections"
- 選擇"Add Connection"
- 輸入連接名稱,選擇連接類型(本地/SSH)
- 對于 SSH 連接,提供主機地址、用戶名和密鑰
- 測試連接并保存
這允許用戶在一個界面中管理多個環境中的容器,非常適合管理開發、測試和生產環境。
2. 構建自定義鏡像
使用 Container Desktop 構建自定義鏡像的最佳實踐:
# 示例 Dockerfile
FROM alpine:latest
RUN apk add --no-cache nginx
COPY ./website /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
在 Container Desktop 中,用戶可以:
- 選擇包含 Dockerfile 的目錄
- 設置鏡像名稱和標簽
- 添加構建參數(如需)
- 點擊"Build"開始構建過程
- 查看實時構建日志
3. 容器編排示例
Container Desktop 可以與 Podman-Compose 配合使用,管理多容器應用:
# docker-compose.yml 示例
version:'3'
services:
web:
image:nginx:alpine
ports:
-"8080:80"
volumes:
-./website:/usr/share/nginx/html
depends_on:
-api
api:
build:./api
ports:
-"3000:3000"
db:
image:postgres:13
environment:
POSTGRES_PASSWORD:example
volumes:
-db-data:/var/lib/postgresql/data
volumes:
db-data:
在 Container Desktop 中,用戶可以導入這個 compose 文件,然后一鍵啟動整個應用棧。
八、截圖
九、總結與建議
Container Desktop 是 Podman 的跨平臺桌面伴侶工具,提供輕量級圖形界面,簡化容器管理操作。它支持跨平臺開發和遠程管理,適合初學者學習、開發者高效管理容器以及系統管理員確保系統安全。雖然作者推薦官方 Podman Desktop,但 Container Desktop 的特定功能和歷史價值仍使其成為值得探索的選擇。作為開源工具,它展示了技術創新和開源精神的實際應用,豐富了容器管理工具的生態系統,為開發者提供了更多靈活性和選擇。
十、地址
https://github.com/iongion/container-desktop