Docker客户端强制使用IPv6拉取镜像,如何切换为IPv4?
解决方案
一、强制Docker使用IPv4拉取镜像
1. 完善Docker守护进程配置
编辑/etc/docker/daemon.json,补充IPv4相关配置:
{ "insecure-registries": ["192.168.0.105:5000"], "ipv6": false, "ip6tables": false, "dns": ["8.8.8.8", "1.1.1.1"] }
保存后重启Docker服务:
sudo systemctl restart docker
2. 临时强制客户端用IPv4拉取
如果守护进程配置未生效,可临时设置环境变量拉取镜像:
DOCKER_CLIENT_IP=0.0.0.0 docker pull arm32v7/postgres
3. 确保系统IPv6完全禁用
检查并禁用所有网卡的IPv6:
echo 1 | sudo tee /proc/sys/net/ipv6/conf/default/disable_ipv6 echo 1 | sudo tee /proc/sys/net/ipv6/conf/eth0/disable_ipv6 # 替换eth0为你的网卡名(如wlan0)
若要开机自动生效,可将上述命令添加到/etc/rc.local文件中(需确保文件有执行权限)。
二、解决本地仓库的架构不匹配错误
出现no matching manifest for linux/amd64是因为本地仓库中只有amd64架构的镜像,树莓派(arm32v7)无法匹配。按以下步骤修复:
- 在主PC上拉取arm32v7架构的镜像并推送到本地仓库:
# 拉取对应架构镜像 docker pull arm32v7/postgres # 打标签指向本地仓库 docker tag arm32v7/postgres 192.168.0.105:5000/arm32v7/postgres # 推送到本地仓库 docker push 192.168.0.105:5000/arm32v7/postgres
- 在树莓派上拉取本地仓库的镜像:
docker pull 192.168.0.105:5000/arm32v7/postgres
三、验证配置有效性
重启Docker后,执行以下命令确认IPv6已禁用:
docker info | grep IPv6
输出应为IPv6: disabled。
内容的提问来源于stack exchange,提问作者user23499103
相关产品推荐
相关产品推荐

