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