SlideShare a Scribd company logo
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
Ad

More Related Content

What's hot (20)

ファントム異常を排除する高速なトランザクション処理向けインデックス
ファントム異常を排除する高速なトランザクション処理向けインデックスファントム異常を排除する高速なトランザクション処理向けインデックス
ファントム異常を排除する高速なトランザクション処理向けインデックス
Sho Nakazono
 
並行実行制御の最適化手法
並行実行制御の最適化手法並行実行制御の最適化手法
並行実行制御の最適化手法
Sho Nakazono
 
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Masahito Zembutsu
 
Docker超入門
Docker超入門Docker超入門
Docker超入門
VirtualTech Japan Inc.
 
OpenAI FineTuning を試してみる
OpenAI FineTuning を試してみるOpenAI FineTuning を試してみる
OpenAI FineTuning を試してみる
iPride Co., Ltd.
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
 
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモAnaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
ayohe
 
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
Yusuke Uchida
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
 
Guide To AGPL
Guide To AGPLGuide To AGPL
Guide To AGPL
Mikiya Okuno
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Preferred Networks
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ビジネスパーソンのためのDX入門講座エッセンス版
ビジネスパーソンのためのDX入門講座エッセンス版ビジネスパーソンのためのDX入門講座エッセンス版
ビジネスパーソンのためのDX入門講座エッセンス版
Tokoroten Nakayama
 
[DL輪読会]PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metr...
[DL輪読会]PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metr...[DL輪読会]PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metr...
[DL輪読会]PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metr...
Deep Learning JP
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
Takuya ASADA
 
Docker Tokyo
Docker TokyoDocker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
 
ファントム異常を排除する高速なトランザクション処理向けインデックス
ファントム異常を排除する高速なトランザクション処理向けインデックスファントム異常を排除する高速なトランザクション処理向けインデックス
ファントム異常を排除する高速なトランザクション処理向けインデックス
Sho Nakazono
 
並行実行制御の最適化手法
並行実行制御の最適化手法並行実行制御の最適化手法
並行実行制御の最適化手法
Sho Nakazono
 
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Masahito Zembutsu
 
OpenAI FineTuning を試してみる
OpenAI FineTuning を試してみるOpenAI FineTuning を試してみる
OpenAI FineTuning を試してみる
iPride Co., Ltd.
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
 
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモAnaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
ayohe
 
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
Yusuke Uchida
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Preferred Networks
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ビジネスパーソンのためのDX入門講座エッセンス版
ビジネスパーソンのためのDX入門講座エッセンス版ビジネスパーソンのためのDX入門講座エッセンス版
ビジネスパーソンのためのDX入門講座エッセンス版
Tokoroten Nakayama
 
[DL輪読会]PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metr...
[DL輪読会]PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metr...[DL輪読会]PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metr...
[DL輪読会]PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metr...
Deep Learning JP
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
Takuya ASADA
 

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

[CNDT] 最近のDockerの新機能
[CNDT] 最近のDockerの新機能[CNDT] 最近のDockerの新機能
[CNDT] 最近のDockerの新機能
Akihiro Suda
 
Docker社内勉強会
Docker社内勉強会Docker社内勉強会
Docker社内勉強会
osamu_takezawa
 
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 2014
Masahiro 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
虎の穴 開発室
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Masahito Zembutsu
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
Masahide Yamamoto
 
Docker調査20150704
Docker調査20150704Docker調査20150704
Docker調査20150704
HommasSlide
 
Docker勉強会
Docker勉強会Docker勉強会
Docker勉強会
namikikazuma
 
捕鯨!詳解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.
 
[CNDT] 最近のDockerの新機能
[CNDT] 最近のDockerの新機能[CNDT] 最近のDockerの新機能
[CNDT] 最近のDockerの新機能
Akihiro Suda
 
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 2014
Masahiro 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
虎の穴 開発室
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Masahito Zembutsu
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
Masahide Yamamoto
 
Docker調査20150704
Docker調査20150704Docker調査20150704
Docker調査20150704
HommasSlide
 
捕鯨!詳解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.
 
Ad

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の後継者たり得るか?〜
Masahito Zembutsu
 
自由検証環境提供宣言+Docker Compose V2 GA
自由検証環境提供宣言+Docker Compose V2 GA自由検証環境提供宣言+Docker Compose V2 GA
自由検証環境提供宣言+Docker Compose V2 GA
Masahito 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-19
Masahito Zembutsu
 
Docker Chronicle 2021.09
Docker Chronicle  2021.09Docker Chronicle  2021.09
Docker Chronicle 2021.09
Masahito Zembutsu
 
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
Masahito Zembutsu
 
インターネットでウェブサイトを表示している裏側の話
インターネットでウェブサイトを表示している裏側の話インターネットでウェブサイトを表示している裏側の話
インターネットでウェブサイトを表示している裏側の話
Masahito Zembutsu
 
3分で分かる「プログラミング教育・情報教育」
3分で分かる「プログラミング教育・情報教育」3分で分かる「プログラミング教育・情報教育」
3分で分かる「プログラミング教育・情報教育」
Masahito Zembutsu
 
ようこそオンラインの展示会場へ
ようこそオンラインの展示会場へようこそオンラインの展示会場へ
ようこそオンラインの展示会場へ
Masahito Zembutsu
 
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
Masahito Zembutsu
 
オンライン発表で気を付けているポイント~姿勢編
オンライン発表で気を付けているポイント~姿勢編オンライン発表で気を付けているポイント~姿勢編
オンライン発表で気を付けているポイント~姿勢編
Masahito Zembutsu
 
Jitsi Meetとは?
Jitsi Meetとは?Jitsi Meetとは?
Jitsi Meetとは?
Masahito Zembutsu
 
クリスマスに工場(Factorio)を作るゲームをしよう
クリスマスに工場(Factorio)を作るゲームをしようクリスマスに工場(Factorio)を作るゲームをしよう
クリスマスに工場(Factorio)を作るゲームをしよう
Masahito Zembutsu
 
2020年から始まる小学校プログラミング教育の話 #osc19os
2020年から始まる小学校プログラミング教育の話 #osc19os2020年から始まる小学校プログラミング教育の話 #osc19os
2020年から始まる小学校プログラミング教育の話 #osc19os
Masahito 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 Knative
Masahito 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
コンテナ導入概要資料2018
Masahito Zembutsu
 
DockerConの歩き方~海外カンファレンスに参加するには~
DockerConの歩き方~海外カンファレンスに参加するには~DockerConの歩き方~海外カンファレンスに参加するには~
DockerConの歩き方~海外カンファレンスに参加するには~
Masahito Zembutsu
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション
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 GA
Masahito 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-19
Masahito Zembutsu
 
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
Masahito Zembutsu
 
インターネットでウェブサイトを表示している裏側の話
インターネットでウェブサイトを表示している裏側の話インターネットでウェブサイトを表示している裏側の話
インターネットでウェブサイトを表示している裏側の話
Masahito Zembutsu
 
3分で分かる「プログラミング教育・情報教育」
3分で分かる「プログラミング教育・情報教育」3分で分かる「プログラミング教育・情報教育」
3分で分かる「プログラミング教育・情報教育」
Masahito Zembutsu
 
ようこそオンラインの展示会場へ
ようこそオンラインの展示会場へようこそオンラインの展示会場へ
ようこそオンラインの展示会場へ
Masahito Zembutsu
 
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
Masahito Zembutsu
 
オンライン発表で気を付けているポイント~姿勢編
オンライン発表で気を付けているポイント~姿勢編オンライン発表で気を付けているポイント~姿勢編
オンライン発表で気を付けているポイント~姿勢編
Masahito Zembutsu
 
クリスマスに工場(Factorio)を作るゲームをしよう
クリスマスに工場(Factorio)を作るゲームをしようクリスマスに工場(Factorio)を作るゲームをしよう
クリスマスに工場(Factorio)を作るゲームをしよう
Masahito Zembutsu
 
2020年から始まる小学校プログラミング教育の話 #osc19os
2020年から始まる小学校プログラミング教育の話 #osc19os2020年から始まる小学校プログラミング教育の話 #osc19os
2020年から始まる小学校プログラミング教育の話 #osc19os
Masahito 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 Knative
Masahito 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
コンテナ導入概要資料2018
Masahito Zembutsu
 
DockerConの歩き方~海外カンファレンスに参加するには~
DockerConの歩き方~海外カンファレンスに参加するには~DockerConの歩き方~海外カンファレンスに参加するには~
DockerConの歩き方~海外カンファレンスに参加するには~
Masahito Zembutsu
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション
Masahito Zembutsu
 
Ad

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