站点图标 ITGeeker技术奇客

群晖(Synology)NAS DS418 Play升级到DSM7.2后应用商店无法采用SPK安装Docker的解决方案 群晖NAS命令行(CMD)安装Docker

几乎找遍了各个网站,也快有好几年没在群晖NAS当中运行Docker容器了,也就是从升级了DSM到7的版本后。

群晖官网是明确表示DS418 Play型号是不支持docker容器,但是以前能够通过其他版本的SPK文件进行安装,例如DS918+的安装文件Docker-x64-20.10.3-1308.spk.

而现在,不管下载那个版本的spk,又或者使用更改链接的大法,再也搞不定Docker的安装了。

当然,国内外也有不少网友通过应用市场上传spk这种方法就安装成功了,但是技术奇客ITGeeker.net就没那么幸运,好像很多人也没那么幸运,如果你想尝试一下,就去群晖的官网下载Docker的spk文件安装试试看吧。

https://archive.synology.cn/download/Os/DSM

对了,Docker在群晖DSM中的名称已经更改为:Container Manager

by 技术奇客ITGeeker.net

原本想着随着群晖的不断升级,以后或许还能在DS418 play当中使用docker的,但是没想到群晖NAS的价格越卖越贵,还真就不管以前用户的死活了!

所以今天就分享一下如何用命令行安装docker,让您的群晖DS418play重新用上Docker容器。也幸亏群晖还没封死这条路,毕竟有些简单的docker应用,用NAS来运行的话又稳定数据又安全。

至于可以运行哪些docker可以参看技术奇客ITGeeker.net的这篇文章:

群晖DS418play如何使用命令行安装Docker – Container Manager

1. 下载docker的源文件

首先,从Docker官网下载一个最新版本吧: https://download.docker.com/linux/static/stable/x86_64

# 比如下载当前最新版,或者下载后上传到NAS
wget https://download.docker.com/linux/static/stable/x86_64/docker-26.1.3.tgz

2. 给你的群晖添加一个docker的用户

这一步是必须的,如果没添加成功则后面运行会出错

sudo synogroup --add docker $USER

3. 解压缩前面下载的docker源码安装包

tar xzvf docker-26.1.3.tgz

# 然后将文件复制到对应目录
sudo cp docker/* /usr/bin/

4. 创建守护程序Daemon

echo '{
  "storage-driver": "vfs",
  "iptables": false,
  "bridge": "none"
}' > /etc/docker/daemon.json

5. 运行Docker

sudo dockerd &

解决群晖NAS运行源码安装的Docker空间不足的问题

no space left on device

docker info -f '{{ .DockerRootDir }}'

通过此命令,可以发现直接运行的Docker默认目录的空间很小,大约1-2G左右,随便拉个稍大点的image就会空间不足,所以我们要创建并使用一个自定义的存放Docker image的目录。

mkdir -p /volume1/homes/image_docker

# 然后vi /etc/docker/daemon.json添加
"data-root": "/volume1/homes/tmp_docker"

# 重启docker
ps ax | grep docker
kill -9 id
sudo dockerd &

# 再确认一遍路径是否已改变:
docker info -f '{{ .DockerRootDir}}'

DSM安装docker-compose

DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

# 检查一下版本
docker compose version

DSM运行Portainer测试一下吧

sudo docker run -d --network=host portainer/portainer:linux-amd64

# 检查一下容器是否已运行 
docker ps

http://NAS_IP:9000

登录Portainer就可以用界面来管理Docker的容器了,适合不喜欢用CMD的小伙伴们

One More Thing

由于 Synology 的限制,所有容器都需要使用–network=host(或 compose 中的 network_mode: host),所有内容都将可直接从主机访问。没有端口映射。

by 技术奇客ITGeeker.net
退出移动版