Docker 20.10.0についてまとめる
はじめに
だいぶ前ですがDokcer 20.10.0
がリリースされています。かねてからやろうと思ってやってなかったのですが、リリースノートを眺めて、気になったところをかいつまんでまとめてみようと思います。
ものによっては動かしてみようかと。
やっていく
環境
$ uname -srvmpio Linux 5.4.0-70-generic #78-Ubuntu SMP Fri Mar 19 13:29:52 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux $ lsb_release -a LSB Version: core-11.1.0ubuntu2-noarch:security-11.1.0ubuntu2-noarch Distributor ID: Ubuntu Description: Ubuntu 20.04.2 LTS Release: 20.04 Codename: focal $ docker version Client: Docker Engine - Community Version: 20.10.5 API version: 1.41 Go version: go1.13.15 Git commit: 55c4c88 Built: Tue Mar 2 20:18:20 2021 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.5 API version: 1.41 (minimum version 1.12) Go version: go1.13.15 Git commit: 363e9a8 Built: Tue Mar 2 20:16:15 2021 OS/Arch: linux/amd64 Experimental: true containerd: Version: 1.4.4 GitCommit: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e runc: Version: 1.0.0-rc93 GitCommit: 12644e614e25b05da6fd08a38ffa0cfe1903fdec docker-init: Version: 0.19.0 GitCommit: de40ad0
今回、使用するDockerは20.10.5
ですが、20.10.0
の変更点のみをまとめていこうと思います。
API
GET /events
でprune
のイベントを取得できる
例えば、以下のようにcurl --unix-socket /var/run/docker.sock http:/v1.41/events
にアクセスした状態で、docker system prune
コマンドを実行すると、以下のようにイベントを取得することができます。
$ curl --unix-socket /var/run/docker.sock http:/v1.41/events {"status":"prune","Type":"container","Action":"prune","Actor":{"ID":"","Attributes":{"reclaimed":"0"}},"scope":"local","time":1618107008,"timeNano":1618107008756813704} {"Type":"network","Action":"prune","Actor":{"ID":"","Attributes":{"reclaimed":"0"}},"scope":"local","time":1618107008,"timeNano":1618107008758330171} {"status":"prune","Type":"image","Action":"prune","Actor":{"ID":"","Attributes":{"reclaimed":"0"}},"scope":"local","time":1618107008,"timeNano":1618107008798691967} {"Type":"builder","Action":"prune","Actor":{"ID":"","Attributes":{"reclaimed":"0"}},"scope":"local","time":1618107008,"timeNano":1618107008866211129}
このエンドポイントはcontainer
、network
、 volume
、 image
それぞれに対してreclaimed
(回収したバイト数)を取得することができます。
GET /info
に対する変更点
以下のような変更点があります。
- OSのVersionを取得できるようになった
- DefaultAddressPoolsを取得できるようになった
Builder
#syntax
なしで、RUN --mount
オプションを利用できるようになった
もともとBuildKitのRUN --mount
拡張機能を利用したい場合は``のようなコメント行をDockerfileの先頭に追加する必要がありましたが不要になりました。
ARG
がENV
のように複数の値を受け付けるように変更
ARG
コマンドは変数を定義してビルド時に--build-arg <varname>=<value>
のフラグを利用することによって引数を渡すことができます。このARG
コマンドが今回の変更でENV
と同じように複数定義を一行でできるように修正さています。
ADD
コマンドに--chown
パラメーター拡張を渡せるようになった
もともとADD
/COPY
コマンドでは--chown
フラグを指定できファイルオーナーを設定できますしかし、ADDコマンドではARG
やENV
で定義された変数からの指定ができないようになってました。しかし今回の修正でそれが行えるようになったようです。
Clientクライアントでは以下のような修正が行われています
- -a/--all-tagsフラグですべてのタグをpushできるようになった
- Kubernetesの
username/password
認証をサポート run
コマンドとcreate
コマンドに--pull=missing|always|never
フラグを追加docker exec
に--env-file
フラグがついかされ環境変数を渡せるようになったlog-driver
が追加されPrettyオプションが利用可能になった--cgroupns
フラグでネームスペースを指定できようになったdocker manifest rm
ローカルストレージのマニフェストリストドラフト(設定やレイヤーの情報を保持)を削除docker info
とdocker version
にコンテキストの情報を出力するように変更
Runtime
ランタイムでは以下のような修正が行われています。
- cgroup2のサポート
- cgroup2がデフォルトで
systemd
のcgroupを利用するようになった - 新しいストレージドライバ
fuse-overlayfs
- containerdのバイナリを1.4.3にアップデート
docker push
のデフォルトがすべてのタグのPushからlatest
に変更- イメージをPullする際のコネクションロスでリコネクトする回数を指定できるように変更
- コンテナスタートアップのために、最低のメモリリミットを6Mへ変更。
Networking
host.docker.internal
のLinuxでのサポート
最後の方力尽きましたが、すべての変更に関してはこちらをご確認ください