前言
有很多更新了新版SCALE的同学,安装不了应用,原因是docker官方的源访问不了,所以写了一个添加mirror的脚本
脚本
#!/bin/bash
# 备份原始文件
sleep 30
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak
# 使用 jq 添加新的键值对并写入临时文件
sudo jq '. + { "registry-mirrors": ["https://docker.1panel.dev"] }' /etc/docker/daemon.json | sudo tee /etc/docker/daemon.json.tmp > /dev/null
# 检查 jq 是否成功
if [ $? -eq 0 ]; then
# 替换原始文件
sudo mv /etc/docker/daemon.json.tmp /etc/docker/daemon.json
echo "成功更新 daemon.json 文件。"
else
echo "更新 daemon.json 文件失败,恢复备份。"
sudo mv /etc/docker/daemon.json.bak /etc/docker/daemon.json
fi
# 重启 Docker 服务
sudo systemctl restart docker
这里用的mirror是 https://docker.1panel.dev,大家也可以替换成自己想要的
写入脚本到/root/update_docker_daemon.sh文件
sudo tee /root/update_docker_daemon.sh > /dev/null << 'EOF'
#!/bin/bash
sleep 30
# 备份原始文件
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak
# 使用 jq 添加新的键值对并写入临时文件
sudo jq '. + { "registry-mirrors": ["https://docker.1panel.dev"] }' /etc/docker/daemon.json | sudo tee /etc/docker/daemon.json.tmp > /dev/null
# 检查 jq 是否成功
if [ $? -eq 0 ]; then
# 替换原始文件
sudo mv /etc/docker/daemon.json.tmp /etc/docker/daemon.json
echo "成功更新 daemon.json 文件。"
else
echo "更新 daemon.json 文件失败,恢复备份。"
sudo mv /etc/docker/daemon.json.bak /etc/docker/daemon.json
fi
# 重启 Docker 服务
sudo systemctl restart docker
EOF
设置开机自启
由于SCALE重启会自动还原这个文件,所以我们需要把这个脚本开机执行
把上面的脚本保存名称为update_docker_daemon.sh
我是保存在/root下的,然后创建开机脚本

19 条评论
感谢分享。
按照楼主的方法做了尝试,更改了docker源,但是docker无法启动,我的系统更新到了TrueNAS scale 24.10.2.1
同样的问题,docker daemon启动失败
有没有大佬做个图文教程 自己试着弄了一下失败了T_T
感谢分享。
docker源目前看是失效了,地址替换为https://cjie.eu.org,然后按照博主分享的设置就ok了,目前在用版本24.10.1
TrueNas SCALE 如何进行科学上网呀
一种方法是在truenas上直接安装代理软件,但是truenas限制用户不可以安装软件,此方法可以忽略。另一种就是找个软路由,软路由上开代理,truenas通过软路由科学
install-dev-tools 解锁无法安装软件限制
你知道了吗?可以告诉我吗?我小白,第一次安装truenas scale 24.10.2
期待继续更新B站教程呀,文字代码看不明白。。。
非常感谢您,我用这个办法解决了无法拉取docker的问题。但我仍然有一个问题,我想描述一下我发现的现象和尝试的办法,请求得到解答:
我在TrueNAS SCALE 24.10.0.1和24.10.0.2版本中设置默认网关为旁路由(有代理)和直接设置代理服务器均无法拉取应用查询路由的日志可以看到TrueNAS已经正确地连接了,其他动作,例如更新库一类的动作可以看到正常地完成,连接到了github.com和docker.io的日志都有,我列出其中相关的部分`
10.195.. :48780 accepted //auth.docker.io:443 [http -> proxy]
10.195..:50792 accepted //registry-1.docker.io:443 [http -> proxy]
10.195..:56754 accepted //github.com:443 [http -> proxy]
`
例如更新应用库的动作都可以正常完成,只有拉取应用时失败,根据TrueNAS系统的要求查询了日志
`
(ERROR) app_lifecycle.compose_action():56 - Failed 'up' action for 'jellyfin' app: jellyfin Pulling
jellyfin Error Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
`
我根据这个日志才怀疑是网络的问题。
3.但是我在此前查询了TrueNAS的社区,发现有和我类似的情况,社区里的人没有得到一个大家公认的解决方式和原因。似乎有各种各样的原因导致了同一现象,例如没有写入权限和曾经删除过的同名应用占用了文件名等等。
如果您有时间,对这个问题感兴趣,请求您的解答。我也会继续搜集相关信息争取完全解决这个困难,目前这个换源的脚本给了我很大的帮助,让我此时可以正常使用NAS,再次感谢您。٩(ˊᗜˋ*)و
https://neucrack.com/p/286
在这里找到了一个设置代理的方式,TrueNAS SCALE 24.10.0.2版本docker的网络代理单独在这里设置之后成功运行了。
关于社区里的同名应用占用的问题,可以手动删除后重新拉取,相关内容在社区内键入关键词找最近的回帖就是。
看看
大佬能不能详细说说怎么替换呀~~ 不懂语言看不懂
那个脚本是不是直接在命名行 输入啊 先脚本 然后写入脚本文件 最后再设置启动呀
可以 chattr +i /etc/docker/daemon.json 直接把文件锁了
TrueNAS SCALE 24.10RC1 版本使用,梯子都无法拉取镜像,请问是正常情况吗?
是不是没有全局代理