Docker 20.10がリリースされたので試してみる話
これはDocker Advent Calendar 20209日目の記事です。
前回、Docker 20.10の新機能について記事を書きました。
Docker 20.10のリリースノートを眺める
それから2ヶ月弱経過しましたが、Docker 20.10がリリースされたようです。
英語で詳細にまとまった記事がこちらにありますので、合わせてご覧ください。
今回は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