🗂

Docker 20.10がリリースされたので試してみる話

2020/12/09に公開

これはDocker Advent Calendar 20209日目の記事です。

前回、Docker 20.10の新機能について記事を書きました。
Docker 20.10のリリースノートを眺める

それから2ヶ月弱経過しましたが、Docker 20.10がリリースされたようです。

英語で詳細にまとまった記事がこちらにありますので、合わせてご覧ください。
https://medium.com/nttlabs/docker-20-10-59cc4bd59d37

今回はFedora 33に入れて動かしてみたいと思います。

$ cat /etc/redhat-release
Fedora release 33 (Thirty Three)
$ curl -fsSL https://get.docker.com/ | sh
# Executing docker install script, commit: 3d8fe77c2c46c5b7571f94b42793905e5b3e42e4
+ sh -c 'dnf install -y -q dnf-plugins-core'
+ sh -c 'dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo'
Adding repo from: https://download.docker.com/linux/fedora/docker-ce.repo
+ '[' stable '!=' stable ']'
+ sh -c 'dnf makecache'
Docker CE Stable - x86_64                                                                99 kB/s | 4.9 kB     00:00
Fedora 33 openh264 (From Cisco) - x86_64                                                955  B/s | 989  B     00:01
Fedora Modular 33 - x86_64                                                              8.0 kB/s | 6.4 kB     00:00
Fedora Modular 33 - x86_64 - Updates                                                    7.9 kB/s | 6.3 kB     00:00
Fedora 33 - x86_64 - Updates                                                            4.6 kB/s | 4.6 kB     00:00
Fedora 33 - x86_64 - Updates                                                            275 kB/s | 461 kB     00:01
Fedora 33 - x86_64                                                                      7.9 kB/s | 6.5 kB     00:00
Metadata cache created.
+ '[' -n '' ']'
+ sh -c 'dnf install -y -q docker-ce'
warning: /var/cache/dnf/docker-ce-stable-ce8c657c263a7868/packages/containerd.io-1.4.3-3.1.fc33.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY
Importing GPG key 0x621E9F35:
 Userid     : "Docker Release (CE rpm) <docker@docker.com>"
 Fingerprint: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
 From       : https://download.docker.com/linux/fedora/gpg
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

  sudo usermod -aG docker your-user

Remember that you will have to log out and back in for this to take effect!

WARNING: Adding a user to the "docker" group will grant the ability to run
         containers which can be used to obtain root privileges on the
         docker host.
         Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
         for more information.

Dockerが入りました。

$ docker version
Client: Docker Engine - Community
 Version:           20.10.0
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        7287ab3
 Built:             Tue Dec  8 19:00:39 2020
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.0
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       eeddea2
  Built:            Tue Dec  8 18:58:12 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.3
  GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc:
  Version:          1.0.0-rc92
  GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

containerdが1.4.3に上がっているのと、runcが1.0.0-rc92に上がっていました。

host.docker.internal を使ってみる

個人的に気になってたLinux上でも host.docker.internal が使えるようになったやつを試してみました。

現状はコンテナ起動時にadd-hostのオプションが必要です。

$ docker run -it --add-host=host.docker.internal:host-gateway
# apt update && apt install iputils-ping -y
# ping host.docker.internal
PING host.docker.internal (172.17.0.1) 56(84) bytes of data.
64 bytes from host.docker.internal (172.17.0.1): icmp_seq=1 ttl=64 time=0.066 ms
64 bytes from host.docker.internal (172.17.0.1): icmp_seq=2 ttl=64 time=0.064 ms
64 bytes from host.docker.internal (172.17.0.1): icmp_seq=3 ttl=64 time=0.080 ms

ちゃんとホストに接続できているっぽい。

次はbuildx周りの動きを確かめてみます。

GrowiのDockerfileが新しい記法で書かれてるっぽいので試してみる。experimentalのフラッグを消しておく。

Ref. https://github.com/weseek/growi/blob/master/docker/Dockerfile

-# syntax = docker/dockerfile:experimental

ARG flavor=default

$ git clone https://github.com/weseek/growi.git && cd growi
$ docker buildx build --file ./docker/Dockerfile .
WARN[0000] invalid non-bool value for BUILDX_NO_DEFAULT_LOAD:
[+] Building 16.1s (16/32)
 => => extracting sha256:9b921803d598f1331175a7fde4fa93cf1a814c3f007055ed499a64bc0cda7c47                                                                                              0.3s
 => [internal] load metadata for docker.io/library/node:14-alpine                                                                                                                      3.4s
 => [internal] load metadata for docker.io/library/node:14-slim                                                                                                                        3.5s
 => [deps-resolver 1/8] FROM docker.io/library/node:14-slim@sha256:8e8fe9db471bf84c19f55b0b842320edf1c8f35e03416727f814d50f55bd13f3                                                    4.7s
 => => resolve docker.io/library/node:14-slim@sha256:8e8fe9db471bf84c19f55b0b842320edf1c8f35e03416727f814d50f55bd13f3                                                                  0.0s
 => => sha256:8e8fe9db471bf84c19f55b0b842320edf1c8f35e03416727f814d50f55bd13f3 776B / 776B                                                                                             0.0s
 => => sha256:48619db9da7dfd7f22a13aee46e2c1336b56fadf6eb53fa17a50b341befc9b63 1.37kB / 1.37kB                                                                                         0.0s
 => => sha256:b361b0e6694e7e5c57a9c33b4c67ca6be8441c3d009102fbe886953d68e15285 7.09kB / 7.09kB                                                                                         0.0s
 => => sha256:4297e02295585beb3f148a5740b644ce87e059455f8d98a5adb7bf95105e011c 22.53MB / 22.53MB                                                                                       1.0s
 => => sha256:f75ab7205508cf2e0ea5af53fc3b581ee51128cea912048925f97a4c9ae2eeb1 4.15kB / 4.15kB                                                                                         0.9s
 => => sha256:fd483bc31a42fe31017f25529c920bfd2bcb18473e64d846c1425d2c6e82dfea 35.31MB / 35.31MB                                                                                       1.6s
 => => sha256:5611f0b964d834bba124edab86151760d492aa2d7b8b2586c85ba6e220e85889 2.81MB / 2.81MB                                                                                         1.2s
....
 => [builder 1/5] WORKDIR /opt/growi                                                                                                                                                                                                                                     0.0s
 => [builder 2/5] RUN yarn build:prod                                                                                                                                                                                                                                   68.2s

ARG flavor=default
 => [builder 3/5] WORKDIR /tmp                                                                                                                                                                                                                                           0.0s
 => [builder 4/5] RUN --mount=target=. sh docker/bin/remove-except-artifacts.sh                                                                                                                                                                                          5.3s
 => [builder 5/5] WORKDIR /opt/growi                                                                                                                                                                                                                                     0.0s
 => [stage-5 6/7] COPY --from=builder --chown=node:node   /opt/growi /opt/growi                                                                                                                                                                                          0.2s
 => [stage-5 7/7] WORKDIR /opt/growi                                                                                                                                                                                                                                     0.0s
 => exporting to image                                                                                                                                                                                                                                                   3.8s
 => => exporting layers                                                                                                                                                                                                                                                  3.8s
 => => writing image sha256:3a0e3c61327a117045b5dd765d7de1e33a59389d475e69eacc2297b2845495c0                                                                                                                                                                             0.0s

experimental消しても動いたから多分新しい記法でいけてるってことっぽいですね

あとついでに気づいたんですがbuildxがプラグインじゃなくて組み込みで直接使えるようになってますね。これは便利だ。

脆弱性スキャナ

$ docker scan ubuntu:20.04

これは現状Linux版では使えないらしく断念。だけどWindows/Mac版では使えるらしいっすよ。よさそう。

snykをバックエンドに使っているそうです。

まとめ

というわけでCentOS 8 / FedoraでDocker使いたい人には嬉しい20.10のアップデートでしたが、他にもなにげに嬉しい機能が盛り込まれているのが確認できました。

Discussion