使用 DPanel 优雅地管理 Docker 容器

对于每一位 Self-hosted 爱好者而言,Docker 是简化应用部署的神器。但当服务器上运行的容器越来越多,散落在各处的 docker-compose.yaml 文件就成了新的问题。
如果你也为此烦恼,那么是时候认识一下 DPanel 了 —— 一个轻量化的容器管理面板。

为什么需要一个 Docker 管理面板?

使用 Docker 和 Docker Compose 部署项目无疑是高效且愉快的。我们可以为每个项目创建一个独立的目录和 docker-compose.yaml 文件,实现轻松部署与环境隔离。

但随着时间的推移,你可能会遇到这些问题:

  • 管理混乱:几十个项目的配置文件散落在不同目录,想找某一个配置需要先 cd 到对应的目录。
  • 维护困难:更新一个服务的镜像版本,或是修改某个端口映射,都需要先找到对应的 yaml 文件,再手动执行命令。
  • 状态不明:无法直观地看到所有容器的运行状态、资源占用和日志信息。

为了解决这些痛点, DPanel应运而生。

DPanel 是什么?

DPanel 是一个开源、轻量化的容器管理面板。它专注于提供核心的容器管理功能,同时保持极低的资源占用(镜像约 150MB,内存占用约 20MB),可以通过容器部署,对宿主机零侵入,安全可靠。

核心亮点:

  • 轻量高效:资源占用极低,不给你的服务器增加额外负担。
  • 安全可靠:通过容器运行,无需特权,不侵入宿主机系统。
  • Compose 管理:支持多种方式添加、管理 Compose 项目
  • 功能全面:支持容器管理、日志查看、文件浏览器、快捷访问容器内终端等实用功能。
  • 多主机管理:可以通过 API (TLS) 或 SSH 方式,在一个面板中管理多台服务器的 Docker。
  • 多语言支持:原生支持中、英、日多国语言,无需额外配置。

如何部署 DPanel

部署 DPanel 非常简单,推荐直接使用 Docker Compose 进行部署。

如果你的服务器尚未安装 Docker 和 Docker Compose ,可以参考以下教程:

第一步:选择版本

DPanel 提供两个版本:

  • dpanel/dpanel:lite (轻量版): 不包含 Nginx,适合宿主机上已经安装了反向代理(如 Nginx )的用户。
  • dpanel/dpanel:latest (标准版): 内置 Nginx,可以为你自动处理域名绑定和 SSL 证书,适合全新环境。

本文以 lite 版本为例,因为它能更好地与现有环境集成。

第二步:创建并配置 compose.yaml

首先,为 DPanel 创建一个工作目录并进入:

1
2
mkdir -p /opt/dpanel
cd /opt/dpanel

然后,在该目录下创建一个 compose.yaml 文件:

1
2
3
4
5
6
7
8
9
10
11
12
services:
dpanel:
image: dpanel/dpanel:lite
container_name: dpanel
restart: always
ports:
# 左侧 8807 是你访问面板的端口,可自行修改
- "8807:8080"
volumes:
# 映射 Docker Socket
- /var/run/docker.sock:/var/run/docker.sock
- ./dpanel:/dpanel # 将面板数据持久化到当前目录下的 dpanel 文件夹

提示docker.sock 的路径通常无需修改。如果你不确定,可以通过 docker context inspect $(docker context show) --format '{{.Endpoints.docker.Host}}' 命令来确认。

第三步:启动 DPanel

/opt/dpanel 目录下,执行以下命令启动服务:

1
docker compose up -d

第四步:初始化

现在,通过浏览器访问 http://<你的服务器IP>:8807。首次访问会要求你创建管理员账号和密码,设置完成后即可进入管理后台。

dpanel-first-login

核心功能

进入面板后,你会看到一个简洁的仪表盘,展示了服务器和容器的概览信息。

dpanel-top-nav

容器管理

容器管理 页面,你可以直观地看到所有容器的运行状态、端口映射等。对于每个容器,你都可以进行快捷操作,如:

  • 查看日志:实时追踪容器输出。
  • 进入终端:直接在浏览器中打开容器的 Shell。
  • 文件管理:浏览和管理容器内的文件。

Compose 文件管理

Compose 页面,可以方便地管理 compose.yaml 文件,不过这需要我们对 docker-compose.yaml / compose.yaml 文件进行迁移,可以查看下面 迁移现有的 Docker Compose 项目 部分

镜像管理

镜像管理 管理页面我们可以查看当前主机中的镜像文件,以及所对应的文件是否正在被使用。可以进行 清理、同步、批量删除,也可以导出镜像

还可以进行 仓库管理,对于中国大陆地区非常有帮助。

存储与网络管理

  • 在存储管理页面可以直观地查看每个容器使用的匿名卷,以及是否在使用中
  • 网络管理页面可以查看 Docker 容器对应的网络

迁移现有的 Docker Compose 项目

我们需要将之前的 Docker Compose 管理的项目迁移至 DPanel 目录下才可以使用 DPanel 进行管理。

迁移已有的项目非常简单,只需两步:

  1. 移动并重命名:将你原有的项目文件夹整个移动到 DPanel 的工作目录(/opt/dpanel/)下的 dpanel/compose 目录中,并将其 docker-compose.yaml 文件重命名为 compose.yaml

    例如,你有一个项目位于 /root/my-project

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 1. 创建目录
    mkdir -p /opt/dpanel/dpanel/compose

    # 2. 停止正在运行的服务(如果还在运行)
    cd /root/my-project
    docker compose down

    # 3. 移动整个项目目录
    mv /root/my-project /opt/dpanel/dpanel/compose

    # 4. 复制配置文件
    cd /opt/dpanel/dpanel/compose/my-project
    mv docker-compose.yaml compose.yaml
  2. 在面板中管理:刷新 DPanel 页面,它会自动发现 my-project
    现在只需要点击容器名称即可在面板中对它进行启动、停止、编辑等操作了。
    dpanel-compose-run

通过这种方式,你可以将所有零散的项目统一到 DPanel 中进行管理。

迁移之前的路径示意:

1
2
3
4
5
/
├─ project1/
│ └─ docker-compose.yaml
└─ project2/
└─ docker-compose.yaml

迁移之后:

1
2
3
4
5
6
7
/opt/dpanel/
└─ dpanel/
└─ compose/
├─ project1/
│ └─ compose.yaml
└─ project2/
└─ compose.yaml

与直接使用 docker compose 会自动查询目录下的 compose.yaml / compose.yaml docker-compose.yaml docker-compose.yaml 四个文件不同,DPanel 目前仅支持 compose.yaml 文件

资源占用详情

我们可以使用 docker stats 或是 docker compose stats 查看容器的运行资源占用详情

1
2
cd /opt/dpanel
docker compose stats

输出如下,可以看到只使用了 22.2MiB 的内容。

1
2
CONTAINER ID   NAME      CPU %     MEM USAGE / LIMIT    MEM %     NET I/O          BLOCK I/O       PIDS 
5340fef5727d dpanel 0.00% 22.2MiB / 7.755GiB 0.28% 306kB / 2.68MB 4.1kB / 115kB 9

添加远程服务器

DPanel 支持在一个面板中管理多台主机上的 Docker 实例。推荐使用 SSH 方式进行连接,既安全又免去了繁琐的 Docker Api 证书配置。

操作步骤如下:

第一步:准备远程服务器用户

我们应该使用一个非 root 用户进行连接。

  1. 创建新用户
    如果你的远程服务器上没有合适的非 root 用户,可以新建一个。例如,创建一个名为 dpaneluser 的用户:

    1
    sudo adduser dpaneluser

    根据提示设置密码即可。

  2. 将用户添加到 docker
    为了让新用户有权限操作 Docker,需要将其加入 docker 用户组:

    1
    sudo usermod -aG docker dpaneluser

    提示:执行此命令后,用户需要重新登录(或新开一个 SSH会话)才能使组权限生效。

  3. 验证权限
    切换到新用户,并尝试执行一条 Docker 命令来验证权限是否配置成功。

    1
    su - dpaneluser

    然后执行:

    1
    docker ps

    如果命令成功返回容器列表(即使是空的),说明权限已正确配置。

第二步:准备 SSH 密钥

  1. 生成 SSH 密钥
    运行 DPanel 的服务器(或你的本地电脑)上打开终端,执行以下命令生成密钥对。如果已存在密钥,可以跳过此步。

    1
    ssh-keygen -t ed25519 

    第一步输入保存名称后,一路按回车键接受默认设置即可,将生成以下两个文件

    • id_ed25519 : 密钥文件,相当于密码,不可以公开给任何人
    • id_ed25519.pub : 公钥文件,保存在服务器中后表示可以使用上面的密钥进行认证。
  2. 将公钥复制到远程服务器
    使用 ssh-copy-id 命令将公钥安装到远程服务器的目标用户上。

    1
    ssh-copy-id dpaneluser@<远程服务器IP>

    此过程需要输入一次 dpaneluser 用户的密码。

    如果已禁用 SSH 密码登录,需要手动复制 id_ed25519.pub 至对应用户的 ~/.ssh/authorized_keys 文件中

第三步:在 DPanel 中配置连接

在 DPanel 界面,导航至 系统 > 多服务端,然后点击 添加服务端

  • 首先输入 名称标识
  • 连接方式选择 SSH
  • 打开 启用独立Compose目录 :以便在访问不同服务器时只查看对应的 compose 文件。
  • 填入远程服务器的 IP 地址、SSH 端口。
  • 验证方式强烈推荐使用 私钥认证,它比密码更安全、更便捷。
  • 填写 用户名,手动填写或是导入 密钥文件

最后点击确定保存,保存时 DPanel 会尝试连接远程服务器,如果连接失败,配置将无法保存,需要检查修改配置。

添加成功后,你就可以通过 DPanel 顶部的下拉菜单在不同的 Docker 服务端之间轻松切换了。

总结

DPanel 以其轻量、安全和对 Docker Compose 的良好支持,为 Self-hosted 玩家提供了一个管理容器的绝佳方案。

它不仅能帮你理清混乱的 yaml 文件,还能让你对服务器上的所有容器状态一目了然。如果你正在寻找一个简单高效的 Docker 图形化工具,DPanel 绝对值得一试。