docker pull是基于dockerd的网络环境,解决方法:1.直接把unraid整个接全局科学,这样会影响ip敏感的pt之类或公网同步之类的服务;2.结合旁路由规划docker容器和unraid网络进行代理分流;3.单独给dockerd加个代理,这样拉镜像docker pull就走这个代理了,不会影响其他容器网络
以3为例
1.unraid docker启动脚本位置在/usr/local/etc/rc.d/rc.docker在webui上的docker操作都会调用这个shell脚本
2.打开rc.docker文件在533行有启动命令nohup $UNSHARE --propagation slave -- $DOCKER -p $DOCKER_PIDFILE $DOCKER_OPTS >>$DOCKER_LOG 2>&1 &
3.在nohup后面增加env https_proxy=http://梯子:端口 http_proxy=http://梯子:端口
vi /usr/local/etc/rc.d/rc.docker
键盘↓找到启动命令,键盘➡移动光标到nohup后,按 i 进入编辑模式,增加完对应参数后按 esc 推出编辑模式,按 : 后输入 wq 然后回车,这样就保存退出了
或者用自己现有的文件管理器filebowser之类的编辑
4.最终命令为
5.在web页面 - setting - docker - enabled docker 把docker no掉再yes打开,重启下docker让环境变量生效
6.像往常一样更新镜像
点击UPDATE ALL后拉取镜像都走梯子了
最后,可以写个sed插入语句加到go文件里,或者写个脚本加到脚本插件里设置阵列启动前运行,实现优雅的自动化,或者就手动执行吧,反正nas也不关机,说不定过几天就解封了
最后吐槽下开源的就是草台班子,docker build都有单独的代理参数设置,多少个版本过去了docker pull啥都没
#!/bin/bash
# Start the Management Utility
/usr/local/sbin/emhttp
# 定义要修改的文件路径
DOCKER_RC_FILE="/usr/local/etc/rc.d/rc.docker"
# 确保文件存在
if [ -f "$DOCKER_RC_FILE" ]; then
# 在nohup之后添加环境变量
sed -i 's|nohup|nohup env https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890|' "$DOCKER_RC_FILE"
fi
评论区