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即可。