SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すTakaya Saeki
 
Windows Server 2019 で Container を使ってみる
Windows Server 2019 で Container を使ってみるWindows Server 2019 で Container を使ってみる
Windows Server 2019 で Container を使ってみるKazuki Takai
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことyoku0825
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観Yamato Tanaka
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
DockerクイックツアーEtsuji Nakai
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門Masahito Zembutsu
 
OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27Kentaro Ebisawa
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門Fixstars Corporation
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation
 
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovyJava開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovyYasuharu Nakano
 

La actualidad más candente (20)

WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
Windows Server 2019 で Container を使ってみる
Windows Server 2019 で Container を使ってみるWindows Server 2019 で Container を使ってみる
Windows Server 2019 で Container を使ってみる
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
Docker Tokyo
Docker TokyoDocker Tokyo
Docker Tokyo
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 
C++ マルチスレッド 入門
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
 
自宅インフラの育て方 第2回
自宅インフラの育て方 第2回自宅インフラの育て方 第2回
自宅インフラの育て方 第2回
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovyJava開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
 

Similar a 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虎の穴 開発室
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルMasahito Zembutsu
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西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
 

Similar a 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イメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
 
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 リリース記念イベント」発表資料)
 

Más de 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
 

Más de 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