群晖 container manager 修改镜像默认下载保存位置
- !!!修改前请先备份镜像或配置信息!!!
- 1. 遇到的问题
- 2. 找到并修改镜像下载位置
- 2.1使用ssh登录后台
- 2.2获取磁盘空间使用情况
- 2.3 查询配置信息
- 2.4 修改保存镜像位置
- 3 **重启 container manager**
- -- 省流版 --
!!!修改前请先备份镜像或配置信息!!!
一定一定一定要先备份容器再修改配置
1. 遇到的问题
在下载或者更新镜像的时候,会出现错误:Failed to pull image [failed to register layer: Error processing tar file(exit status 1): write /app/www-tmp/vendor/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php: no space left on device].
重点在最后一句 no space left on device,设备空间不足,导致无法下载镜像。
造成此问题的原因能想到的是两个,一个是现有存储空间全部满了导致的;第二个是手动迁移过服务造成的。
我的就是属于多硬盘间手动迁移服务导致的,手动从volume1迁移服务到volume2时漏掉了。
如果是第一种,只能加硬盘或腾空间,下面的内容无用,请关闭此文章~
2. 找到并修改镜像下载位置
2.1使用ssh登录后台
如果没有启动SSH功能,需要在 控制面板 终端机中找到启动SSH功能点击应用即可。
2.2获取磁盘空间使用情况
使用df -h获取磁盘空间使用情况
Filesystem | Size | Used | Avail | Use% | Mounted on |
---|---|---|---|---|---|
/dev/md0 | 7.9G | 7.6G | 307M | 96% | / |
/dev/mapper/cachedev_0 | 3.5T | 167G | 3.4T | 5% | /volume2 |
看到第一个**/dev/md0**可使用空间仅剩307M,就发现了问题的关键所在,也对应了那句 no space left on device。
2.3 查询配置信息
使用sudo docker info查询docker配置信息
会找到其中一行Docker Root Dir: /volume1/@docker,此处是我docker默认的下载位置(划重点,后面会找到对应配置信息)
注意打开文件需要sudo权限
- 打开
/var/packages/ContainerManager/conf/systemd/pkg-ContainerManager-dockerd.service
,会发现有一行配置信息为 ExecStart=/var/packages/ContainerManager/target/usr/bin/dockerd --config-file /var/packages/ContainerManager/etc/dockerd.json - 这里的
/var/packages/ContainerManager/etc/dockerd.json
就是我们需要修改的配置文件 - 打开此.json文件,会得到下面的配置
{"data-root":"/var/packages/ContainerManager/var/docker","log-driver":"db","registry-mirrors":[],"storage-driver":"btrfs"}
,其中data-root便是默认保存文件的位置了。
2.4 修改保存镜像位置
这里有两个方案(都需要重启container manager服务,可能会遇到启动失败需要修复,修复之后就可以了)
- 直接修改此文件的
data-root
配置,修改到新的位置,如我上面表格里 /volume2下面任意位置,保证空间足够即可。 - 前往
/var/packages/ContainerManager/var
,会看到软链接 docker -> /volume1/@docker 。
修改软连接配置,先删除原有链接rm [软链接的路径]
即rm /var/packages/ContainerManager/var/docker
后创建新连接ln -s [目标文件或目录的路径] [软链接的路径]
即ln -s /volume2/@docker2 /var/packages/ContainerManager/var/docker
3 重启 container manager
重启后,我遇到了需要迁移全部镜像的问题,可能是网络的原因一直卡在下载镜像的地方。
容器不多,所以备份了所有容易配置,重新下载并启动的,成功解决问题。
– 省流版 –
一定一定一定要先备份容器再修改配置
进入/var/packages/ContainerManager/etc/dockerd.json
,修改data-root
到新的位置,重启服务~
注意:重启服务后会提示迁移容器,但也可能会导致所有容器丢失,谨慎操作 !!!