Skip to content

Docker Compose

俗话说:万物皆可 Docker,今天就教大家怎么一键抄作业,无论是服务器、电脑、电视盒子还是开发板都一样。

什么是 Docker

INFO

首先声明,我不是程序员,只算数码爱好者,我的以下科普仅供参考,如有错漏欢迎指正。

我们都知道传统软件会专门开发 Win版Mac版iOS版安卓版。然而 Linux 主打开源,因此衍生出许多不同的版本。为了简化跨平台的部署和运行,开发者将应用程序及其依赖项打包成 Docker容器。这些容器具有独立的运行环境,即开即用,可以在任何安装了 Docker 的不同操作系统和硬件平台上一致地运行,无需担心各种配置问题。

热门的 Docker 容器一般会适配不同的 CPU 架构,个人总结的不同系统的 Docker 体验如下:

架构

js
Debian 和 Ubuntu 是个人 Linux 发行版最常见的选择之一。
Docker 生态最完善,适合服务器、NAS 等设备。

- 架构:i386(x86),即 64 位处理器
- 设备:老款的 Intel 和 AMD 电脑 CPU
- 说明:32 位已逐渐边缘化

- 架构:amd64(x86_64),即 64 位处理器
- 设备:主流的 Intel 和 AMD 电脑 CPU
- 说明:绝大部分 Docker 容器默认都是 64
js
Armbian 是基于 Debian/Ubuntu 构建,针对 ARM 设备优化的轻量级系统。
ARM 设备功耗低,性能不错,但部分 Docker 容器未适配 ARM

- 架构:arm64(aarch64),即 64 位处理器
- 设备:树莓派、联发科 MediaTek、晶晨 Amlogic、各种开发版等
- 说明:苹果 M 系列芯片就是 Arm 架构,但 Linux Arm 较少

- 架构:armv7(armhf),即 32 位处理器
- 设备:比如早期树莓派、玩客云等
- 说明:相对落后的架构,国内也就 2-30 块玩客云这种奇葩了
js
官方的 Docker Desktop 体验很一般,个人不推荐
非要在 Win 上面运行 Docker,建议 WSL2 子系统或直接虚拟机
js
官方的 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

bash
# 创建存储配置文件的目录
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 文件举例子,一般你只需要认识和修改portsvolumes的部分。
如果使用原作者的命令行方式安装,无需修改 compose 文件;
若习惯用图形界面的 Docker 部署,就跟我一起学习修改吧。

yaml
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

Made with ❤️ in Hunan