Docker Desktop3.0.0でビルド出来ない?!

3 min読了の目安(約2700字TECH技術記事

このような症状でお困りの方に

マシンを新調し、せっかくだからDocker desktopも最新の3.0.0を導入するか!
ということで、導入したはよいが、なぜか何をビルドしても以下のようなエラーが出て困った..
という方向けの記事です。

C:\Users\hoge\getting-started>docker build -t docker101tutorial .
[+] Building 12.6s (8/8) FINISHED
 => [internal] load build definition from Dockerfile                      0.0s
 => => transferring dockerfile: 1.35kB                                    0.0s
 => [internal] load .dockerignore                                         0.0s
 => => transferring context: 34B                                          0.0s
 => ERROR [internal] load metadata for docker.io/library/nginx:alpine    12.5s
 => ERROR [internal] load metadata for docker.io/library/node:12-alpine  12.5s
 => ERROR [internal] load metadata for docker.io/library/python:alpine   12.5s
 => [auth] library/nginx:pull token for registry-1.docker.io              0.0s
 => [auth] library/node:pull token for registry-1.docker.io               0.0s
 => [auth] library/python:pull token for registry-1.docker.io             0.0s
------
 > [internal] load metadata for docker.io/library/nginx:alpine:
------
------
 > [internal] load metadata for docker.io/library/node:12-alpine:
------
------
 > [internal] load metadata for docker.io/library/python:alpine:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to authorize: rpc error: code = Unknown desc = failed to fetch oauth token: Get https://auth.docker.io/token?scope=repository%3Alibrary%2Fnginx%3Apull&service=registry.docker.io: dial tcp: lookup auth.docker.io: getaddrinfow: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server.

発生する環境

  • Docker Desktop: 3.0.0
  • 社内LANからproxy経由でイメージをPULLしている
  • Docker Engine の buildkit を true にしている ← 新規インストールの場合、自動で設定される

proxy設定
proxy設定

Engine
Engine設定

解消方法

以下2つの方法を紹介します。

1. docker.io を insecure-registries に追加

Docker Engine 設定画面にてinsecure-registriesにdocker.ioを設定します。

{
  "registry-mirrors": [],
  "insecure-registries": ["docker.io"],
  "debug": false,
  "experimental": false,
  "features": {
    "buildkit": true
  }
}

2. buildkit を false に設定

Docker Engine 設定画面にてbuildkitをfalseに設定します。

{
  "registry-mirrors": [],
  "insecure-registries": [],
  "debug": false,
  "experimental": false,
  "features": {
    "buildkit": false
  }
}

さいごに

社内LANでdocker使うのは結構大変です。
自宅環境だと苦もなくbuild出来ていたものが、全く通らないとか。
いろいろ手を尽くしてみるが最終的には諦めて、テザリングや自分のdockerhubアカウントに一時的にpushしたイメージをpullしたりします。

この記事が皆さんのお役に立てれば嬉しいです。
また、他にもっとよい方法があればアドバイスください。