Mais conteúdo relacionado Semelhante a Docker 9 tips~意外と知られていない日常で役立つ便利技 (20) Mais de Masahito Zembutsu (20) Docker 9 tips~意外と知られていない日常で役立つ便利技2. 今日は日常作業で役立つ「 9 tips」をご紹介(デモ)
• Docker の簡単なセットアップ
• コンテナ ID を使った操作
• コンテナ ID と変数展開
• コンテナが使っている容量の表示
• コンテナとイメージ等が使用している容量の表示
• 不要なコンテナ等の一括削除
• それでも消えないファイルをまとめて消したい場合
• BuildKit 有効化でイメージ構築を高速に
• Docker Compose で BuildKit を有効化
2
本当に便利なのに、意外と知られていない?
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