国内机器 docker 的镜像到底应该怎么拽?

34 天前
 molika

迁移一个机器,结果发现所有镜像都没法 pull 了! 然后自己在国外机器部署的了代理

然后国内机器做好相关设置 更改配置以后 全部都依旧无法 pull 成功. 所以老哥们,请教一下现在国内的机器到底要怎样才能拉倒包.

-PS: 被搞的人都麻了,封这玩干啥

12399 次点击
所在节点    程序员
147 条回复
BlackLynx
34 天前
最近搭 k8s 集群也被 docker 镜像拉取恶心到了
sfdev
34 天前
如果你使用的镜像不多的话可以手动上传,本地电脑 docker save 出压缩包 上传到服务器 docker load 导入就行。
shum02
34 天前
云服务器开代理注意自己防火墙,别问为啥知道的,建议自建一个镜像站自己用
ZingLix
34 天前
腾讯云有个仅供内网使用的 docker 镜像,目前使用良好 https://mirror.ccs.tencentyun.com
cppc
34 天前
顺便说一下,关于 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
```
cenbiq
34 天前
建议大家还是不要分享自己搭的 docker 代理吧,这次 ban 掉 docker 再结合云商允许提供个人的 docker 源访问,我理解的就是乘着这次把 docker 镜像源责任到人( docker 和 github 是为数不多的不受监管的国内外信息接入点,上面想整已经不是一天两天了),出了事得有人可拷
blackguester
34 天前
自建代理納
NJHSGDBD
34 天前
在可以 pull 的机器先 pull 后导出到 tar ,scp 到服务器再导入
liuzimin
34 天前
@molika 你这个 unexpected EOF 的报错我也遇到过,但忘记怎么处理的了。
你试试再执行一下这两句呢?:
export HTTP_PROXY=http://localhost:1081
export HTTPS_PROXY=http://localhost:1081

我刚刚回滚到最初快照,重新配置测了下,可以成功拉取被封的仓库。
然后也可以试试本地电脑的梯子换换线路+改成全局模式之类的,我之前规则模式竟然连 curl -v google 都返回不了 301 。
wyxls
34 天前
我目前是自建了一个官方镜像配置登录鉴权的 registry 容器加自有域名搭配组成代理缓存仓库
配置容器的 HTTP_PROXY 和上游仓库 REGISTRY_PROXY_REMOTE=htps://registry-1.docker.io
利用 nginx 反代自有域名,pull 的时候带上 domain.com:port/docker_url 就能正常工作,就是每个镜像都得手动在前面加域名端口有点麻烦
理论上可以找个能直连访问到 dockerhub 仓库的地方做反代就行,就像#18 #30 说的那样
BanDao
34 天前
最近也有需求,新鲜出炉的只需三步:
1. 海外节点做反代,使用 let's encrypt 免费证书
2. 配置本地节点的 registry mirrors 为反代域名
3. 重启 docker daemon
mark2025
34 天前
@liuzimin export HTTP_PROXY=http://localhost:1081
为啥不直接用 7890 端口呢?
liuzimin
34 天前
@mark2025 好像也不是不行。。主要是区分一下服务器代理和本地电脑代理吧。
heartleo
34 天前
@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
heartleo
34 天前
v 站怎么贴代码啊 缩进都没了
NanFengXiangWan
34 天前
GNU/Linux 更换系统软件源脚本及 Docker 安装脚本
官网: https://linuxmirrors.cn/
bash <(curl -sSL https://linuxmirrors.cn/main.sh)
JuSH
34 天前
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 的镜像进行部署就行。
maojun
34 天前
docker 的代理要单独配置,什么 http_proxy 变量之类的没用的

贴一下以前做的笔记
https://ant00000ny.notion.site/Docker-a96deab43b49438babd4dd2a7724a5e0?pvs=4
FightPig
34 天前
@ZingLix 我腾讯云的就不行,直接 Error response from daemon: Get "https://registry-1.docker.io/v2/
yqs112358
34 天前
其实目前第三方的镜像站还是有一些的,类似 https://dockerpull.orghttps://docker.unsee.tech 之类的应该都可以用,只要 OP 信得过。或者还有一种办法是用 SSH 端口映射,把自己电脑上的代理软件的 socks5 端口映射到服务器上去用。
写了个帖子专门记录了常见的几种情况,可供参考: https://blog.openyq.top/posts/12753/

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

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

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

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

© 2021 V2EX