SlideShare a Scribd company logo
1 of 15
Download to read offline
Docker 9tips
意外と知られていない日常で役立つ便利技
Sakura Internet, Inc.
Masahito Zembutsu @zembutsu
ゼロからはじめるDocker入門【ビヨンド勉強会#22】 #bydstudy
Jan 29, 2020
今日は日常作業で役立つ「 9 tips」をご紹介(デモ)
• Docker の簡単なセットアップ
• コンテナ ID を使った操作
• コンテナ ID と変数展開
• コンテナが使っている容量の表示
• コンテナとイメージ等が使用している容量の表示
• 不要なコンテナ等の一括削除
• それでも消えないファイルをまとめて消したい場合
• BuildKit 有効化でイメージ構築を高速に
• Docker Compose で BuildKit を有効化
2
本当に便利なのに、意外と知られていない?
Docker の簡単なセットアップ
• 「get.docker.com」 を覚えておく!
3まずはじめは Docker のインストール方法。「get.docker.com」を覚えておくだけです!
4
サイトのドキュメント・ルート自身がシェルスクリプト!
「curl https://get.docker.com | head」を実行したら、
CentOS 7、Ubuntu、Debian、Fedora の各ディストリビューションに対応する
Docker Engine のリポジトリ設定と安定版のセットアップを自動的に行ってくれます!
2. コンテナ ID を使った楽な操作
• この2つのコンテナを停止するには? docker kill ...
5
# docker ps
CONTAINER ID IMAGE COMMAND CREATED ...
db138dd543ca nginx "nginx -g 'daemon of…" 4 seconds ...
067ea391de49 nginx "nginx -g 'daemon of…" 6 seconds ...
コンテナIDは「前方一致」で操作できます!
「docker kill db138dd543ca 067ea391de49 」のようにコンテナIDを全部コピーしなくても、
この画面の場合は「docker kill d 0」でもOKです。
2文字くらいまでは重複する場合もあり、3文字くらい指定するのが楽です。
例:「docker kill db1 067」のような指定。
コンテナIDだけでなく、イメージID、ネットワークID、ボリューム ID も操作可能です。
3. コンテナ ID と変数展開
• echo $(echo hello wolrd)
• docker ps -a (--all)
• docker ps -l (--last)
• docker ps -q (--quiet)
• docker <command> $(docker <command>)
6
シェルでは $(コマンド) を実行すると、コマンドの中にコマンドの結果を埋め込めます。
←「hello world」と表示します
←停止中も含めた全てのコンテナを表示します
←直近に作成したコンテナを表示します
←「コンテナID」しか表示しません
以上を踏まえると、実行中のコンテナ全てをkillするには
「docker kill $(docker ps -aq)」というコマンドで処理できます。
普段から覚えておいても便利ですし、バッチ処理的な作業をする場合や、定型作業をするときにも
間違いのない手順書や指示ができる方法です。
コンテナだけでなく、イメージ等でも同様に処理できます。
4. コンテナが使っている容量の表示
• docker ps -s (--size)
7
# docker ps -as
CONTAINER ID IMAGE ... SIZE
f46f6c2f7eb4 hello-world ... 0B (virtual 1.84kB)
db138dd543ca nginx ... 2B (virtual 127MB)
067ea391de49 nginx ... 2B (virtual 127MB)
e0dbc44f4cb0 hello-world ... 0B (virtual 1.84kB)
「docker images」でイメージ使用量は確認できますが、
コンテナの使っている要領は「-s」オプションで確認できます。
普段はあまり使うことがないかもしれませんが、
長期間動かしているシステムで、どのコンテナが実際に使っているのかを把握するのに
便利なオプションです。
5. コンテナとイメージ等が使用している容量の表示
• docker system df
8
# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 3 3 287MB 21.78MB (7%)
Containers 6 6 12B 0B (0%)
Local Volumes 0 0 0B 0B
容量などであれば「docker system df」の利用も欠かせません。
上から、イメージ、コンテナ、ボリュームそれぞれの数や、容量を表示します。
6. 不要なコンテナ等の一括削除
• docker system prune (中間イメージ、キャッシュ、未使用ネットワークも)
9
# docker system prune
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
Are you sure you want to continue? [y/N] y
Deleted Containers:
f46f6c2f7eb421709590ad6702bbe5416958258902dc8d4642616a7fd70f265f
db138dd543ca030de31aeceafdd9cf9e75418c3a5a658e3b0f370228d7315a41
e0dbc44f4cb085eff0c364a4f11e5d7f061227f729c99a98272b46ed0d5f1944
Total reclaimed space: 2B
pruneは「収穫」という意味ですが、実行していないコンテナ、中間イメージ、キャッシュ、ネットワークを
まとめて削除してくれる便利なオプションです。docker for mac/win も対応しています。
コンテナだけを消したい場合は「docker container prune」というコマンドもあります。
7. それでも消えないファイルをまとめて消したい場合
• コンテナの全停止+ prune + イメージ強制削除
• docker kill $(docker ps -lq) &&
docker system prune -af --volumes
• イメージだけ全削除
• docker image rm -f $(docker image ls -q)
10
先ほどの「docker system prune」で消せないイメージも消すオプションがこちらです。
もっと確実なのはrm -rf /var/lib/docker を実行して docker の再起動ですが、
これは再起動が許される環境のみの、ちょっと乱暴な方法です。
{ "features": { "buildkit": true }}
export DOCKER_BUILDKIT=1
8. BuildKit 有効化でイメージ構築を高速に
11
• クライアントの環境変数
• Docker デーモン設定ファイル /etc/docker/daemon.json
• Docker Desktop for Mac / Windows にも対応  New!
「docker build」コマンドが高速になるオプションです。Docker 18.06 から追加機能なく利用できるように
なりました。並列でビルドできるので、結構早くなります。是非有効化しましょう。
Docker Desktop for Mac / Windows でも対応しています。
• 環境変数で有効化
export COMPOSE_DOCKER_CLI_BUILD=1
export DOCKER_BUILDKIT=1
docker-compose build
9. Docker Compose で BuildKit 有効化
12
Docker Compose も今月末にリリースされた最新版では、
docker-compose build の高速化に対応しました!
さらに、Docker desktop for mac / Windows の各最新版同梱の Docker Compose も対応しています!
今日は日常作業で役立つ「 9 tips」をご紹介(まとめ)
• Docker の簡単なセットアップ
• コンテナ ID を使った操作
• コンテナ ID と変数展開
• コンテナが使っている容量の表示
• コンテナとイメージ等が使用している容量の表示
• 不要なコンテナ等の一括削除
• それでも消えないファイルをまとめて消したい場合
• BuildKit 有効化でイメージ構築を高速に
• Docker Compose で BuildKit を有効化
13
「get.docker.com」
コンテナIDは前方一致
docker <command> $(docker <command>)
docker ps -s
docker system df
docker system prune
docker kill $(docker ps -lq) &&
docker system prune -af --volumes
export DOCKER_BUILDKIT=1
export COMPOSE_DOCKER_CLI_BUILD=1
Q&A
• 何か気になるところはありますか?
• https://slideshare.net/zembutsu
• Dockerドキュメント日本語訳
http://docs.docker.jp
• Docker Composeドキュメント日本語訳
http://docs.docker.jp/compose/
• 公式ドキュメント
https://docs.docker.com
14
Dockerfile解説スライドもご覧ください
• ベストプラクティス日本語版に解説・図解を加えたバージョンを作りました
15
https://www.slideshare.net/zembutsu/explaining-best-practices-for-writing-dockerfiles

More Related Content

What's hot

containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能Kohei Tokunaga
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいwata2ki
 
実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記Hiroyuki Ohnaka
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Masahito Zembutsu
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Toshihiro Araki
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48Preferred Networks
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていることonozaty
 
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All ThingsUnityTechnologiesJapan002
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 
UEFIによるELFバイナリの起動
UEFIによるELFバイナリの起動UEFIによるELFバイナリの起動
UEFIによるELFバイナリの起動uchan_nos
 
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するStargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するKohei Tokunaga
 
第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会NVIDIA Japan
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化Kumazaki Hiroki
 
Rust で RTOS を考える
Rust で RTOS を考えるRust で RTOS を考える
Rust で RTOS を考えるryuz88
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルMasahito Zembutsu
 

What's hot (20)

containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 
Docker Tokyo
Docker TokyoDocker Tokyo
Docker Tokyo
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくい
 
実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
 
Docker Swarm入門
Docker Swarm入門Docker Swarm入門
Docker Swarm入門
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
 
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
UEFIによるELFバイナリの起動
UEFIによるELFバイナリの起動UEFIによるELFバイナリの起動
UEFIによるELFバイナリの起動
 
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するStargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
 
第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
Rust で RTOS を考える
Rust で RTOS を考えるRust で RTOS を考える
Rust で RTOS を考える
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
 

Similar to Docker 9 tips~意外と知られていない日常で役立つ便利技

[CNDT] 最近のDockerの新機能
[CNDT] 最近のDockerの新機能[CNDT] 最近のDockerの新機能
[CNDT] 最近のDockerの新機能Akihiro Suda
 
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料Masahito Zembutsu
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎Daisuke Hiraoka
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Yuichi Ito
 
ゆるふわなDockerの使い方
ゆるふわなDockerの使い方ゆるふわなDockerの使い方
ゆるふわなDockerの使い方Kento Aoyama
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Masahiro Nagano
 
Webアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオンWebアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオン虎の穴 開発室
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
DockerハンズオンKazuyuki Mori
 
いまからでも遅くない Docker事始め&愉快な仲間達
いまからでも遅くない Docker事始め&愉快な仲間達いまからでも遅くない Docker事始め&愉快な仲間達
いまからでも遅くない Docker事始め&愉快な仲間達softlayerjp
 
Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519虎の穴 開発室
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西Masahide Yamamoto
 
Docker調査20150704
Docker調査20150704Docker調査20150704
Docker調査20150704HommasSlide
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解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 発表資料)NTT DATA Technology & Innovation
 
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門Toru Miyahara
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)NTT DATA Technology & Innovation
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月VirtualTech Japan Inc.
 

Similar to Docker 9 tips~意外と知られていない日常で役立つ便利技 (20)

[CNDT] 最近のDockerの新機能
[CNDT] 最近のDockerの新機能[CNDT] 最近のDockerの新機能
[CNDT] 最近のDockerの新機能
 
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
 
Docker社内勉強会
Docker社内勉強会Docker社内勉強会
Docker社内勉強会
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
 
ゆるふわなDockerの使い方
ゆるふわなDockerの使い方ゆるふわなDockerの使い方
ゆるふわなDockerの使い方
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
Webアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオンWebアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオン
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
Docker やってみた
Docker やってみたDocker やってみた
Docker やってみた
 
いまからでも遅くない Docker事始め&愉快な仲間達
いまからでも遅くない Docker事始め&愉快な仲間達いまからでも遅くない Docker事始め&愉快な仲間達
いまからでも遅くない Docker事始め&愉快な仲間達
 
Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
 
Docker調査20150704
Docker調査20150704Docker調査20150704
Docker調査20150704
 
Docker勉強会
Docker勉強会Docker勉強会
Docker勉強会
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解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超入門
今さら聞けない人のためのDocker超入門今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
 

More from Masahito Zembutsu

忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜Masahito Zembutsu
 
自由検証環境提供宣言+Docker Compose V2 GA
自由検証環境提供宣言+Docker Compose V2 GA自由検証環境提供宣言+Docker Compose V2 GA
自由検証環境提供宣言+Docker Compose V2 GAMasahito Zembutsu
 
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討Masahito Zembutsu
 
さくらインターネットのコミュニティ with COVID-19
さくらインターネットのコミュニティ with COVID-19さくらインターネットのコミュニティ with COVID-19
さくらインターネットのコミュニティ with COVID-19Masahito Zembutsu
 
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」Masahito Zembutsu
 
インターネットでウェブサイトを表示している裏側の話
インターネットでウェブサイトを表示している裏側の話インターネットでウェブサイトを表示している裏側の話
インターネットでウェブサイトを表示している裏側の話Masahito Zembutsu
 
3分で分かる「プログラミング教育・情報教育」
3分で分かる「プログラミング教育・情報教育」3分で分かる「プログラミング教育・情報教育」
3分で分かる「プログラミング教育・情報教育」Masahito Zembutsu
 
ようこそオンラインの展示会場へ
ようこそオンラインの展示会場へようこそオンラインの展示会場へ
ようこそオンラインの展示会場へMasahito Zembutsu
 
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020Masahito Zembutsu
 
オンライン発表で気を付けているポイント~姿勢編
オンライン発表で気を付けているポイント~姿勢編オンライン発表で気を付けているポイント~姿勢編
オンライン発表で気を付けているポイント~姿勢編Masahito Zembutsu
 
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解Masahito Zembutsu
 
クリスマスに工場(Factorio)を作るゲームをしよう
クリスマスに工場(Factorio)を作るゲームをしようクリスマスに工場(Factorio)を作るゲームをしよう
クリスマスに工場(Factorio)を作るゲームをしようMasahito Zembutsu
 
2020年から始まる小学校プログラミング教育の話 #osc19os
2020年から始まる小学校プログラミング教育の話 #osc19os2020年から始まる小学校プログラミング教育の話 #osc19os
2020年から始まる小学校プログラミング教育の話 #osc19osMasahito Zembutsu
 
CNCF Updates 2019 Winter version and Knative
CNCF Updates 2019  Winter version and KnativeCNCF Updates 2019  Winter version and Knative
CNCF Updates 2019 Winter version and KnativeMasahito Zembutsu
 
[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)
[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)
[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)Masahito Zembutsu
 
CNCFアップデート情報~2018年のCNCFを振り返る
CNCFアップデート情報~2018年のCNCFを振り返るCNCFアップデート情報~2018年のCNCFを振り返る
CNCFアップデート情報~2018年のCNCFを振り返るMasahito Zembutsu
 
コンテナ導入概要資料2018
コンテナ導入概要資料2018コンテナ導入概要資料2018
コンテナ導入概要資料2018Masahito Zembutsu
 
DockerConの歩き方~海外カンファレンスに参加するには~
DockerConの歩き方~海外カンファレンスに参加するには~DockerConの歩き方~海外カンファレンスに参加するには~
DockerConの歩き方~海外カンファレンスに参加するには~Masahito Zembutsu
 

More from Masahito Zembutsu (20)

忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
 
自由検証環境提供宣言+Docker Compose V2 GA
自由検証環境提供宣言+Docker Compose V2 GA自由検証環境提供宣言+Docker Compose V2 GA
自由検証環境提供宣言+Docker Compose V2 GA
 
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討
 
さくらインターネットのコミュニティ with COVID-19
さくらインターネットのコミュニティ with COVID-19さくらインターネットのコミュニティ with COVID-19
さくらインターネットのコミュニティ with COVID-19
 
Docker Chronicle 2021.09
Docker Chronicle  2021.09Docker Chronicle  2021.09
Docker Chronicle 2021.09
 
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
 
インターネットでウェブサイトを表示している裏側の話
インターネットでウェブサイトを表示している裏側の話インターネットでウェブサイトを表示している裏側の話
インターネットでウェブサイトを表示している裏側の話
 
3分で分かる「プログラミング教育・情報教育」
3分で分かる「プログラミング教育・情報教育」3分で分かる「プログラミング教育・情報教育」
3分で分かる「プログラミング教育・情報教育」
 
ようこそオンラインの展示会場へ
ようこそオンラインの展示会場へようこそオンラインの展示会場へ
ようこそオンラインの展示会場へ
 
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
 
オンライン発表で気を付けているポイント~姿勢編
オンライン発表で気を付けているポイント~姿勢編オンライン発表で気を付けているポイント~姿勢編
オンライン発表で気を付けているポイント~姿勢編
 
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解
 
Jitsi Meetとは?
Jitsi Meetとは?Jitsi Meetとは?
Jitsi Meetとは?
 
クリスマスに工場(Factorio)を作るゲームをしよう
クリスマスに工場(Factorio)を作るゲームをしようクリスマスに工場(Factorio)を作るゲームをしよう
クリスマスに工場(Factorio)を作るゲームをしよう
 
2020年から始まる小学校プログラミング教育の話 #osc19os
2020年から始まる小学校プログラミング教育の話 #osc19os2020年から始まる小学校プログラミング教育の話 #osc19os
2020年から始まる小学校プログラミング教育の話 #osc19os
 
CNCF Updates 2019 Winter version and Knative
CNCF Updates 2019  Winter version and KnativeCNCF Updates 2019  Winter version and Knative
CNCF Updates 2019 Winter version and Knative
 
[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)
[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)
[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)
 
CNCFアップデート情報~2018年のCNCFを振り返る
CNCFアップデート情報~2018年のCNCFを振り返るCNCFアップデート情報~2018年のCNCFを振り返る
CNCFアップデート情報~2018年のCNCFを振り返る
 
コンテナ導入概要資料2018
コンテナ導入概要資料2018コンテナ導入概要資料2018
コンテナ導入概要資料2018
 
DockerConの歩き方~海外カンファレンスに参加するには~
DockerConの歩き方~海外カンファレンスに参加するには~DockerConの歩き方~海外カンファレンスに参加するには~
DockerConの歩き方~海外カンファレンスに参加するには~
 

Docker 9 tips~意外と知られていない日常で役立つ便利技

  • 1. Docker 9tips 意外と知られていない日常で役立つ便利技 Sakura Internet, Inc. Masahito Zembutsu @zembutsu ゼロからはじめるDocker入門【ビヨンド勉強会#22】 #bydstudy Jan 29, 2020
  • 2. 今日は日常作業で役立つ「 9 tips」をご紹介(デモ) • Docker の簡単なセットアップ • コンテナ ID を使った操作 • コンテナ ID と変数展開 • コンテナが使っている容量の表示 • コンテナとイメージ等が使用している容量の表示 • 不要なコンテナ等の一括削除 • それでも消えないファイルをまとめて消したい場合 • BuildKit 有効化でイメージ構築を高速に • Docker Compose で BuildKit を有効化 2 本当に便利なのに、意外と知られていない?
  • 3. Docker の簡単なセットアップ • 「get.docker.com」 を覚えておく! 3まずはじめは Docker のインストール方法。「get.docker.com」を覚えておくだけです!
  • 4. 4 サイトのドキュメント・ルート自身がシェルスクリプト! 「curl https://get.docker.com | head」を実行したら、 CentOS 7、Ubuntu、Debian、Fedora の各ディストリビューションに対応する Docker Engine のリポジトリ設定と安定版のセットアップを自動的に行ってくれます!
  • 5. 2. コンテナ ID を使った楽な操作 • この2つのコンテナを停止するには? docker kill ... 5 # docker ps CONTAINER ID IMAGE COMMAND CREATED ... db138dd543ca nginx "nginx -g 'daemon of…" 4 seconds ... 067ea391de49 nginx "nginx -g 'daemon of…" 6 seconds ... コンテナIDは「前方一致」で操作できます! 「docker kill db138dd543ca 067ea391de49 」のようにコンテナIDを全部コピーしなくても、 この画面の場合は「docker kill d 0」でもOKです。 2文字くらいまでは重複する場合もあり、3文字くらい指定するのが楽です。 例:「docker kill db1 067」のような指定。 コンテナIDだけでなく、イメージID、ネットワークID、ボリューム ID も操作可能です。
  • 6. 3. コンテナ ID と変数展開 • echo $(echo hello wolrd) • docker ps -a (--all) • docker ps -l (--last) • docker ps -q (--quiet) • docker <command> $(docker <command>) 6 シェルでは $(コマンド) を実行すると、コマンドの中にコマンドの結果を埋め込めます。 ←「hello world」と表示します ←停止中も含めた全てのコンテナを表示します ←直近に作成したコンテナを表示します ←「コンテナID」しか表示しません 以上を踏まえると、実行中のコンテナ全てをkillするには 「docker kill $(docker ps -aq)」というコマンドで処理できます。 普段から覚えておいても便利ですし、バッチ処理的な作業をする場合や、定型作業をするときにも 間違いのない手順書や指示ができる方法です。 コンテナだけでなく、イメージ等でも同様に処理できます。
  • 7. 4. コンテナが使っている容量の表示 • docker ps -s (--size) 7 # docker ps -as CONTAINER ID IMAGE ... SIZE f46f6c2f7eb4 hello-world ... 0B (virtual 1.84kB) db138dd543ca nginx ... 2B (virtual 127MB) 067ea391de49 nginx ... 2B (virtual 127MB) e0dbc44f4cb0 hello-world ... 0B (virtual 1.84kB) 「docker images」でイメージ使用量は確認できますが、 コンテナの使っている要領は「-s」オプションで確認できます。 普段はあまり使うことがないかもしれませんが、 長期間動かしているシステムで、どのコンテナが実際に使っているのかを把握するのに 便利なオプションです。
  • 8. 5. コンテナとイメージ等が使用している容量の表示 • docker system df 8 # docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 3 3 287MB 21.78MB (7%) Containers 6 6 12B 0B (0%) Local Volumes 0 0 0B 0B 容量などであれば「docker system df」の利用も欠かせません。 上から、イメージ、コンテナ、ボリュームそれぞれの数や、容量を表示します。
  • 9. 6. 不要なコンテナ等の一括削除 • docker system prune (中間イメージ、キャッシュ、未使用ネットワークも) 9 # docker system prune WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - all dangling build cache Are you sure you want to continue? [y/N] y Deleted Containers: f46f6c2f7eb421709590ad6702bbe5416958258902dc8d4642616a7fd70f265f db138dd543ca030de31aeceafdd9cf9e75418c3a5a658e3b0f370228d7315a41 e0dbc44f4cb085eff0c364a4f11e5d7f061227f729c99a98272b46ed0d5f1944 Total reclaimed space: 2B pruneは「収穫」という意味ですが、実行していないコンテナ、中間イメージ、キャッシュ、ネットワークを まとめて削除してくれる便利なオプションです。docker for mac/win も対応しています。 コンテナだけを消したい場合は「docker container prune」というコマンドもあります。
  • 10. 7. それでも消えないファイルをまとめて消したい場合 • コンテナの全停止+ prune + イメージ強制削除 • docker kill $(docker ps -lq) && docker system prune -af --volumes • イメージだけ全削除 • docker image rm -f $(docker image ls -q) 10 先ほどの「docker system prune」で消せないイメージも消すオプションがこちらです。 もっと確実なのはrm -rf /var/lib/docker を実行して docker の再起動ですが、 これは再起動が許される環境のみの、ちょっと乱暴な方法です。
  • 11. { "features": { "buildkit": true }} export DOCKER_BUILDKIT=1 8. BuildKit 有効化でイメージ構築を高速に 11 • クライアントの環境変数 • Docker デーモン設定ファイル /etc/docker/daemon.json • Docker Desktop for Mac / Windows にも対応  New! 「docker build」コマンドが高速になるオプションです。Docker 18.06 から追加機能なく利用できるように なりました。並列でビルドできるので、結構早くなります。是非有効化しましょう。 Docker Desktop for Mac / Windows でも対応しています。
  • 12. • 環境変数で有効化 export COMPOSE_DOCKER_CLI_BUILD=1 export DOCKER_BUILDKIT=1 docker-compose build 9. Docker Compose で BuildKit 有効化 12 Docker Compose も今月末にリリースされた最新版では、 docker-compose build の高速化に対応しました! さらに、Docker desktop for mac / Windows の各最新版同梱の Docker Compose も対応しています!
  • 13. 今日は日常作業で役立つ「 9 tips」をご紹介(まとめ) • Docker の簡単なセットアップ • コンテナ ID を使った操作 • コンテナ ID と変数展開 • コンテナが使っている容量の表示 • コンテナとイメージ等が使用している容量の表示 • 不要なコンテナ等の一括削除 • それでも消えないファイルをまとめて消したい場合 • BuildKit 有効化でイメージ構築を高速に • Docker Compose で BuildKit を有効化 13 「get.docker.com」 コンテナIDは前方一致 docker <command> $(docker <command>) docker ps -s docker system df docker system prune docker kill $(docker ps -lq) && docker system prune -af --volumes export DOCKER_BUILDKIT=1 export COMPOSE_DOCKER_CLI_BUILD=1
  • 14. Q&A • 何か気になるところはありますか? • https://slideshare.net/zembutsu • Dockerドキュメント日本語訳 http://docs.docker.jp • Docker Composeドキュメント日本語訳 http://docs.docker.jp/compose/ • 公式ドキュメント https://docs.docker.com 14