MacOS 10.15上使用Docker遇到的几个问题
前文提到我最终在MacOS 10.15上安装了Docker Desktop 4.15.0,这里记录一下使用中遇到的几个问题。
拉取Docker镜像失败
执行docker build命令拉取镜像时收到如下错误
$ docker build -t getting-started .
Sending build context to Docker daemon 4.626MB
Step 1/5 : FROM node:19-alpine
Get "https://registry-1.docker.io/v2/": dialing registry-1.docker.io:443 static system has no HTTPS proxy: connecting to 74.86.12.172:443: dial tcp 74.86.12.172:443: i/o timeout
从报错来看问题是无法连接docker.io导致的,有几种解决方案
配置网络代理
能够科学上网的朋友可以通过配置能够访问docker.io的网络代理来解决问题。在Docker Desktop的设置里找到代理的设置,如下图
使用国内的docker镜像源
访问国内镜像源不会存在网络问题,我这里设置了几个无需注册就可以使用的镜像源。设置镜像源具体又分为两种方式
通过图形界面设置镜像源
在Docker Engine的配置里添加registry-mirrors节点即可,如下图。
修改完成后,无比点击"Apply & restart"重启Docker daemon确保更改后的配置生效。
通过配置文件设置镜像源
在MacOS中,可以直接修改用户home目录的.docker/daemon.json文件来添加镜像源。修改完成后的文件内容如下
$ cat ~/.docker/daemon.json
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"features": {
"buildkit": false
},
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://docker.m.daocloud.io/",
"https://docker.mirrors.ustc.edu.cn"
]
}
通过这种方式添加镜像源的朋友,需要主动重启Docker Daemon来让更改后的配置生效。通过Docker Desktop的菜单可以重启Docker Daemon,如下图。
failed to solve with frontend dockerfile.v0
从官方bug来看,问题可能是Buildkit的bug导致的。问题的解决方案也很直接,直接禁用buildkit即可。参考下图在图形界面把buildkit的值设置为false即可。