迁移一个机器,结果发现所有镜像都没法 pull 了! 然后自己在国外机器部署的了代理
然后国内机器做好相关设置 更改配置以后 全部都依旧无法 pull 成功. 所以老哥们,请教一下现在国内的机器到底要怎样才能拉倒包.
-PS: 被搞的人都麻了,封这玩干啥
![]() | 1 B1ankCat 309 天前 |
![]() | 2 wxyrrcj 309 天前 2024 年最新国内可用的 Docker 镜像加速器地址汇总 https://www.wxy97.com/archives/b5b225b6-7741-4560-be2f-2e6a4f671d9b |
3 bthulu 309 天前 不要用 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 cnceled while waiting for connection (Client.Timeout exceeded while awaiting headers) |
8 johnhuangemc2 309 天前 试试在 Cloudflare 上搭代理: https://github.com/ciiiii/cloudflare-docker-proxy |
![]() | 9 liuliuliuliu PRO 阿里云我记得就有镜像啊 |
10 JoeDH 309 天前 找一个可用源地址,然后改掉镜像前缀 |
12 JoeDH 309 天前 ![]() 确实恶心,自缚手脚,上头随便的一个拍脑袋决定,就能恶心到下面无数人 |
![]() | 13 MADBOB 309 天前 你本地有梯子吗,参考这个搞 docker daemon 代理,这样就只代理 docker 拉镜像了,对别的服务没影响,https://docs.docker.com/engine/daemon/proxy/ |
![]() | 14 liuzimin 309 天前 ![]() 两大步: 第一步、服务器挂代理(前提本地电脑已开梯子+允许局域网+端口号 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 309 天前 ![]() https://dockerproxy.net/ 输入要拉的镜像,直接帮你生成命令了 如果默认 dockerproxy.net 用不了,把命令中的 dockerproxy.net 换成 docker.1panel.live 或者其他地址 |
17 wnpllrzodiac 309 天前 via Android @liuzimin 上魔法,一劳永逸 |
![]() | 18 a href="/member/biguokang" class="dark">biguokang 309 天前 ![]() 去油管搜 cf-docker,用 cf-worker 搭代理,全程不用写代码,不用钱(但得有个域名) 搭完后,在镜像前面加上你的域名+“/”号,就能高速下载。 或者把你 docker 镜像设置成你的 cf 域名,这样就一劳永逸了。 你可以试试我的,docker.alpaca-bi.com 比如`docker pull docker.alpaca-bi.com/nginx` |
![]() | 19 biguokang 309 天前 你直接看这个教程好了 |
![]() | 20 sfdev 309 天前 via Android 阿里云有私有仓库,需要自己往上上传,企业用户都代理可以直接用。 |
21 heartleo 309 天前 @molika 可以参考我这个 有问题可以私我 https://github.com/heartleo/image-copy |
![]() | 23 andyskaura 309 天前 搞个自用的 cf 转发,我把 npm 和 dockerhub 都挂上了。 |
![]() | 24 obeykarma 309 天前 ![]() 作茧自缚 早晚有一天与世界脱钩 |
![]() | 30 Aurorataro 309 天前 ![]() 自有域名+CF worker 代理 dockerhub ,我一直用这个,电信和移动网络都可用 |
32 dule 309 天前 @liuzimin #14 学到了,原来能这么用,之前是临时用可用的源,想着其他的服务可能也需要,一劳永逸干脆干脆挂梯子,还在找 linux 服务器哪些客户端合适,就看到你这个,省事不少 |
![]() | 33 spike0100 309 天前 @johnhuangemc2 我也是在 cf 搭的代理加速,不记得教程是不是这个,但是基本可以跑满带宽 |
35 joudev 309 天前 临时使用/即用即走的可以看看这个: https://github.com/togettoyou/hub-mirror |
36 joudev 309 天前 提交 issues 就行 |
![]() | 37 yougg 309 天前 如果仅是做迁移, 可以自己搭一个 docker registry, 把旧环境的镜像全部 push 上去, 再到新环境 pull. |
39 512357301 309 天前 via Android 把旧机器的镜像打包成 tar 包,然后传到新机器上,直接 load 不就行了?干嘛要重新 pull ?重新 pull 的话,如果版本号不对,可能还会有兼容性问题。 |
![]() | 40 zmh69695328 309 天前 via Android 我是每次拉镜像时,用 tailscale ,把家里的软路由作为 exit node 来连外网的 |
![]() | 41 bingoso 309 天前 via Android 阿里云腾讯云默认可以 pull 镜像,但不能 search 。在这两个云上 pull 镜像没问题。但如果还要访问其他外网资源,我建议是装安装 docker 版的 v2rayA ,即用即开。另外,如果是生产用的镜像,直接把本地调试好的镜像 export 出来,然后上传并 load ,避免版本差异。 |
42 horizon 308 天前 |
44 molika OP @liuzimin #14 老哥 已经成功 google 已经成功 301 <HTML><HEAD><meta http-equiv="content-type" cOntent="text/html;charset="> <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 308 天前 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 |
49 Pdk5a8759cbeD6CH 308 天前 @bthulu 全世界只有中国一个国家需要国家安全吗? |
![]() | 50 dV9zZM1wROuBT16X 308 天前 /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 308 天前 我都是挂梯子直连的。 |
52 nananqujava 308 天前 @bthulu #3 你这个发言真让人大跌眼镜 |
![]() | 53 momo65535 308 天前 试了一圈,就是 1panel 最稳定 |
![]() | 57 treizeor 308 天前 #!/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 308 天前 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 308 天前 我之前也被类似的问题卡过.. 我那会是 docker 构筑的时候会拉别的源... 不过你拉 docker 构筑后的镜像按理说不应该.. 我最后是在网关做了分流,外网连接自己走代理解决的这个问题 |
![]() | 60 burby 308 天前 14 楼正确答案 |
![]() | 61 BlackLynx 308 天前 最近搭 k8s 集群也被 docker 镜像拉取恶心到了 |
![]() | 62 sfdev 308 天前 如果你使用的镜像不多的话可以手动上传,本地电脑 docker save 出压缩包 上传到服务器 docker load 导入就行。 |
63 shum02 308 天前 云服务器开代理注意自己防火墙,别问为啥知道的,建议自建一个镜像站自己用 |
64 Ichiban 308 天前 腾讯云有个仅供内网使用的 docker 镜像,目前使用良好 https://mirror.ccs.tencentyun.com |
65 cppc 308 天前 顺便说一下,关于 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 308 天前 建议大家还是不要分享自己搭的 docker 代理吧,这次 ban 掉 docker 再结合云商允许提供个人的 docker 源访问,我理解的就是乘着这次把 docker 镜像源责任到人( docker 和 github 是为数不多的不受监管的国内外信息接入点,上面想整已经不是一天两天了),出了事得有人可拷 |
![]() | 67 blackguester 308 天前 自建代理 |
68 NJHSGDBD 308 天前 在可以 pull 的机器先 pull 后导出到 tar ,scp 到服务器再导入 |
![]() | 69 liuzimin 308 天前 @molika 你这个 unexpected EOF 的报错我也遇到过,但忘记怎么处理的了。 你试试再执行一下这两句呢?: export HTTP_PROXY=http://localhost:1081 export HTTPS_PROXY=http://localhost:1081 我刚刚回滚到最初快照,重新配置测了下,可以成功拉取被封的仓库。 然后也可以试试本地电脑的梯子换换线路+改成全局模式之类的,我之前规则模式竟然连 curl -v google 都返回不了 301 。 |
![]() | 70 wyxls 308 天前 我目前是自建了一个官方镜像配置登录鉴权的 registry 容器加自有域名搭配组成代理缓存仓库 配置容器的 HTTP_PROXY 和上游仓库 REGISTRY_PROXY_REMOTE=htps://registry-1.docker.io 利用 nginx 反代自有域名,pull 的时候带上 domain.com:port/docker_url 就能正常工作,就是每个镜像都得手动在前面加域名端口有点麻烦 理论上可以找个能直连访问到 dockerhub 仓库的地方做反代就行,就像#18 #30 说的那样 |
![]() | 71 BanDao 308 天前 最近也有需求,新鲜出炉的只需三步: 1. 海外节点做反代,使用 let's encrypt 免费证书 2. 配置本地节点的 registry mirrors 为反代域名 3. 重启 docker daemon |
74 heartleo 308 天前 @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 308 天前 v 站怎么贴代码啊 缩进都没了 |
![]() | 76 NanFengXiangWan 308 天前 GNU/Linux 更换系统软件源脚本及 Docker 安装脚本 官网: https://linuxmirrors.cn/ bash <(curl -sSL https://linuxmirrors.cn/main.sh) |
![]() | 77 JuSH 308 天前 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 308 天前 via iPhone docker 的代理要单独配置,什么 http_proxy 变量之类的没用的 贴一下以前做的笔记 https://ant00000ny.notion.site/Docker-a96deab43b49438babd4dd2a7724a5e0?pvs=4 |
![]() | 79 FightPig 308 天前 @ZingLix 我腾讯云的就不行,直接 Error response from daemon: Get "https://registry-1.docker.io/v2/ |
80 yqs112358 308 天前 其实目前第三方的镜像站还是有一些的,类似 https://dockerpull.org 、https://docker.unsee.tech 之类的应该都可以用,只要 OP 信得过。或者还有一种办法是用 SSH 端口映射,把自己电脑上的代理软件的 socks5 端口映射到服务器上去用。 写了个帖子专门记录了常见的几种情况,可供参考: https://blog.openyq.top/posts/12753/ |
![]() | 81 Manley 308 天前 楼上老哥贴的,https://dockerpull.org/ 这个就可以。作者在 linux.do 和 v 站发过帖子,就是用 CF 自建的 |
![]() | 82 memorycancel 308 天前 为啥不同国内的镜像? ```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 Brunuh2Ville2 308 天前 安装 wireguard 开全局代理拉镜像,简单省事 |
85 molika OP @memorycancel #82 全部 直接 Error response from daemon: Get "https://registry-1.docker.io/v2/ 不知道是不是腾讯云服务器搞了啥子鬼. ![]() |
![]() | 87 raphaelsoul 308 天前 流量不够大 没有到非用不可的情况下 就回归传统方式吧。脱钩的风会吹到各个领域的,要适应新形势。 |
88 molika OP @raphaelsoul #87 手搓 nginx 配置 已经先跑起来了. 离了大谱了 开倒车了 ![]() |
![]() | 89 cowcomic 308 天前 我是在一台有机场的机器上用 skopeo 下载镜像文件 再在服务器上 load 进去 我们这边的业务本身也都要求离线部署 唯一麻烦点儿的就是要机场流量花的挺多 |
![]() | 90 llsquaer 308 天前 说个题外话,docker 是第一批拉黑国内厂家之一 执行速度之快。 实在不行,难道不能先下在本地。然后再传到云里么? |
91 DAMNCRAB 308 天前 14 楼正解 |
92 linzyjx 308 天前 registry-mirror ,compose 里加环境变量设置 proxy server |
![]() | 93 raphaelsoul 308 天前 @molika 出了这事以后搭了一次 k8s 折腾半天换 k3s 。最后虽然跑起来了,但也决定彻底放弃容器部署这条路了。心智成本时间成本也是成本。 |
![]() | 96 zliea 308 天前 免费就是 CF ,如果自建就是国外服务器+NG+IP 白名单。 |
![]() | 97 shakukansp 308 天前 @wu67 梯子的镜像都是国外机器在拉,国内封什么封=。= |
![]() | 98 poplar50 308 天前 via Android ![]() 最稳定的方式是有一台可直连的海外 vps ,然后部署一个 docker registry ,开启 pull through 模式,这样你从这个自建的 registry 拉取镜像时,会自动从设置的远端 registry ( docker.io) 拉取。 上面这个方案是我使用过最稳定的方案。cf 在某些网络情况下连接情况不稳定;我还自己写过 docker registry 的 proxy server 。最后才发现原来官方就有 pull through 模式。 |
![]() | 99 sdrpsps 308 天前 腾讯云?腾讯云有自己的内网镜像 https://mirror.ccs.tencentyun.com |
![]() | 100 xuxuxu123 308 天前 华为提供加速服务: https://console.huaweicloud.com/swr/?agencyId=30f14fb365254c46b2e0770e4a42da10®ion=cn-south-1&locale=zh-cn#/swr/mirror 需要自己有账号; 容器镜像服务 SWR--右上角:镜像加速器 |