Docker Compose
俗话说:万物皆可 Docker,今天就教大家怎么一键抄作业,无论是服务器、电脑、电视盒子还是开发板都一样。
什么是 Docker
INFO
首先声明,我不是程序员,只算数码爱好者,我的以下科普仅供参考,如有错漏欢迎指正。
我们都知道传统软件会专门开发 Win版
、Mac版
、iOS版
、安卓版
。然而 Linux 主打开源,因此衍生出许多不同的版本。为了简化跨平台的部署和运行,开发者将应用程序及其依赖项打包成 Docker容器
。这些容器具有独立的运行环境,即开即用,可以在任何安装了 Docker 的不同操作系统和硬件平台上一致地运行,无需担心各种配置问题。
热门的 Docker 容器一般会适配不同的 CPU 架构,个人总结的不同系统的 Docker 体验如下:
Debian 和 Ubuntu 是个人 Linux 发行版最常见的选择之一。
Docker 生态最完善,适合服务器、NAS 等设备。
- 架构:i386(x86),即 64 位处理器
- 设备:老款的 Intel 和 AMD 电脑 CPU
- 说明:32 位已逐渐边缘化
- 架构:amd64(x86_64),即 64 位处理器
- 设备:主流的 Intel 和 AMD 电脑 CPU
- 说明:绝大部分 Docker 容器默认都是 64 位
Armbian 是基于 Debian/Ubuntu 构建,针对 ARM 设备优化的轻量级系统。
ARM 设备功耗低,性能不错,但部分 Docker 容器未适配 ARM。
- 架构:arm64(aarch64),即 64 位处理器
- 设备:树莓派、联发科 MediaTek、晶晨 Amlogic、各种开发版等
- 说明:苹果 M 系列芯片就是 Arm 架构,但 Linux Arm 较少
- 架构:armv7(armhf),即 32 位处理器
- 设备:比如早期树莓派、玩客云等
- 说明:相对落后的架构,国内也就 2-30 块玩客云这种奇葩了
官方的 Docker Desktop 体验很一般,个人不推荐
非要在 Win 上面运行 Docker,建议 WSL2 子系统或直接虚拟机
官方的 Docker Desktop 体验很一般,个人不推荐
第三方的 OrbStack 原生开发工具,体验还不错
Intel 芯片的 Mac 已逐渐被 M 芯片替代
但 M 系列芯片运行 Docker 暂时无法发挥性能优势
为什么选择 Dockge
虽然现在各种主流的 NAS 系统都陆续支持图形化界面 Docker Compose 了,但我还是建议大家安装 Dockge 工具,既能统一管理你的多台机器,也能无视 NAS 系统,一键梭哈抄我的作业。
群晖、飞牛的 Docker 图形化界面都支持手动上传 Compose、env 文件,编辑映射端口号、文件路径等功能,但在拉取镜像、更新、迁移容器等方面并不算好用。而且我不想一个系统出一个教程,太麻烦了。
Dockge 是一个精美的、易于使用且反应灵敏的自托管 docker compose.yaml 面向堆栈的管理器。
具体介绍参考作者的 Github 项目主页:https://github.com/louislam/dockge
# 创建存储配置文件的目录
mkdir -p /opt/stacks /opt/dockge
cd /opt/dockge
# 下载 compose.yaml
curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml
# 启动服务
docker compose up -d
认识 Compose.yaml 配置文件
咱们就以 Dockge 的 Compose 文件举例子,一般你只需要认识和修改ports
和volumes
的部分。
如果使用原作者的命令行方式安装,无需修改 compose 文件;
若习惯用图形界面的 Docker 部署,就跟我一起学习修改吧。
services:
# 服务
dockge:
# 容器名称
image: louislam/dockge:1
# 镜像:开发者/镜像名称:版本号
restart: unless-stopped
# 重启:始终重启always、意外退出unless-stopped,飞牛建议always
ports:
# 端口号
- 5001:5001
#【冒号左边按需修改,右边别动】
# - 5002:5001 //群晖参考
volumes:
# 存储卷
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
#【冒号左边按需修改,右边别动】
# - /volume1/docker/dockge:/app/data //群晖参考
# - /vol1/1000/docker/dockge:/app/data //飞牛参考
- /opt/stacks:/opt/stacks
#【冒号左边按需修改,右边别动】
# - /volume1/docker/stacks:/opt/stacks //群晖参考
# - /vol1/1000/docker/stacks:/opt/stacks //飞牛参考
environment:
# 环境变量
- DOCKGE_STACKS_DIR=/opt/stacks