openEuler 云原生实战:Docker Compose 部署 Nextcloud 企业级私有云
-
- [一、为什么选择 openEuler 部署私有云](#一、为什么选择 openEuler 部署私有云)
-
- [1.1 数据安全的需求](#1.1 数据安全的需求)
- [1.2 openEuler:开源操作系统的标杆](#1.2 openEuler:开源操作系统的标杆)
- [1.3 技术选型:Nextcloud](#1.3 技术选型:Nextcloud)
- 二、环境说明
-
- [2.1 服务器配置](#2.1 服务器配置)
- [2.2 Docker 环境](#2.2 Docker 环境)
- [2.3 Nextcloud 介绍](#2.3 Nextcloud 介绍)
- [2.4 架构说明](#2.4 架构说明)
- [三、部署 Nextcloud](#三、部署 Nextcloud)
-
- [3.1 创建项目目录](#3.1 创建项目目录)
- [3.2 编写 docker-compose.yml](#3.2 编写 docker-compose.yml)
- [3.3 启动服务](#3.3 启动服务)
- [四、访问和配置 Nextcloud](#四、访问和配置 Nextcloud)
-
- [4.1 初次访问](#4.1 初次访问)
- [4.2 主界面介绍](#4.2 主界面介绍)
- [4.3 简单功能测试](#4.3 简单功能测试)
- 五、容器管理
-
- [5.1 常用命令](#5.1 常用命令)
- [5.2 资源占用](#5.2 资源占用)
- 六、实战总结
-
- [6.1 部署体验](#6.1 部署体验)
一、为什么选择 openEuler 部署私有云
1.1 数据安全的需求
最近越来越觉得数据安全的重要性,百度网盘、腾讯微云这些公有云虽然方便,但数据放在别人服务器上总是不太放心。特别是一些个人照片、工作文档、学习资料什么的,还是想放在自己的服务器上。于是就想着搭建一个私有云盘,把数据完全掌握在自己手里。
在选择操作系统的时候,我对比了 CentOS、Ubuntu Server 和 openEuler,最终选择了 openEuler。这是一个非常正确的决定!
1.2 openEuler:开源操作系统的标杆

openEuler 是什么?
openEuler 是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,是一个面向数字基础设施的操作系统。它支持服务器、云计算、边缘计算、嵌入式等多种应用场景,是真正意义上的"全场景"操作系统。
为什么我选择 openEuler?
- 安全可控
- 华为主导,国内上百家企业参与共建(包括中科院、中国移动、中国电信等)
- 完全开源,代码透明,不用担心后门问题
- 云原生场景的王者
- 内核专门针对容器、虚拟化场景优化
- Docker、Kubernetes、Podman 等云原生工具支持完美
- 我之前部署 WordPress 的时候就感受到了,Docker 容器运行特别稳定
- 资源调度高效,16GB 内存能跑十几个容器应用
- 生态强大,兼容性好
- 软件包兼容 RHEL/CentOS,rpm 包可以直接用
- 官方软件仓库(https://repo.openEuler.org/)资源丰富
- 社区活跃,文档详细,遇到问题容易找到解决方案
- openEuler 22.03 LTS 是长期支持版本,稳定可靠
- 性能优秀,资源占用低
- 针对 ARM 和 x86 架构都有深度优化
- 系统资源占用很低,把更多资源留给应用
- 我这台 16C16G 的服务器,openEuler 本身只占用 500MB 内存左右
- 文档和社区支持完善
- 官方文档中心:https://docs.openEuler.openatom.cn/zh/
- 社区论坛:https://forum.openEuler.org/
- GitHub:https://github.com/openEuler-mirror
- Gitee:https://gitee.com/openEuler
- 中文资料特别多,对国内开发者友好
实际使用体验:
我从今年开始用 openEuler 22.03 LTS-SP1,到现在已经跑了好几个月了,部署了 WordPress、MySQL、Nextcloud 等多个应用,系统一次都没出过问题。稳定性真的很赞!而且对 Docker 的支持特别好,容器启动速度快,资源调度也很合理。
1.3 技术选型:Nextcloud
搜了一圈,发现 Nextcloud 挺火的。这玩意儿是开源的,功能很全,文件同步、在线编辑、日历、联系人啥都有,关键是部署简单,用 Docker Compose 几分钟就能跑起来。而且 Nextcloud 的 Docker 镜像在 openEuler 上运行特别流畅,兼容性完美。
这次实战目标:
- 在 openEuler 服务器上用 Docker Compose 部署 Nextcloud
- 测试多容器应用管理
- 验证 openEuler 在云原生场景下的性能表现
二、环境说明
2.1 服务器配置
服务器还是上次那台,配置没变:
- CPU:16核 Intel Xeon Gold 6138 @ 2.00GHz
- 内存:16GB
- 存储:40GB SSD
- 操作系统:openEuler 22.03 (LTS-SP1)

从上图可以看到服务器的基本信息,系统是 openEuler 22.03 (LTS-SP1),内核版本是 5.10.0。这个环境在第一篇文章里已经搭建好了,这次可以直接用。
2.2 Docker 环境
Docker 环境是现成的,之前部署 WordPress 的时候已经装好了:
- Docker:26.1.4
- Docker Compose:v2.40.3

从图中可以看到 Docker 26.1.4 已经安装好了,服务状态是 active (running)。如果你还没装 Docker,可以参考我之前写的那篇文章,里面有详细的安装步骤。这里就不重复了。
2.3 Nextcloud 介绍
Nextcloud 是一个开源的私有云存储解决方案,可以理解为自己搭建的"百度网盘"。主要功能有:
- 📁 文件存储和同步
- 👥 多人协作和分享
- 📝 在线文档编辑
- 📅 日历和联系人管理
- 🔐 端到端加密
个人用来搭建私有云盘、家庭云存储都挺合适的。Nextcloud 在 GitHub 上有 27K+ 的 star,社区很活跃,插件生态也很丰富。
2.4 架构说明
这次部署包含两个容器:
- nextcloud_app:Nextcloud 应用本体,提供 Web 界面和文件管理
- nextcloud_mariadb:MariaDB 数据库,存储 Nextcloud 的配置和元数据
两个容器通过自定义网络互联,数据通过数据卷持久化。这种架构的好处是:即使容器重启或删除,数据也不会丢失。
三、部署 Nextcloud
3.1 创建项目目录
先创建一个项目目录。我喜欢把所有 Docker Compose 项目都放在统一的目录下,方便管理:
Plain
# 创建 Nextcloud 项目目录
mkdir -p acowbo/docker-compose-project/nextcloud
cd acowbo/docker-compose-project/nextcloud
# 确认当前路径
pwd

从截图可以看到,项目目录创建成功。同时也能看到之前的 wordpress 目录,说明我们的项目结构很规范。用 docker ps 查看了一下,之前部署的 WordPress 容器还在跑着,这次部署 Nextcloud 不会影响它。
我们新部署的 Nextcloud 用的是 8090 端口,和 WordPress 的 8080 端口不冲突。这就是容器化的好处,多个应用可以在同一台服务器上和平共处,互不干扰。
3.2 编写 docker-compose.yml
接下来编写 Docker Compose 配置文件。配置很简单,两个服务 + 两个数据卷 + 一个网络:
Plain
version: '3.8'
services:
db:
image: mariadb:10.11
container_name: nextcloud_mariadb
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
environment:
MYSQL_ROOT_PASSWORD: nextcloud_root_pass
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: nextcloud_pass
volumes:
- db_data:/var/lib/mysql
networks:
- nextcloud_net
nextcloud:
image: nextcloud:latest
container_name: nextcloud_app
restart: always
depends_on:
- db
ports:
- "8090:80"
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: nextcloud_pass
NEXTCLOUD_ADMIN_USER: admin
NEXTCLOUD_ADMIN_PASSWORD: admin123
NEXTCLOUD_TRUSTED_DOMAINS: '*'
volumes:
- nextcloud_data:/var/www/html
networks:
- nextcloud_net
volumes:
db_data:
nextcloud_data:
networks:
nextcloud_net:
driver: bridge
配置文件说明几个关键点:
数据库服务(db):
- 使用 MariaDB 10.11 版本,这是 Nextcloud 官方推荐的
- 配置了事务隔离级别和二进制日志,提升性能和数据安全
- 数据库名、用户名、密码都是自定义的
Nextcloud 服务(nextcloud):
- 使用最新版 Nextcloud
- 端口映射 8090:80,避免和其他服务冲突
- 通过环境变量配置数据库连接和管理员账号
NEXTCLOUD_TRUSTED_DOMAINS: '*'允许任意域名访问(生产环境建议改成具体域名)
数据卷(volumes):
db_data:存储 MariaDB 数据nextcloud_data:存储 Nextcloud 文件和配置
3.3 启动服务
配置文件写好后,一行命令就能启动所有服务:
Plain
# 启动容器(后台运行)
docker-compose up -d
# 查看容器状态
docker ps
第一次启动会拉取镜像,Nextcloud 镜像大概 1GB 左右,MariaDB 大概 400MB,根据网速可能要等几分钟。我这边网速还行,大概3分钟就下载完了。

从截图可以看到,两个容器都成功启动了:
- nextcloud_app:端口映射 0.0.0.0:8090->80/tcp,已经运行了 21 分钟
- nextcloud_mariadb:数据库容器,状态也是 Up
容器名称、端口映射、运行状态都很清晰。这就是 Docker Compose 的魅力,复杂的多容器应用管理起来很轻松。
四、访问和配置 Nextcloud
4.1 初次访问
容器启动后,在浏览器里访问:http://<服务器IP>:8090

看到这个页面说明 Nextcloud 已经成功跑起来了。这是 Nextcloud 的登录/初始化页面。因为我们在 docker-compose.yml 里已经配置了管理员账号和数据库连接,Nextcloud 会自动完成初始化,不需要手动填写那些配置了。
登录信息:
- 管理员账号:
admin - 管理员密码:
admin123
直接用这个账号密码登录就行。首次登录可能需要等待1-2分钟,Nextcloud 在后台初始化数据库表结构。
4.2 主界面介绍
登录成功后就能看到 Nextcloud 的主界面了:

界面很清爽,功能也很全。左侧是导航菜单,可以看到:
- 文件:核心功能,管理你的所有文件
- 照片:照片自动分类和管理
- 活动:查看文件操作历史
- 通话:视频通话功能(需要额外配置)
- 联系人:通讯录管理
- 日历:日程管理
- 设置:系统配置
中间是文件列表区域,可以上传、下载、分享文件,就像操作本地文件夹一样。右上角有用户信息和搜索功能。
整体使用体验和百度网盘差不多,但这是自己的服务器,数据完全掌握在自己手里。
4.3 简单功能测试
我简单测试了几个功能:
上传文件:
- 拖拽文件到浏览器就能上传,很方便
- 支持批量上传,速度挺快的
创建文件夹:
- 可以创建多层级文件夹,方便分类管理
- 文件夹可以设置访问权限
分享文件:
- 右键文件可以生成分享链接
- 可以设置密码和过期时间
- 也可以分享给其他 Nextcloud 用户
这些基础功能都很流畅,没有什么问题。
五、容器管理
5.1 常用命令
部署完成后,记录几个常用的管理命令:
Plain
# 查看容器状态
docker-compose ps
# 查看日志
docker-compose logs nextcloud
docker-compose logs -f nextcloud # 实时查看
# 停止服务
docker-compose stop
# 启动服务
docker-compose start
# 重启服务
docker-compose restart
# 停止并删除容器(数据不会丢失)
docker-compose down
# 停止并删除容器和数据卷(慎用!)
docker-compose down -v
5.2 资源占用
看了下容器的资源占用情况:
docker stats --no-stream

Nextcloud 和 MariaDB 两个容器加起来,内存占用大概 500MB 左右,CPU 基本可以忽略。这个资源消耗在可接受范围内,16GB 内存的服务器跑十几个这样的应用都没问题。
六、实战总结
6.1 部署体验
从创建目录到能正常使用,整个过程不到 10 分钟。Docker Compose 确实很方便,一个配置文件就能管理多容器应用,比手动安装配置 Nextcloud + MariaDB 省事太多了。
openEuler 的表现真的让我印象深刻:
- 稳定性一流
- 整个部署过程没有任何报错,一次成功
- Docker 镜像拉取速度很快,没有因为系统兼容性导致的失败
- 容器运行稳定,到现在跑了几个小时,CPU 和内存都很平稳
- 云原生支持完美
- Docker 26.1.4 在 openEuler 上运行得很流畅
- 容器网络、数据卷管理没有任何问题
- 多容器应用管理轻松自如,和 Ubuntu 上的体验一模一样
- 资源效率高
- 系统本身占用内存很少(只有 500MB 左右)
- 把更多资源留给了应用容器
- 同样配置的服务器,能跑更多的容器应用
- 生态兼容性好
- Docker 官方镜像直接就能用,无需任何修改
- Nextcloud、MariaDB 这些流行应用完全无缝运行
- 之前还担心兼容性问题,现在看来完全是多虑了
对比其他发行版:
我之前在 CentOS 7 和 Ubuntu 20.04 上也部署过类似的应用,对比下来:
- CentOS 7:软件包太老,Docker 版本低,需要折腾很久
- Ubuntu Server:软件包新,但 apt 源在国内比较慢,系统占用内存稍微多一点
- openEuler:结合了两者的优点,软件包新,兼容性好。
写在最后:
这次部署 Nextcloud 的经历让我对容器化部署有了更深的认识。同一台服务器上跑着 WordPress、Nextcloud,两个应用各自独立,互不干扰,资源占用也在合理范围内。这就是云原生的魅力所在。
强烈推荐 openEuler!
作为一个用过 CentOS、Ubuntu、Debian 的老用户,openEuler 真的给了我太多惊喜:
- 成熟系统,支持起来心里踏实
- 不用担心像 CentOS 那样突然停止维护
- 有华为和国内这么多企业支持,生态会越来越好
- 云原生场景真的很强
- Docker、K8s 这些工具运行得比 Ubuntu 还流畅
- 容器性能优化做得很到位
- 适合搭建私有云、微服务架构
- 生态和文档很完善
- 软件包丰富,兼容 CentOS 的 rpm 包
- 中文文档详细,社区活跃
- 遇到问题很容易找到解决方案
建议:
如果你也想尝试 openEuler + Docker Compose 部署应用:
- 新手:建议从简单应用开始(Nextcloud、WordPress、Redis 等)
- 进阶:可以尝试 K8s、微服务架构
- 学习资源 :
- openEuler 社区论坛:https://forum.openEuler.org/
- openEuler 官方文档:https://docs.openEuler.openatom.cn/zh/
- B站有很多 openEuler 的教学视频
openEuler 现在已经是我的首选服务器操作系统了。无论是个人学习、私有云部署,还是生产环境使用,openEuler 都是一个值得信赖的选择。
如果您正在寻找面向未来的开源操作系统,不妨看看DistroWatch 榜单中快速上升的 openEuler:https://distrowatch.com/table-mobile.php?distribution=openeuler,一个由开放原子开源基金会孵化、支持"超节点"场景的Linux 发行版。
openEuler官网:https://www.openeuler.openatom.cn/zh/