由于DS120j的arm64架构并没有被群晖docker官方支持,但是有很多服务又不得不使用容器化,于是在研究了一上午两天?之后出现此文。

Update 22/8/10

一键脚本

bash
wget https://raw.fastgit.org/lbr77/CDN/main/synodockerarm.sh -O docker.sh && bash docker.sh
 

正文

这里从官网下载aarch64压缩包

shell
wget https://mirrors.aliyun.com/docker-ce/linux/static/stable/aarch64/docker-20.10.17.tgz
tar xzvf docker-20.10.17.tgz
sudo cp docker/* /usr/bin/
mkdir -p /etc/docker
touch /etc/docker/daemon.json
vi /etc/docker/daemon.json
 

填入以下内容

json
{
  "storage-driver": "vfs",
  "iptables": false,
  "bridge": "none",
  "data-root": "/docker"
}
 

如果有mirror也可以加进去

json
{
    "registry-mirrors": ["https://*******.mirror.aliyuncs.com"]
}
 

将/docker挂载为硬盘中内容,防止只有2G的系统盘爆炸

shell
sudo mkdir -p /volume1/@Docker/lib
sudo mkdir /docker
sudo mount -o bind "/volume1/@Docker/lib" /docker
 

打开/root/startdocker.sh(不知道群晖用的是systemd还是什么)

shell
#!/bin/sh
 
NAME=dockerd
DAEMON=/usr/bin/$NAME
PIDFILE=/var/run/$NAME.pid
DAEMON_ARGS=" --ipv6=false "
PATH=$PATH:/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
 
mount -o bind "/volume1/@Docker/lib" /docker
iptables -P FORWARD ACCEPT
/usr/bin/dockerd $DAEMON_ARGS
 

运行chmod +x /root/startdocker.sh

添加systemd

shell
touch /lib/systemd/system/dockerd.service
vi /lib/systemd/system/dockerd.service
 
ini
[Unit]
Description=docker's daemon
After=docker-mount.service
 
[Service]
User=root
WorkingDirectory=/docker
ExecStart=/etc/init.d/S60dockerd
Restart=on-failure
RestartSec=10
 
[Install]
WantedBy=multi-user.target
 

添加docker compose支持

sh
VERSION=$(curl -sL https://api.github.com/repos/docker/compose/releases | jq -r ".[0].name")
wget "https://get.daocloud.io/docker/compose/releases/download/${VERSION}/docker-compose-linux-${docker_arch}" -O /usr/local/lib/docker/cli-plugins/docker-compose
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
 

设置开机自启

sh
systemctl daemon-reload
systemctl start dockerd # 运行
systemctl enable dockerd # 开机启动
 

安装完成辣