docs(docker): add docker doc

add docker doc

Signed-off-by: kovacs <mritd@linux.com>
pull/1349/head
kovacs 3 years ago
parent de5ad1226c
commit e97d67818f
No known key found for this signature in database
GPG Key ID: 150E1851F767CDDD

@ -0,0 +1,197 @@
# Docker 用户文档
> 本文档详细介绍 Cloudreve Docker 镜像使用以及其工作原理; **本文档假设用户有一定 Linux 和 Docker 基本知识储备.**
## 一、基本准备
### 1.1、Docker 环境
请确保您已经成功安装好 Docker, 且 `docker info` 命令 Server 部分有正确返回结果:
```sh
docker info
Client:
Context: aarch64
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc., v0.8.2)
compose: Docker Compose (Docker Inc., 2.6.0)
Server:
Containers: 1
Running: 1
Paused: 0
Stopped: 0
Images: 32
Server Version: 20.10.17
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: false
userxattr: true
Logging Driver: json-file
Cgroup Driver: systemd
Cgroup Version: 2
...
```
**如果 Docker 尚未安装, 请参考 Docker 官方文档完成安装, Linux 用户推荐使用 `curl -fsSL https://get.docker.com | sh` 命令安装.**
### 1.2、Docker Compose
如果您期望使用 Docker Compose, 请确保执行 `docker compose version` 命令有正确结果返回:
```sh
docker compose version
Docker Compose version 2.6.0
```
**老版本的 Docker Compose 作为独立命令存在, 您需要自行替换为 `docker-compose`.**
### 1.3、Buildx 编译环境
如果您需要自行进行交叉编译 Docker 镜像, 请确保安装了 [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/), 由于 Buildx 部分有些深入, 当您使用时本文档假设您已充分了解该工具故不做过多阐述.
## 二、Docker 运行示例
### 2.1、直接运行
当安装好 Docker 以后, 可以通过以下命令运行单节点的 Cloudreve 实例:
```sh
# -v: 挂载当前目录下的 data 目录到容器内的 /data, Cloudreve 默认将数据存放于此目录
# -p: Cloudreve 默认使用 5212 端口提供服务, 如果您更改端口后, 请重新创建容器并同步修改此参数
# --name: 该参数用于指定运行后的容器名称, 后续可使用 `docker ps` 命令查看
docker run -dt --name cloudreve -v $(pwd)/data:/data -p 5212:5212 cloudreve/cloudreve
```
**运行成功后, Cloudreve 默认会生成随机密码, 请使用 `docker logs cloudreve` 从日志中查找登录密码.**
### 2.2、`.cloudreve.bin` 文件
由于代码限制, Cloudreve 默认将数据保存到二进制文件的同级目录下, Docker 镜像为了简化挂载逻辑, **默认在每次启动时都将删除 `/data/.cloudreve.bin` 文件并重新将可执行文件复制到此, 然后再启动;** 所以您可能会发现数据存储目录中存在该文件, 且该文件具有一定的空间占用(小于50MB).
### 2.3、老镜像迁移
在以前版本的 Docker 镜像中, 您可能挂载了以下目录/文件:
- `/cloudreve/uploads`
- `/cloudreve/conf.ini`
- `/cloudreve/cloudreve.db`
- `/cloudreve/avatar`
**新版本的 Docker 镜像您仅需复制这些文件到 `/data` 目录即可.** `/cloudreve``/data` 指的是您运行容器时的外部挂载目录, 即 `-v` 参数**冒号**之前的目录.
## 三、Compose 样例
### 3.1、直接运行
如果您已经安装好了 Docker Compose 并希望快速体验 Cloudreve, 您可以直接按照以下命令运行一个 Cloudreve 节点且附带 Aria2 离线下载功能:
```sh
# 创建单独的运行目录
mkdir cloudreve && cd cloudreve
# 下载 docker compose 配置文件
curl -sSL https://raw.githubusercontent.com/cloudreve/Cloudreve/master/docker-compose.yml > docker-compose.yaml
# 启动 Cloudreve
docker compose up -d
```
**运行成功后, Cloudreve 默认会生成随机密码, 请使用 `docker compose logs cloudreve` 从日志中查找登录密码.**
### 3.2、离线下载配置
Compose 配置文件中默认附带了 Aria2 实例以及 Aria2 专用的 UI; 当启动完成后您可以登录 Cloudreve 并按照以下步骤联动 Aria2:
- 1、登录 Cloudreve
- 2、点击左上角用户头像, 选择 **管理面板**
- 3、选择左侧菜单栏的 **离线下载节点**
- 4、点击默认节点右侧的 **编辑按钮**
- 5、在 "是否需要主机接管离线下载任务?" 中选择 **启用**
- 6、"RPC 服务器地址" 填写 **`http://127.0.0.1:6800/`**
- 7、"RPC 授权令牌" 填写 **`your_aria_rpc_token`**
- 8、"Aria2 用作临时下载目录" 填写 **`/tmp`**
- 9、点击 "下一步", 后续保持默认即可
至此, 您可以在 Cloudreve 中体验整合了 Aria2 的离线下载功能.
### 3、3 Compose 配置细节
> **默认情况下, Compose 中的 Aria2 RPC Token 为 `your_aria_rpc_token`, 请务必在正式使用时将其修改为特定密码; 否则任何知道次默认 Token 的人都可以尝试连接您的 Aria2 实例.**
```yaml
version: "3.8"
services:
cloudreve:
container_name: cloudreve
image: cloudreve/cloudreve:latest
restart: unless-stopped
ports: # 默认暴露端口, 注意 Docker 容器端口映射可能无视您的 ufw、firewalld 等防火墙配置, 所以请务必设置好相关密码
- "5212:5212" # Cloudreve 默认使用的端口
- "6800:6800" # Aria2 RPC 端口
- "6880:6880" # Aria2 UI 默认端口
volumes:
- ./data:/data # Cloudreve 数据挂载位置(当前目录下的 `data` 目录)
- temp_data:/tmp # aria2 共享数据目录位置(用于离线下载使用)
aria2:
container_name: aria2
image: p3terx/aria2-pro # third party image, please keep notice what you are doing
restart: unless-stopped
network_mode: service:cloudreve # 共享 cloudreve 的 network namespace, 这样可以方便使用 127.0.0.1 调用
environment:
- RPC_SECRET=your_aria_rpc_token # 请务必修改此处 Token 为随机字符串, 否则其他人可以随意使用你的 Aria2 服务器
volumes:
- ./aria2_config:/config
- temp_data:/tmp
aria2-ui:
container_name: aria2-ui
image: p3terx/ariang
restart: unless-stopped
network_mode: service:cloudreve # 共享 cloudreve 的 network namespace, 这样可以方便使用 127.0.0.1 调用
volumes:
temp_data:
```
### 四、自行编译
出于紧急 BUG 修复等原因, 有时您如果需要自行构建 master 分支的 Docker 镜像, 您可以按照以下操作来完成编译:
```sh
# 创建单独的空目录存放 Dockerfile
# ⚠️注意: 请务必在单独目录中进行构建, 绝对不要尝试在根目录(`/`)下构建 Docker 镜像;
# 这将导致 docker cli 将整个系统上传到 Docker Context 从而造成死机等问题
mkdir cloudreve_docker && cd cloudreve_docker
# 下载构建所需的文件
curl -sSL https://raw.githubusercontent.com/cloudreve/Cloudreve/master/Dockerfile > Dockerfile
curl -sSL https://raw.githubusercontent.com/cloudreve/Cloudreve/master/docker-entrypoint.sh > docker-entrypoint.sh
# 确保脚本具有可执行权限
chmod +x docker-entrypoint.sh
# 执行构建, 构建成功后镜像名为: cloudreve_docker
docker build -t cloudreve_docker .
```
构建完成后您可将 Compose 或 Docker 命令中的 `cloudreve/cloudreve` 替换为 `cloudreve_docker` 运行并测试.
### 五、多平台交叉编译
> 本部分假设您已经安装好 Docker Buildx 相关工具链.
部分情况下您可能需要在异构环境中同时运行多个 cloudreve 实例, 此时您可能可以按照以下流程通过 Docker Buildx 来进行交叉编译; 交叉编译后的镜像具体有相同的镜像名称, 但同时支持多个 CPU 架构.
```sh
# 登录您的 Docker Hub 账号(您需要自行前往 https://hub.docker.com/signup 注册)
docker login
# 创建 Buildx 实例
docker buildx create --use --name builder
# 进行多平台构建
docker buildx build --platform=linux/amd64,linux/arm64 --push -t 您的用户名/cloudreve_docker .
```
构建完成后改镜像将会自动推送到 Docker Hub 中, 后续您可以在目标机器上使用 `您的用户名/cloudreve_docker` 作为镜像名称来运行 Cloudreve 实例; **运行时 Docker 将会自动选择与目标平台相符的镜像层来运行.**
Loading…
Cancel
Save