迁移一个机器,结果发现所有镜像都没法 pull 了! 然后自己在国外机器部署的了代理
然后国内机器做好相关设置 更改配置以后 全部都依旧无法 pull 成功. 所以老哥们,请教一下现在国内的机器到底要怎样才能拉倒包.
-PS: 被搞的人都麻了,封这玩干啥
1
B1ankCat 16 天前
|
2
wxyrrcj 16 天前
2024 年最新国内可用的 Docker 镜像加速器地址汇总
https://www.wxy97.com/archives/b5b225b6-7741-4560-be2f-2e6a4f671d9b |
3
bthulu 16 天前
不要用 docker 啊, 国家现在全力打击 docker, 你居然头痛迎头而上, 小心被当业绩抓进去了
|
4
molika OP @B1ankCat #1 也找到过 但是报
Trying to pull repository docker.io/jc21/nginx-proxy-manager ... Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) |
8
johnhuangemc2 16 天前
试试在 Cloudflare 上搭代理: https://github.com/ciiiii/cloudflare-docker-proxy
|
9
nikenidage1 16 天前
阿里云我记得就有镜像啊
|
10
JoeDH 16 天前
找一个可用源地址,然后改掉镜像前缀
|
12
JoeDH 16 天前 1
确实恶心,自缚手脚,上头随便的一个拍脑袋决定,就能恶心到下面无数人
|
13
MADBOB 16 天前
你本地有梯子吗,参考这个搞 docker daemon 代理,这样就只代理 docker 拉镜像了,对别的服务没影响,https://docs.docker.com/engine/daemon/proxy/
|
14
liuzimin 16 天前 9
两大步:
第一步、服务器挂代理(前提本地电脑已开梯子+允许局域网+端口号 7890 ) 1.先在本地电脑 cmd 执行:ssh -R 1081:localhost:7890 -q -C -N username@remote_server ( username 和 remote_server 按实际修改,输入密码回车后没提示,不用管,此时 cmd 不要关闭) 2.再在服务器上执行:export ALL_PROXY=socks5://localhost:1081 (此时服务器 curl -v google.com 应该能返回 301 了) 第二步、docker 里挂代理 1.创建目录:mkdir -p /etc/systemd/system/docker.service.d 2.创建配置文件: /etc/systemd/system/docker.service.d/http-proxy.conf 3.配置文件 http-proxy.conf 填入以下内容,保存: [Service] Environment="HTTP_PROXY=http://localhost:1081" Environment="HTTPS_PROXY=http://localhost:1081" 4.重新加载配置文件,重启 dockerd: systemctl daemon-reload systemctl restart docker (此时 docker pull 应该没问题了) |
16
flyinghigherair 16 天前 1
https://dockerproxy.net/
输入要拉的镜像,直接帮你生成命令了 如果默认 dockerproxy.net 用不了,把命令中的 dockerproxy.net 换成 docker.1panel.live 或者其他地址 |
17
wnpllrzodiac 16 天前 via Android
@liuzimin 上魔法,一劳永逸
|
18
biguokang 16 天前 2
去油管搜 cf-docker,用 cf-worker 搭代理,全程不用写代码,不用钱(但得有个域名)
搭完后,在镜像前面加上你的域名+“/”号,就能高速下载。 或者把你 docker 镜像设置成你的 cf 域名,这样就一劳永逸了。 你可以试试我的,docker.alpaca-bi.com 比如`docker pull docker.alpaca-bi.com/nginx` |
19
biguokang 16 天前
你直接看这个教程好了
|
20
sfdev 16 天前 via Android
阿里云有私有仓库,需要自己往上上传,企业用户都代理可以直接用。
|
21
heartleo 16 天前
@molika 可以参考我这个 有问题可以私我 https://github.com/heartleo/image-copy
|
23
andyskaura 16 天前
搞个自用的 cf 转发,我把 npm 和 dockerhub 都挂上了。
|
24
obeykarma 16 天前 2
作茧自缚
早晚有一天与世界脱钩 |
30
Aurorataro 16 天前 1
自有域名+CF worker 代理 dockerhub ,我一直用这个,电信和移动网络都可用
|
32
dule 16 天前
@liuzimin #14 学到了,原来还能这么用,之前是临时用可用的源,想着其他的服务可能也需要,一劳永逸干脆干脆挂梯子,还在找 linux 服务器哪些客户端合适,就看到你这个,省事不少
|
33
spike0100 16 天前
@johnhuangemc2 我也是在 cf 搭的代理加速,不记得教程是不是这个,但是基本可以跑满带宽
|
35
joudev 16 天前
临时使用/即用即走的可以看看这个: https://github.com/togettoyou/hub-mirror
|
36
joudev 16 天前
提交 issues 就行
|
37
yougg 16 天前
如果仅是做迁移, 可以自己搭一个 docker registry, 把旧环境的镜像全部 push 上去, 再到新环境 pull.
|
39
512357301 16 天前 via Android
把旧机器的镜像打包成 tar 包,然后传到新机器上,直接 load 不就行了?干嘛要重新 pull ?重新 pull 的话,如果版本号不对,可能还会有兼容性问题。
|
40
zmh69695328 16 天前 via Android
我是每次拉镜像时,用 tailscale ,把家里的软路由作为 exit node 来连外网的
|
41
bingoso 16 天前 via Android
阿里云腾讯云默认可以 pull 镜像,但不能 search 。在这两个云上 pull 镜像没问题。但如果还要访问其他外网资源,我建议是装安装 docker 版的 v2rayA ,即用即开。另外,如果是生产用的镜像,直接把本地调试好的镜像 export 出来,然后上传并 load ,避免版本差异。
|
42
horizon 16 天前
|
44
molika OP @liuzimin #14 老哥 已经成功
google 已经成功 301 <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="http://www.google.com/">here</A>. </BODY></HTML> * Connection #0 to host google.com left intact 但是 docker pull 后 Trying to pull repository docker.io/library/nginx ... Get https://registry-1.docker.io/v2/: unexpected EOF 已经按照上面的步骤配置了代理了!晕 还请老哥看到指点一下 |
46
molika OP @liuzimin #15 curl https://registry-1.docker.io/v2/ 是可以返回数据的 看起来是代理配置没有生效
|
47
5ibug 16 天前
http://docker.kegui.net/
自己搭建的,拿去用不用谢.每个月 2t 流量,打不开了就是没流量了 |
48
molika OP @molika #44
➜ ~ sudo docker info | grep -i proxy WARNING: You're not using the default seccomp profile WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled Http Proxy: http://localhost:1081 Https Proxy: http://localhost:1081 但是 依旧 Trying to pull repository docker.io/library/nginx ... Get https://registry-1.docker.io/v2/: unexpected EOF |
50
Flourite 16 天前
/etc/systemd/system/docker.service.d/http-proxy.conf
[Service] Environment="HTTP_PROXY=http://127.0.0.1:8118" Environment="HTTPS_PROXY=http://127.0.0.1:8118" Environment="NO_PROXY=localhost,127.0.0.1" https://y2k38.github.io/deploy-docker-and-registry-service/ |
51
hefish 16 天前
我都是挂梯子直连的。
|
52
nananqujava 16 天前
@bthulu #3 你这个发言真让人大跌眼镜
|
53
fanersai 16 天前
试了一圈,就是 1panel 最稳定
|
54
elevioux 16 天前
|
57
treizeor 16 天前
#!/bin/bash -e
# 检查是否传递了目标参数 if [ $# -ne 1 ]; then echo "Usage: $0 <docker image>" exit fi IMG=$1 ############################################################################### # DockerHub 镜像源列表 DOCKERHUB_REGISTRY_MIRRORS=( "docker.1panel.live" "docker.unsee.tech" "docker.m.daocloud.io" "docker.kejilion.pro" "registry.dockermirror.com" "hub.rat.dev" "dhub.kubesre.xyz" "docker.nastool.de" ) ############################################################################### # 检查本地是否已经存在 ${IMG} if docker images --format "{{.Repository}}:{{.Tag}}" | grep -q "^${IMG}$"; then echo "镜像 ${IMG} 已经存在,跳过拉取步骤。" exit 0 fi # 遍历镜像源,拉取并打标签 for registry in "${DOCKERHUB_REGISTRY_MIRRORS[@]}"; do registry_img=${registry}/${IMG} # 检查本地是否已经存在 ${registry_img} if docker images --format "{{.Repository}}:{{.Tag}}" | grep -q "^${registry_img}$"; then echo "本地已经存在 ${registry_img},跳过拉取,进行打标签。" # 为本地已有的镜像打标签为 ${IMG} if docker tag ${registry_img} ${IMG}; then echo "镜像 ${registry_img} 成功打标签为 ${IMG}。" docker rmi ${registry_img} # 删除原镜像( registry 镜像源) exit 0 # 成功后退出脚本 else echo "为镜像 ${registry_img} 打标签失败!" continue fi fi echo "尝试从镜像源 ${registry} 拉取 ${IMG}..." # 拉取镜像 if docker pull ${registry_img}; then # 打标签为 ${IMG} if docker tag ${registry_img} ${IMG}; then echo "镜像 ${registry_img} 成功打标签为 ${IMG}。" docker rmi ${registry_img} # 删除原镜像( registry 镜像源) exit 0 # 成功后退出脚本 else echo "为镜像 ${IMG} 打标签失败!" docker rmi ${registry_img} # 删除失败的镜像 continue fi else echo -e "从 ${registry} 拉取镜像失败,尝试下一个镜像源...\n" continue fi done echo "所有镜像源都尝试过,未能拉取并打标签 ${IMG}。" # 保存为 docker-pull.sh ,docker-pull.sh 镜像 |
58
liuliancao 16 天前
➜ puppetmaster git:(main) ✗ cat /etc/docker/daemon.json
{ "data-root": "/data/docker", "registry-mirrors": [ "https://docker.registry.cyou" ] } ➜ puppetmaster git:(main) ✗ docker pull busybox Using default tag: latest latest: Pulling from library/busybox Digest: sha256:db142d433cdde11f10ae479dbf92f3b13d693fd1c91053da9979728cceb1dc68 Status: Image is up to date for busybox:latest docker.io/library/busybox:latest 试试这个呢 |
59
zephyru 16 天前
我之前也被类似的问题卡过..
我那会是 docker 构筑的时候会拉别的源... 不过你拉 docker 构筑后的镜像按理说不应该.. 我最后是在网关做了分流,外网连接自己走代理解决的这个问题 |
60
burby 16 天前
14 楼正确答案
|
61
BlackLynx 16 天前
最近搭 k8s 集群也被 docker 镜像拉取恶心到了
|
62
sfdev 16 天前
如果你使用的镜像不多的话可以手动上传,本地电脑 docker save 出压缩包 上传到服务器 docker load 导入就行。
|
63
shum02 16 天前
云服务器开代理注意自己防火墙,别问为啥知道的,建议自建一个镜像站自己用
|
64
ZingLix 16 天前
腾讯云有个仅供内网使用的 docker 镜像,目前使用良好 https://mirror.ccs.tencentyun.com
|
65
cppc 16 天前
顺便说一下,关于 dockerd 走代理:新版本 docker 可以在 deamon 配置文件中配置代理,文档见: https://docs.docker.com/config/daemon/proxy/,配置文件位置为:
``` Linux, regular setup -> /etc/docker/daemon.json Linux, rootless mode -> ~/.config/docker/daemon.json Windows -> C:\ProgramData\docker\config\daemon.json ``` |
66
cenbiq 16 天前
建议大家还是不要分享自己搭的 docker 代理吧,这次 ban 掉 docker 再结合云商允许提供个人的 docker 源访问,我理解的就是乘着这次把 docker 镜像源责任到人( docker 和 github 是为数不多的不受监管的国内外信息接入点,上面想整已经不是一天两天了),出了事得有人可拷
|
67
blackguester 16 天前
自建代理納
|
68
NJHSGDBD 16 天前
在可以 pull 的机器先 pull 后导出到 tar ,scp 到服务器再导入
|
69
liuzimin 16 天前
@molika 你这个 unexpected EOF 的报错我也遇到过,但忘记怎么处理的了。
你试试再执行一下这两句呢?: export HTTP_PROXY=http://localhost:1081 export HTTPS_PROXY=http://localhost:1081 我刚刚回滚到最初快照,重新配置测了下,可以成功拉取被封的仓库。 然后也可以试试本地电脑的梯子换换线路+改成全局模式之类的,我之前规则模式竟然连 curl -v google 都返回不了 301 。 |
70
wyxls 16 天前
我目前是自建了一个官方镜像配置登录鉴权的 registry 容器加自有域名搭配组成代理缓存仓库
配置容器的 HTTP_PROXY 和上游仓库 REGISTRY_PROXY_REMOTE=htps://registry-1.docker.io 利用 nginx 反代自有域名,pull 的时候带上 domain.com:port/docker_url 就能正常工作,就是每个镜像都得手动在前面加域名端口有点麻烦 理论上可以找个能直连访问到 dockerhub 仓库的地方做反代就行,就像#18 #30 说的那样 |
71
BanDao 16 天前
最近也有需求,新鲜出炉的只需三步:
1. 海外节点做反代,使用 let's encrypt 免费证书 2. 配置本地节点的 registry mirrors 为反代域名 3. 重启 docker daemon |
74
heartleo 16 天前
@molika 试试
# 国外机器执行 cat > docker-compose.yml << EOF networks: registry: name: registry services: registry: image: "registry:2.8.3" container_name: registry ports: - "5000:5000" networks: - registry restart: unless-stopped volumes: - "/etc/localtime:/etc/localtime" - "./data:/var/lib/registry" - "./config.yml:/etc/docker/registry/config.yml" EOF cat > config.yml << EOF version: 0.1 log: level: debug formatter: json storage: filesystem: rootdirectory: /var/lib/registry delete: enabled: true cache: blobdescriptor: inmemory maintenance: uploadpurging: enabled: true age: 168h dryrun: false interval: 1m readonly: enabled: false http: addr: 0.0.0.0:5000 health: storagedriver: enabled: true interval: 10s proxy: remoteurl: https://registry-1.docker.io EOF $ docker-compose up -d # 国内机器执行 cat > /etc/docker/daemon.json << EOF { "insecure-registries": ["ip:5000"] } EOF systemctl daemon-reload systemctl restart docker # 拉取镜像 docker pull ip:5000/library/nginx:latest |
75
heartleo 16 天前
v 站怎么贴代码啊 缩进都没了
|
76
NanFengXiangWan 16 天前
GNU/Linux 更换系统软件源脚本及 Docker 安装脚本
官网: https://linuxmirrors.cn/ bash <(curl -sSL https://linuxmirrors.cn/main.sh) |
77
JuSH 16 天前
https://gitee.com/extrame/dget
我最近更新群晖里面 docker 服务时找到的,直接从官方拉去 docker 镜像 使用的时候需要打开梯子工具 http 代理。 然后再命令提示符里面输入以下命令,设置 http 代理变量(当然也可以直接配置到系统环境变量内)。 set HTTP_PROXY=http://127.0.0.1:1080 (需要改成你的梯子 http 代理端口) set HTTPS_PROXY=http://127.0.0.1:1080 (需要改成你的梯子 http 代理端口) 然后参考 https://gitee.com/extrame/dget 页面的说明拉去 docker 的镜像进行部署就行。 |
78
maojun 16 天前 via iPhone
docker 的代理要单独配置,什么 http_proxy 变量之类的没用的
贴一下以前做的笔记 https://ant00000ny.notion.site/Docker-a96deab43b49438babd4dd2a7724a5e0?pvs=4 |
79
FightPig 16 天前
@ZingLix 我腾讯云的就不行,直接 Error response from daemon: Get "https://registry-1.docker.io/v2/
|
80
yqs112358 16 天前
其实目前第三方的镜像站还是有一些的,类似 https://dockerpull.org 、https://docker.unsee.tech 之类的应该都可以用,只要 OP 信得过。或者还有一种办法是用 SSH 端口映射,把自己电脑上的代理软件的 socks5 端口映射到服务器上去用。
写了个帖子专门记录了常见的几种情况,可供参考: https://blog.openyq.top/posts/12753/ |
81
Manley 16 天前
楼上老哥贴的,https://dockerpull.org/ 这个就可以。作者在 linux.do 和 v 站发过帖子,就是用 CF 自建的
|
82
memorycancel 16 天前
为啥不同国内的镜像?
```shell sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<EOF { "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.ccs.tencentyun.com", "https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com", "https://registry.docker-cn.com", "https://docker.m.daocloud.io", "https://docker.1panel.live", "https://hub.rat.dev", "https://dockerpull.com", "https://dockerproxy.cn", "https://docker.rainbond.cc", "https://docker.udayun.com", "https://docker.211678.top" ] } EOF systemctl restart docker ``` |
83
northbrunv 16 天前
安装 wireguard 开全局代理拉镜像,简单省事
|
85
molika OP @memorycancel #82 全部 直接 Error response from daemon: Get "https://registry-1.docker.io/v2/ 不知道是不是腾讯云服务器搞了啥子鬼.
|
87
raphaelsoul 16 天前
流量不够大 没有到非用不可的情况下 就回归传统方式吧。脱钩的风会吹到各个领域的,要适应新形势。
|
88
molika OP @raphaelsoul #87 手搓 nginx 配置 已经先跑起来了. 离了大谱了 开倒车了
|
89
cowcomic 16 天前
我是在一台有机场的机器上用 skopeo 下载镜像文件
再在服务器上 load 进去 我们这边的业务本身也都要求离线部署 唯一麻烦点儿的就是要机场流量花的挺多 |
90
llsquaer 16 天前
说个题外话,docker 是第一批拉黑国内厂家之一 执行速度之快。
实在不行,难道不能先下在本地。然后再传到云里么? |
91
DAMNCRAB 16 天前
14 楼正解
|
92
linzyjx 16 天前
registry-mirror ,compose 里加环境变量设置 proxy server
|
93
raphaelsoul 16 天前
@molika 出了这事以后搭了一次 k8s 折腾半天换 k3s 。最后虽然跑起来了,但也决定彻底放弃容器部署这条路了。心智成本时间成本也是成本。
|
96
zliea 16 天前
免费就是 CF ,如果自建就是国外服务器+NG+IP 白名单。
|
97
shakukansp 16 天前
@wu67 梯子的镜像都是国外机器在拉,国内封什么封=。=
|
98
poplar50 16 天前 via Android 2
最稳定的方式是有一台可直连的海外 vps ,然后部署一个 docker registry ,开启 pull through 模式,这样你从这个自建的 registry 拉取镜像时,会自动从设置的远端 registry ( docker.io) 拉取。
上面这个方案是我使用过最稳定的方案。cf 在某些网络情况下连接情况不稳定;我还自己写过 docker registry 的 proxy server 。最后才发现原来官方就有 pull through 模式。 |
99
sdrpsps 16 天前
腾讯云?腾讯云有自己的内网镜像 https://mirror.ccs.tencentyun.com
|
100
xuxuxu123 16 天前
华为提供加速服务:
https://console.huaweicloud.com/swr/?agencyId=30f14fb365254c46b2e0770e4a42da10®ion=cn-south-1&locale=zh-cn#/swr/mirror 需要自己有账号; 容器镜像服务 SWR--右上角:镜像加速器 |