SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Docker 20.10
⽇本電信電話株式会社
ソフトウェアイノベーションセンタ
須⽥ 瑛⼤
Docker Meetup Tokyo #35 (2021/5/28)
1
Copyright 2021 NTT CORPORATION
⾃⼰紹介
• コンテナ関連OSSのメンテナ (コミッタ)
Moby (OSS版Docker), BuildKit, containerd, runc, Rootlessコンテナ関連など
• 書籍「Docker/Kubernetes 開発・運⽤の
ためのセキュリティ実践ガイド」執筆
https://www.amazon.co.jp/dp/4839970505
• その他 ⾊々 https://github.com/AkihiroSuda
2
Copyright 2021 NTT CORPORATION
Docker 20.10
• 2020年12⽉9⽇にリリース
• Docker 19.03 (2019年7⽉) 以来、約1年半ぶりのリリース
• RHEL8系のデフォルトの設定で動くようになった
• Fedoraのデフォルトの設定で動くようになった
• RootlessやBuildXなどがexperimentalから正式機能に昇格した
• Swarm Jobsに対応した
3
Copyright 2021 NTT CORPORATION
RHEL8系のデフォルトで動くようになった
• RHEL 8系OS (CentOS 8などを含む) のデフォルトでは、
Docker 19.03はうまく動かなかった
• コンテナ内からホスト名を解決できない docker/for-linux#957
• ポートを公開できない libnetwork#2496
• Dockerがfirewalldに対応していなかったのが原因
• Docker 20.10ではRHEL 8系のデフォルトで動くようになった
4
Copyright 2021 NTT CORPORATION
RHEL8系のデフォルトで動くようになった
• ただし、RHEL 8のRed Hat社 公式パッケージからは、Dockerは
削除されたまま
• Docker社からも、RHEL 8向けのパッケージは提供されていない
• CentOS 8向けには、Docker社 公式パッケージが提供されている
https://download.docker.com/linux/centos/8/x86_64/stable/Packages/
• CentOS 8とバイナリ互換の他のOSでも動くはず
(Alma Linux, Oracle Linux, Rocky Linux, VzLinux...)
5
Copyright 2021 NTT CORPORATION
Fedoraのデフォルトで動くようになった
• Fedora 31以降のデフォルトでは、Docker 19.03は動かなかった
• Dockerがcgroup v2に対応していなかったのが原因
• CPUやメモリなどのリソース制御に使われている、Linuxカーネルの機能の新
バージョン
• Docker 20.10ではFedoraのデフォルトで動くようになった
• 実装としては2019年から動いていたが、リリースにかなり時間がかかった
• 20.10.0ではexperimental扱い、20.10.6から正式扱い
6
Copyright 2021 NTT CORPORATION
Rootlessモードがexperimentalから正式に昇格
• ホストのroot権限を使わずにdockerdやコンテナを動かすこと
で、セキュリティを強化する技術
https://rootlesscontaine.rs/getting-started/docker/
• 2018年: POC実装
2019年: Docker 19.03 にて experimental としてマージ
2020年: Docker 20.10 にて 正式機能に昇格
7
Copyright 2021 NTT CORPORATION
Rootlessモードがexperimentalから正式に昇格
• CPUやメモリのリソースの制御 (docker run –-cpus, ---memory) に
対応した
• ホストが前述のcgroup v2に対応している必要がある
• aptやdnfでインストールできるようになった
• sudo apt-get install docker-ce-rootless-extras
› sudoが要るのは Dockerの制約ではなく apt-getやdnfの制約
• sudo無し、パッケージマネージャ無しでのインストールも従来通り可能
› https://get.docker.com/rootless
8
Copyright 2021 NTT CORPORATION
Swarm Jobs
• 最近名前を聞かないSwarmであるが、開発は続いている
• バッチジョブ型の”Job” serviceも動かせるようになった
• KubernetesのJobマニフェストに類似する
• 従来型の service は、KubernetesのDeploymentマニフェストや
DaemonSetに類似する
9
Copyright 2021 NTT CORPORATION
Swarm Jobs
• クラスタ内の全ノードのホストファイルシステムに、
/etc/some-file を作成する例
$ docker service create ¥
--name create-file-on-all-nodes ¥
--mode global-job ¥
--mount type=bind,src=/,dst=/mnt ¥
alpine ¥
sh -exc "echo foo > /mnt/etc/some-file"
10
Copyright 2021 NTT CORPORATION
Dockerfile: RUN --mount=type=…が正式機能に昇格
Docker 18.06 にて experimentalとして導⼊された機能
• RUN –-mount=type=cache
• apt、maven、npm などのパッケージマネージャや、コンパイラのキャッ
シュを保持できる機能
• RUN –-mount=type=secret (Docker 18.09から)
• SSHやS3などの認証情報を安全に扱える機能
• RUN –-mount=type=ssh (Docker 18.09から)
• 上記secretのSSH特化版 (パスフレーズ対応など)
など
11
Copyright 2021 NTT CORPORATION
Dockerfile: RUN --mount=type=…が正式機能に昇格
“Docker Platform Internals: containerd and BuildKit” (DockerCon 2018)
Michael Crosby and Tonis Tiigi, Docker https://t.co/aUKqQCVmXa
12
Copyright 2021 NTT CORPORATION
Dockerfile: RUN --mount=type=…が正式機能に昇格
• Docker 19.03まででは、BuildKitモードを有効化し、さらに
Dockerfileの先頭に次の⾏を書く必要があった
• Docker 20.10からは # syntax = … ⾏が不要になった
• BuildKitモードは依然として有効化しておく必要がある
• Docker for Mac/Winでは 2020年9⽉からデフォルトで有効
# syntax = docker/dockerfile:experimental
13
Copyright 2021 NTT CORPORATION
docker buildxが正式機能に昇格
• BuildKitモード (DOCKER_BUILDKIT=1) を更に拡張したモード
https://github.com/docker/buildx
• マルチプラットフォームイメージのビルドや、Kubernetesを使っ
た分散ビルドなど、docker build ではできない先進的な機能が備
わっている
• docker-ce-cli パッケージに正式機能として含まれるようになった
14
Copyright 2021 NTT CORPORATION
docker buildxが正式機能に昇格
• リモートのARMマシンを使ってマルチプラットフォームイメージ
をビルドする例
• リモートのARMマシンを使わず、QEMUでエミュレートするモードもある
$ docker buildx create --name remote --use
$ docker buildx create --name remote ¥
--append ssh://me@my-arm-instance
$ docker buildx build ¥
--push -t example.com/hello:latest ¥
--platform=linux/amd64,linux/arm64 .
15
Copyright 2021 NTT CORPORATION
docker buildxが正式機能に昇格
• Kubernetesクラスタを使って分散ビルドする例
• 複数のDockerfileを同時にビルドすると負荷が分散される
$ docker buildx create ¥
--driver kubernetes ¥
--driver-opt replicas=3 ¥
--use
$ docker buildx build ¥
--push -t example.com/hello:latest
16
Copyright 2021 NTT CORPORATION
Dockerfile: COPY –-chmod、ADD --chmod
• COPY --chown、ADD --chown は Docker 17.09から存在
• コンテナを⾮rootユーザで動かすときに便利
• Docker 20.10にて、COPY --chmod、ADD --chmod にも対応
• 以前のバージョンでも、COPYしてからRUN chmodすることは
できたが、イメージの容量が膨らむ問題があった
17
Copyright 2021 NTT CORPORATION
docker run --pull=(always|missing|never)
• KubernetesのimagePullPolicyに似た機能
• 確実に最新のイメージを動かしたいとき、pullしてからrunする
⼿間を省ける (docker run --pull=always)
18
Copyright 2021 NTT CORPORATION
Docker 21.XX に⼊りそうなpull requests
• Swarm cluster volumes moby#42404
• Kubernetesと同じくCSI (Container Storage Interface) を使う
• libnetworkのリポジトリがMoby (dockerd) のリポジトリに統
合される moby#42262
• コントリビュートしやすくなるはず
• Dockerfileでheredocが使えるようになる
buildkit#2132
• <<EOF みたいなやつのこと
• 複数⾏にまたがる命令を書きやすくなる
RUN <<EOF
apt-get update
apt-get install foo
foo ...
EOF
19
Copyright 2021 NTT CORPORATION
Docker 20.10 まとめ
• RHEL8系のデフォルトの設定で動くようになった
• Fedoraのデフォルトの設定で動くようになった
• RootlessやBuildXなどがexperimentalから正式機能に昇格した
• Swarm Jobsに対応した
• その他、細かい情報はnttlabsブログにまとめました
https://medium.com/nttlabs/docker-20-10-59cc4bd59d37

Más contenido relacionado

La actualidad más candente

[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User NamespacesAkihiro Suda
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
DockerをRed Hatはどのように見ているのか
DockerをRed Hatはどのように見ているのかDockerをRed Hatはどのように見ているのか
DockerをRed Hatはどのように見ているのかEmma Haruka Iwao
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
RootlessコンテナAkihiro Suda
 
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4Emma Haruka Iwao
 
Introduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing DockerfilesIntroduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing DockerfilesYukiya Hayashi
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Masahito Zembutsu
 
CRX: Container Runtime Executive 
CRX: Container Runtime Executive CRX: Container Runtime Executive 
CRX: Container Runtime Executive imurata8203
 
Dockerについて
DockerについてDockerについて
Dockerについて74th
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪Kunihiro TANAKA
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月VirtualTech Japan Inc.
 
CAMPHOR- day 2020 - Docker 超入門
CAMPHOR- day 2020 - Docker 超入門CAMPHOR- day 2020 - Docker 超入門
CAMPHOR- day 2020 - Docker 超入門KokiMakita1
 
清貧Docker ~個人がDockerを使う理由~
清貧Docker ~個人がDockerを使う理由~清貧Docker ~個人がDockerを使う理由~
清貧Docker ~個人がDockerを使う理由~harupong
 
日本と世界のDockerコミュニティ
日本と世界のDockerコミュニティ日本と世界のDockerコミュニティ
日本と世界のDockerコミュニティAkihiro Suda
 
【さくらのクラウド】Jupyter Notebook スタートアップスクリプト
【さくらのクラウド】Jupyter Notebook スタートアップスクリプト【さくらのクラウド】Jupyter Notebook スタートアップスクリプト
【さくらのクラウド】Jupyter Notebook スタートアップスクリプトさくらインターネット株式会社
 
【社内勉強会】Docker入門
【社内勉強会】Docker入門【社内勉強会】Docker入門
【社内勉強会】Docker入門Kazuki Murahama
 
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSnpsg
 

La actualidad más candente (20)

[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
DockerをRed Hatはどのように見ているのか
DockerをRed Hatはどのように見ているのかDockerをRed Hatはどのように見ているのか
DockerをRed Hatはどのように見ているのか
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
Rootlessコンテナ
 
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
 
Introduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing DockerfilesIntroduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing Dockerfiles
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 
CRX: Container Runtime Executive 
CRX: Container Runtime Executive CRX: Container Runtime Executive 
CRX: Container Runtime Executive 
 
Dockerについて
DockerについてDockerについて
Dockerについて
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
 
Docker超入門
Docker超入門Docker超入門
Docker超入門
 
CAMPHOR- day 2020 - Docker 超入門
CAMPHOR- day 2020 - Docker 超入門CAMPHOR- day 2020 - Docker 超入門
CAMPHOR- day 2020 - Docker 超入門
 
清貧Docker ~個人がDockerを使う理由~
清貧Docker ~個人がDockerを使う理由~清貧Docker ~個人がDockerを使う理由~
清貧Docker ~個人がDockerを使う理由~
 
日本と世界のDockerコミュニティ
日本と世界のDockerコミュニティ日本と世界のDockerコミュニティ
日本と世界のDockerコミュニティ
 
【さくらのクラウド】Jupyter Notebook スタートアップスクリプト
【さくらのクラウド】Jupyter Notebook スタートアップスクリプト【さくらのクラウド】Jupyter Notebook スタートアップスクリプト
【さくらのクラウド】Jupyter Notebook スタートアップスクリプト
 
【社内勉強会】Docker入門
【社内勉強会】Docker入門【社内勉強会】Docker入門
【社内勉強会】Docker入門
 
Docker超入門
Docker超入門Docker超入門
Docker超入門
 
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaS
 

Similar a [Docker Tokyo #35] Docker 20.10

remote Docker over SSHが熱い
remote Docker over SSHが熱いremote Docker over SSHが熱い
remote Docker over SSHが熱いHiroyuki Ohnaka
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 
JapaneseBertOnDocker.pptx
JapaneseBertOnDocker.pptxJapaneseBertOnDocker.pptx
JapaneseBertOnDocker.pptxYushi Oka
 
Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519虎の穴 開発室
 
Webアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオンWebアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオン虎の穴 開発室
 
Dockerを徹底活用したSoftLayer環境にお けるディープラーニング開発環境の構築 - Alpaca Cloud Days発表資料
Dockerを徹底活用したSoftLayer環境にお けるディープラーニング開発環境の構築 - Alpaca Cloud Days発表資料Dockerを徹底活用したSoftLayer環境にお けるディープラーニング開発環境の構築 - Alpaca Cloud Days発表資料
Dockerを徹底活用したSoftLayer環境にお けるディープラーニング開発環境の構築 - Alpaca Cloud Days発表資料Tomoya Kitayama
 
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門Toru Miyahara
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-Saki Homma
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Masahiro Nagano
 
Play with DockerでDocker学習環境を整えよう!
Play with DockerでDocker学習環境を整えよう!Play with DockerでDocker学習環境を整えよう!
Play with DockerでDocker学習環境を整えよう!Hori Tasuku
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)NTT DATA Technology & Innovation
 
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Masahito Zembutsu
 
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)NTT DATA Technology & Innovation
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Yuichi Ito
 
Play framework+docker+aws ecr+aws beanstalk で楽々デプロイ
Play framework+docker+aws ecr+aws beanstalk で楽々デプロイPlay framework+docker+aws ecr+aws beanstalk で楽々デプロイ
Play framework+docker+aws ecr+aws beanstalk で楽々デプロイYoshiteru Takeshita
 
今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOFVirtualTech Japan Inc.
 
Dockerの基本的な話
Dockerの基本的な話Dockerの基本的な話
Dockerの基本的な話gree_tech
 
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と DockerのキホンNaoki Nagazumi
 

Similar a [Docker Tokyo #35] Docker 20.10 (20)

remote Docker over SSHが熱い
remote Docker over SSHが熱いremote Docker over SSHが熱い
remote Docker over SSHが熱い
 
Docker Chronicle 2021.09
Docker Chronicle  2021.09Docker Chronicle  2021.09
Docker Chronicle 2021.09
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
JapaneseBertOnDocker.pptx
JapaneseBertOnDocker.pptxJapaneseBertOnDocker.pptx
JapaneseBertOnDocker.pptx
 
Docker Tokyo
Docker TokyoDocker Tokyo
Docker Tokyo
 
Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519
 
Webアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオンWebアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオン
 
Dockerを徹底活用したSoftLayer環境にお けるディープラーニング開発環境の構築 - Alpaca Cloud Days発表資料
Dockerを徹底活用したSoftLayer環境にお けるディープラーニング開発環境の構築 - Alpaca Cloud Days発表資料Dockerを徹底活用したSoftLayer環境にお けるディープラーニング開発環境の構築 - Alpaca Cloud Days発表資料
Dockerを徹底活用したSoftLayer環境にお けるディープラーニング開発環境の構築 - Alpaca Cloud Days発表資料
 
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
Play with DockerでDocker学習環境を整えよう!
Play with DockerでDocker学習環境を整えよう!Play with DockerでDocker学習環境を整えよう!
Play with DockerでDocker学習環境を整えよう!
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
 
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
 
Play framework+docker+aws ecr+aws beanstalk で楽々デプロイ
Play framework+docker+aws ecr+aws beanstalk で楽々デプロイPlay framework+docker+aws ecr+aws beanstalk で楽々デプロイ
Play framework+docker+aws ecr+aws beanstalk で楽々デプロイ
 
今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF
 
Dockerの基本的な話
Dockerの基本的な話Dockerの基本的な話
Dockerの基本的な話
 
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
 

Más de Akihiro Suda

20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
20240321 [KubeCon EU Pavilion] Lima.pdf_
20240321 [KubeCon EU Pavilion] Lima.pdf_20240321 [KubeCon EU Pavilion] Lima.pdf_
20240321 [KubeCon EU Pavilion] Lima.pdf_Akihiro Suda
 
20240320 [KubeCon EU Pavilion] containerd.pdf
20240320 [KubeCon EU Pavilion] containerd.pdf20240320 [KubeCon EU Pavilion] containerd.pdf
20240320 [KubeCon EU Pavilion] containerd.pdfAkihiro Suda
 
20240201 [HPC Containers] Rootless Containers.pdf
20240201 [HPC Containers] Rootless Containers.pdf20240201 [HPC Containers] Rootless Containers.pdf
20240201 [HPC Containers] Rootless Containers.pdfAkihiro Suda
 
[Podman Special Event] Kubernetes in Rootless Podman
[Podman Special Event] Kubernetes in Rootless Podman[Podman Special Event] Kubernetes in Rootless Podman
[Podman Special Event] Kubernetes in Rootless PodmanAkihiro Suda
 
[KubeConNA2023] Lima pavilion
[KubeConNA2023] Lima pavilion[KubeConNA2023] Lima pavilion
[KubeConNA2023] Lima pavilionAkihiro Suda
 
[KubeConNA2023] containerd pavilion
[KubeConNA2023] containerd pavilion[KubeConNA2023] containerd pavilion
[KubeConNA2023] containerd pavilionAkihiro Suda
 
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdfAkihiro Suda
 
[CNCF TAG-Runtime] Usernetes Gen2
[CNCF TAG-Runtime] Usernetes Gen2[CNCF TAG-Runtime] Usernetes Gen2
[CNCF TAG-Runtime] Usernetes Gen2Akihiro Suda
 
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...Akihiro Suda
 
The internals and the latest trends of container runtimes
The internals and the latest trends of container runtimesThe internals and the latest trends of container runtimes
The internals and the latest trends of container runtimesAkihiro Suda
 
[KubeConEU2023] Lima pavilion
[KubeConEU2023] Lima pavilion[KubeConEU2023] Lima pavilion
[KubeConEU2023] Lima pavilionAkihiro Suda
 
[KubeConEU2023] containerd pavilion
[KubeConEU2023] containerd pavilion[KubeConEU2023] containerd pavilion
[KubeConEU2023] containerd pavilionAkihiro Suda
 
[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?Akihiro Suda
 
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
[FOSDEM2023] Bit-for-bit reproducible builds with DockerfileAkihiro Suda
 
[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] Lima[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] LimaAkihiro Suda
 
[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOSAkihiro Suda
 
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...Akihiro Suda
 
[KubeCon EU 2021] Introduction and Deep Dive Into Containerd
[KubeCon EU 2021] Introduction and Deep Dive Into Containerd[KubeCon EU 2021] Introduction and Deep Dive Into Containerd
[KubeCon EU 2021] Introduction and Deep Dive Into ContainerdAkihiro Suda
 
[KubeCon NA 2020] containerd: Rootless Containers 2020
[KubeCon NA 2020] containerd: Rootless Containers 2020[KubeCon NA 2020] containerd: Rootless Containers 2020
[KubeCon NA 2020] containerd: Rootless Containers 2020Akihiro Suda
 

Más de Akihiro Suda (20)

20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
20240321 [KubeCon EU Pavilion] Lima.pdf_
20240321 [KubeCon EU Pavilion] Lima.pdf_20240321 [KubeCon EU Pavilion] Lima.pdf_
20240321 [KubeCon EU Pavilion] Lima.pdf_
 
20240320 [KubeCon EU Pavilion] containerd.pdf
20240320 [KubeCon EU Pavilion] containerd.pdf20240320 [KubeCon EU Pavilion] containerd.pdf
20240320 [KubeCon EU Pavilion] containerd.pdf
 
20240201 [HPC Containers] Rootless Containers.pdf
20240201 [HPC Containers] Rootless Containers.pdf20240201 [HPC Containers] Rootless Containers.pdf
20240201 [HPC Containers] Rootless Containers.pdf
 
[Podman Special Event] Kubernetes in Rootless Podman
[Podman Special Event] Kubernetes in Rootless Podman[Podman Special Event] Kubernetes in Rootless Podman
[Podman Special Event] Kubernetes in Rootless Podman
 
[KubeConNA2023] Lima pavilion
[KubeConNA2023] Lima pavilion[KubeConNA2023] Lima pavilion
[KubeConNA2023] Lima pavilion
 
[KubeConNA2023] containerd pavilion
[KubeConNA2023] containerd pavilion[KubeConNA2023] containerd pavilion
[KubeConNA2023] containerd pavilion
 
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
 
[CNCF TAG-Runtime] Usernetes Gen2
[CNCF TAG-Runtime] Usernetes Gen2[CNCF TAG-Runtime] Usernetes Gen2
[CNCF TAG-Runtime] Usernetes Gen2
 
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
 
The internals and the latest trends of container runtimes
The internals and the latest trends of container runtimesThe internals and the latest trends of container runtimes
The internals and the latest trends of container runtimes
 
[KubeConEU2023] Lima pavilion
[KubeConEU2023] Lima pavilion[KubeConEU2023] Lima pavilion
[KubeConEU2023] Lima pavilion
 
[KubeConEU2023] containerd pavilion
[KubeConEU2023] containerd pavilion[KubeConEU2023] containerd pavilion
[KubeConEU2023] containerd pavilion
 
[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?
 
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
 
[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] Lima[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] Lima
 
[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS
 
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
 
[KubeCon EU 2021] Introduction and Deep Dive Into Containerd
[KubeCon EU 2021] Introduction and Deep Dive Into Containerd[KubeCon EU 2021] Introduction and Deep Dive Into Containerd
[KubeCon EU 2021] Introduction and Deep Dive Into Containerd
 
[KubeCon NA 2020] containerd: Rootless Containers 2020
[KubeCon NA 2020] containerd: Rootless Containers 2020[KubeCon NA 2020] containerd: Rootless Containers 2020
[KubeCon NA 2020] containerd: Rootless Containers 2020
 

[Docker Tokyo #35] Docker 20.10

  • 2. 1 Copyright 2021 NTT CORPORATION ⾃⼰紹介 • コンテナ関連OSSのメンテナ (コミッタ) Moby (OSS版Docker), BuildKit, containerd, runc, Rootlessコンテナ関連など • 書籍「Docker/Kubernetes 開発・運⽤の ためのセキュリティ実践ガイド」執筆 https://www.amazon.co.jp/dp/4839970505 • その他 ⾊々 https://github.com/AkihiroSuda
  • 3. 2 Copyright 2021 NTT CORPORATION Docker 20.10 • 2020年12⽉9⽇にリリース • Docker 19.03 (2019年7⽉) 以来、約1年半ぶりのリリース • RHEL8系のデフォルトの設定で動くようになった • Fedoraのデフォルトの設定で動くようになった • RootlessやBuildXなどがexperimentalから正式機能に昇格した • Swarm Jobsに対応した
  • 4. 3 Copyright 2021 NTT CORPORATION RHEL8系のデフォルトで動くようになった • RHEL 8系OS (CentOS 8などを含む) のデフォルトでは、 Docker 19.03はうまく動かなかった • コンテナ内からホスト名を解決できない docker/for-linux#957 • ポートを公開できない libnetwork#2496 • Dockerがfirewalldに対応していなかったのが原因 • Docker 20.10ではRHEL 8系のデフォルトで動くようになった
  • 5. 4 Copyright 2021 NTT CORPORATION RHEL8系のデフォルトで動くようになった • ただし、RHEL 8のRed Hat社 公式パッケージからは、Dockerは 削除されたまま • Docker社からも、RHEL 8向けのパッケージは提供されていない • CentOS 8向けには、Docker社 公式パッケージが提供されている https://download.docker.com/linux/centos/8/x86_64/stable/Packages/ • CentOS 8とバイナリ互換の他のOSでも動くはず (Alma Linux, Oracle Linux, Rocky Linux, VzLinux...)
  • 6. 5 Copyright 2021 NTT CORPORATION Fedoraのデフォルトで動くようになった • Fedora 31以降のデフォルトでは、Docker 19.03は動かなかった • Dockerがcgroup v2に対応していなかったのが原因 • CPUやメモリなどのリソース制御に使われている、Linuxカーネルの機能の新 バージョン • Docker 20.10ではFedoraのデフォルトで動くようになった • 実装としては2019年から動いていたが、リリースにかなり時間がかかった • 20.10.0ではexperimental扱い、20.10.6から正式扱い
  • 7. 6 Copyright 2021 NTT CORPORATION Rootlessモードがexperimentalから正式に昇格 • ホストのroot権限を使わずにdockerdやコンテナを動かすこと で、セキュリティを強化する技術 https://rootlesscontaine.rs/getting-started/docker/ • 2018年: POC実装 2019年: Docker 19.03 にて experimental としてマージ 2020年: Docker 20.10 にて 正式機能に昇格
  • 8. 7 Copyright 2021 NTT CORPORATION Rootlessモードがexperimentalから正式に昇格 • CPUやメモリのリソースの制御 (docker run –-cpus, ---memory) に 対応した • ホストが前述のcgroup v2に対応している必要がある • aptやdnfでインストールできるようになった • sudo apt-get install docker-ce-rootless-extras › sudoが要るのは Dockerの制約ではなく apt-getやdnfの制約 • sudo無し、パッケージマネージャ無しでのインストールも従来通り可能 › https://get.docker.com/rootless
  • 9. 8 Copyright 2021 NTT CORPORATION Swarm Jobs • 最近名前を聞かないSwarmであるが、開発は続いている • バッチジョブ型の”Job” serviceも動かせるようになった • KubernetesのJobマニフェストに類似する • 従来型の service は、KubernetesのDeploymentマニフェストや DaemonSetに類似する
  • 10. 9 Copyright 2021 NTT CORPORATION Swarm Jobs • クラスタ内の全ノードのホストファイルシステムに、 /etc/some-file を作成する例 $ docker service create ¥ --name create-file-on-all-nodes ¥ --mode global-job ¥ --mount type=bind,src=/,dst=/mnt ¥ alpine ¥ sh -exc "echo foo > /mnt/etc/some-file"
  • 11. 10 Copyright 2021 NTT CORPORATION Dockerfile: RUN --mount=type=…が正式機能に昇格 Docker 18.06 にて experimentalとして導⼊された機能 • RUN –-mount=type=cache • apt、maven、npm などのパッケージマネージャや、コンパイラのキャッ シュを保持できる機能 • RUN –-mount=type=secret (Docker 18.09から) • SSHやS3などの認証情報を安全に扱える機能 • RUN –-mount=type=ssh (Docker 18.09から) • 上記secretのSSH特化版 (パスフレーズ対応など) など
  • 12. 11 Copyright 2021 NTT CORPORATION Dockerfile: RUN --mount=type=…が正式機能に昇格 “Docker Platform Internals: containerd and BuildKit” (DockerCon 2018) Michael Crosby and Tonis Tiigi, Docker https://t.co/aUKqQCVmXa
  • 13. 12 Copyright 2021 NTT CORPORATION Dockerfile: RUN --mount=type=…が正式機能に昇格 • Docker 19.03まででは、BuildKitモードを有効化し、さらに Dockerfileの先頭に次の⾏を書く必要があった • Docker 20.10からは # syntax = … ⾏が不要になった • BuildKitモードは依然として有効化しておく必要がある • Docker for Mac/Winでは 2020年9⽉からデフォルトで有効 # syntax = docker/dockerfile:experimental
  • 14. 13 Copyright 2021 NTT CORPORATION docker buildxが正式機能に昇格 • BuildKitモード (DOCKER_BUILDKIT=1) を更に拡張したモード https://github.com/docker/buildx • マルチプラットフォームイメージのビルドや、Kubernetesを使っ た分散ビルドなど、docker build ではできない先進的な機能が備 わっている • docker-ce-cli パッケージに正式機能として含まれるようになった
  • 15. 14 Copyright 2021 NTT CORPORATION docker buildxが正式機能に昇格 • リモートのARMマシンを使ってマルチプラットフォームイメージ をビルドする例 • リモートのARMマシンを使わず、QEMUでエミュレートするモードもある $ docker buildx create --name remote --use $ docker buildx create --name remote ¥ --append ssh://me@my-arm-instance $ docker buildx build ¥ --push -t example.com/hello:latest ¥ --platform=linux/amd64,linux/arm64 .
  • 16. 15 Copyright 2021 NTT CORPORATION docker buildxが正式機能に昇格 • Kubernetesクラスタを使って分散ビルドする例 • 複数のDockerfileを同時にビルドすると負荷が分散される $ docker buildx create ¥ --driver kubernetes ¥ --driver-opt replicas=3 ¥ --use $ docker buildx build ¥ --push -t example.com/hello:latest
  • 17. 16 Copyright 2021 NTT CORPORATION Dockerfile: COPY –-chmod、ADD --chmod • COPY --chown、ADD --chown は Docker 17.09から存在 • コンテナを⾮rootユーザで動かすときに便利 • Docker 20.10にて、COPY --chmod、ADD --chmod にも対応 • 以前のバージョンでも、COPYしてからRUN chmodすることは できたが、イメージの容量が膨らむ問題があった
  • 18. 17 Copyright 2021 NTT CORPORATION docker run --pull=(always|missing|never) • KubernetesのimagePullPolicyに似た機能 • 確実に最新のイメージを動かしたいとき、pullしてからrunする ⼿間を省ける (docker run --pull=always)
  • 19. 18 Copyright 2021 NTT CORPORATION Docker 21.XX に⼊りそうなpull requests • Swarm cluster volumes moby#42404 • Kubernetesと同じくCSI (Container Storage Interface) を使う • libnetworkのリポジトリがMoby (dockerd) のリポジトリに統 合される moby#42262 • コントリビュートしやすくなるはず • Dockerfileでheredocが使えるようになる buildkit#2132 • <<EOF みたいなやつのこと • 複数⾏にまたがる命令を書きやすくなる RUN <<EOF apt-get update apt-get install foo foo ... EOF
  • 20. 19 Copyright 2021 NTT CORPORATION Docker 20.10 まとめ • RHEL8系のデフォルトの設定で動くようになった • Fedoraのデフォルトの設定で動くようになった • RootlessやBuildXなどがexperimentalから正式機能に昇格した • Swarm Jobsに対応した • その他、細かい情報はnttlabsブログにまとめました https://medium.com/nttlabs/docker-20-10-59cc4bd59d37