怎样才能让我的 docker 走代理

2022-08-23 13:48:46 +08:00
 tengxunkuku
今天在拉取 ghcr 镜像的时候发现速度特别慢,观察 clashlog 发现 docker 拉取一直没有走代理,搜索相关教程发现群晖的系统是深度魔改的,与通用教程不同。
系统:黑裙 DSM7.0
代理方式:docker 运行 clash
需求:docker 本身走代理
16512 次点击
所在节点    NAS
32 条回复
tengxunkuku
2022-08-23 19:11:46 +08:00
总结:
原代理方式,docker 运行 clash ,暴露端口,群晖设置系统代理 127.0.0.1:7890 ,终端可以直接代理,但不知道为什么 docker 没走代理。
折腾了一下午,尝试了以下几种方式,由于种种原因失败
1.群晖安装 openwrt ,更改网关后无法 ping 通百度
2.docker daemon 配置文件,DSM 与通用 linux 不同,不知道在哪
3.iptables+redsocks 流量转发,需要安装编译环境和相关工具,我不想把群晖里装太多东西
4.群晖开的 windows 虚拟机,CFW 无法作为网关。
5.群晖创建 tun ,映射到 docker clash 作为透明代理,按教程走了一遍,失败
临时解决办法,更改 ClashX Pro 作为网关。许多在 linux 里很简单的方法到了 DSM 就会很复杂,先这样,以后有时间了再研究,感谢大家的回复。
TMaize
2022-08-23 20:17:09 +08:00
可以试下这个 https://dockerproxy.com/docs 。我有时候 pull 不来下会用这个替换下源地址,然后再改下 tag
shelken
2022-08-23 22:57:50 +08:00
群晖的网络设置可以设置代理的,这里的代理设置可以对群晖的 docker 管理端生效(就是 web 页面 docker )。如果你是 ssh 连接直接命令的话,直接 export http proxy 或者 socks5 。
xwchenhui
2022-08-23 23:02:20 +08:00
分享一个比较完美的方案,不过比较复杂:

1 、要有个能 passwall 的旁路
2 、群晖开双网口,一个接主路由(默认网关),一个接旁路由
3 、docker 创建 macvlan 网络,一个网关用主路由的,一个网关用旁路的
4 、需要 passwall 的容器指定旁路的 macvlan 网络

这样基本上就比较灵活了,哪些要直接出去的(比如下载工具),哪些要走旁路的可以自己搭配
YamatoRyou
2022-08-24 10:33:33 +08:00
分享一个我目前正在用的群晖 Docker 容器使用代理的方案:
1. 要走代理的容器添加环境变量:
HTTP_PROXY=http://127.0.0.1:****
HTTPS_PROXY=http://127.0.0.1:****

2. 另起一个 Privoxy 容器 (网络模式设置为 hosts), 配置文件注明要开放的端口及要经过代理访问的域名. 接着让上一个容器连接到 Privoxy 指定的端口.

这个方案我用来让 Synapse 容器连接推送网关, 存在一个缺点: http:// 开头的地址始终不能经过代理, https:// 开头的正常. 原因不明.
YamatoRyou
2022-08-24 10:36:59 +08:00
@YamatoRyou 看走眼了, 以为是楼主要让容器走代理. 请无视.
mu2er
2022-08-24 11:33:14 +08:00
我是群晖虚拟机上安装 openwrt ,运行 clash ,作为旁路由使用,需要科学上网的 Apple TV 等设备按需设置网关跟 dns 地址到旁路由。
试过群晖控制面板里设置 http 代理,好像这么直接设置 docker 容器并不能走代理连接。
可以在群晖的网络设置里修改网关地址跟 dns 为旁路由,这么整整个群晖都可以科学上网了。
tengxunkuku
2022-08-24 17:36:04 +08:00
简单方法:为 systemd 设置环境变量,DSM 中 dockerd 的父进程为 /sbin/init ,而 init 为 systemd 的一个符号链接,因此为 systemd 设置环境变量依然对 docker 起作用。参考 https://cloud.tencent.com/developer/article/1627708
horizon
2023-02-01 19:03:27 +08:00
我也遇到了这个问题。。蛋疼。
horizon
2023-02-01 19:09:34 +08:00
@tengxunkuku 老哥,我发现没有 docker.service 这个,你怎么解决的
temberature
185 天前
Apol1oBelvedere
20 天前
@BugCry 如果某个 image 在 hub.docker.com 里存在而不在 https://repo.nju.edu.cn/#browse/browse:docker-hub 里面那该怎么快速拖下来呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/874777

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX