windows 下 Docker 踩坑

我的开发机是 Windows 11。Windows 早就支持 WSL,也有 Hyper-V 的虚拟化解决方案,当然也能跑 Docker。

不过,我对 Docker 不熟悉,踩了不少坑。

Docker Desktop 无法启动

Docker Desktop 的状态条总是处于黄色。有时候还报错," docker desktop running engine: waiting for the VM setup to be ready: context canceled"。
解决办法:重启 Windows 之后就好了。

是否需要登录 Docker 账号?

先说结论:不需要登录 Docker 账号

看起来 Docker 这外网站确实是被墙了,我其实不太理解。其实墙了没什么用。所以,如果没有 Windows 下的全局翻墙代理,登录 Docker 账号也是挺困难的。

我曾经只给浏览器设代理,可以通过 Docker 账号的认证了,可是 Docker Desktop 还是认证不了。

后来我发现,Docker Desktop 是可以设代理的,而且可以支持 Sock5。在Resources / Proxies 下面,可以 Secure Web Server (HTTPS) 里面,配置 socks5://127.0.0.1:1080

但是,在 pull image 时,这种设置代理的方式会报错,它要求我们使用付费版的 Docker Desktop。折腾到这里,我都要哭了。

怎么办?设置代理。

设置代理的两种方式

方式一:正式设置

在 Docker 的 Settings 的 Docker Engine 标签中,里面有一个 JSON 文件。

这个文件实际上是在 %userprofile%.docker\daemon.json

原始的文件是:

json 复制代码
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false
}

添加 "registry-mirrors",如下:

json 复制代码
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://dockerproxy.cn",
    "https://docker.rainbond.cc",
    "https://docker.udayun.com",
    "https://docker.211678.top",
    "https://hub.geekery.cn",
    "https://ghcr.geekery.cn",
    "https://gcr.geekery.cn",
    "https://quay.geekery.cn"
  ]
}

注意:

"registry-mirrors" 的位置有讲究。我曾经把它放到 "experimental" 之前,Docker Engine 就启动失败。

这时甚至你无法退出 Docker Desktop。所以,你把上面的 json 文件复原之后,还需要耐心地等一会儿 Docker Desktop 退出,再重启试试。

如果还是不行,就手动编辑 %userprofile%.docker\daemon.json 文件,然后重启试试。

如果还是不行,就可以考虑重装 Docker了。

另外,上面这个代理镜像列表在 2024.10.10 是工作的,但是过段时间是不是工作,就不知道了。

方式二:修改拉取镜像的路径

把原来的 docker pull nginx:latest 改成:docker pull hub.geekery.cn/library/nginx:latest ,系统就从代理镜像,这里是 hub.geekery.cn 里拉数据了。

同样,在 Dockerfile 里可以这样搞:

Dockerfile 复制代码
FROM hub.geekery.cn/library/nginx:latest

这里的 library 是一个特殊的命名空间,它代表的是官方镜像。如果是某个用户的镜像就把library替换为镜像的用户名。

目前这么用起来, Windows 下的 Docker 和 Linux 下的 Docker 使用起来差不多。

相关推荐
小Pawn爷28 分钟前
1.Docker基础
运维·docker·容器
chinesegf30 分钟前
清理docker残留镜像images
运维·docker·容器
小Pawn爷1 小时前
2.Docker的存储
运维·docker·容器
广州中轴线1 小时前
OpenStack on Kubernetes 生产部署实战(十七)
容器·kubernetes·openstack
love530love2 小时前
Windows 下 GCC 编译器安装与排错实录
人工智能·windows·python·gcc·msys2·gtk·msys2 mingw 64
礼拜天没时间.2 小时前
自定义镜像制作——从Dockerfile到镜像
linux·docker·容器·centos·bash
猫头虎2 小时前
OpenClaw开源汉化发行版:介绍、下载、安装、配置教程
运维·windows·开源·aigc·ai编程·agi·csdn
luffy54592 小时前
windows下通过docker-desktop创建redis实例
windows·redis·docker·容器
程序员敲代码吗2 小时前
Windows组策略限制规避指南:深入解析与实际操作
windows
weixin_404679313 小时前
docker部署ollama
运维·docker·容器