Dockerメモ : awesome-dockerで紹介されているDocker関連の便利ツール
awesome-dockerで紹介されているDocker関連の便利ツール、Dockerfileサンプル、チートシートなどをいくつか見てみる。
ざっくりとしか確認していないので実際には使えないものもあるかも。
管理ツール
Repository | スター数 |
---|---|
jesseduffield/lazydocker | 14,925 |
bcicen/ctop | 9,823 |
lirantal/dockly | 2,591 |
moncho/dry | 2,086 |
skanehira/docui | 1,731 |
TomasTomecek/sen | 806 |
portainer/portainer | 14,492 |
google/cadvisor | 10,616 |
※スター数は2020/05/03 20:20時点
lazydocker
lazydockerはDocker/Docker Compose向けのGo製のターミナルベースの管理ツール。
コンテナ/イメージに対する操作、ログ表示、リソース使用状況確認などができる。
ctop
ctopはコンテナ向けのtopコマンドのなもの。
キャプチャのように各コンテナに対しての操作もできる。
その他、同様なターミナルベースの管理ツールとしては以下のようなものがある。
portainer
portainerはDockerのGUI管理ツール。
README.mdにdemo用のインスタンスが紹介されており下記からアクセスできる(username/passwordはREADME.md参照)。
cadvisor
cadvisorはコンテナのリソース使用状況(CPU/Memory/Network/Filesystem)を監視するツール。
あくまでパフォーマンスを監視するツールでGUIからコンテナの停止などはできないようだ。
ユーティリティ
Repository | スター数 |
---|---|
wagoodman/dive | 19,835 |
docker-slim/docker-slim | 8,478 |
docker/docker-bench-security | 5,910 |
containrrr/watchtower | 5,665 |
GoogleContainerTools/container-diff | 2,391 |
alexei-led/pumba | 1,614 |
GoogleContainerTools/container-structure-test | 1,381 |
dive
diveはDockerイメージの各レイヤーの情報を調べるツール。
Dockerイメージサイズ縮小化、最適化に使えるとのこと。
docker-slim
DockerSlimはイメージを最適化してサイズの縮小をしてくれるツール。
以下は公式ページにあった使用例。
$ head -n 1 Dockerfile FROM ubuntu:14.04 $ docker images my/sample-node-app REPOSITORY TAG IMAGE ID CREATED SIZE my/sample-node-app latest 31be09316a19 4 minutes ago 432MB $ docker-slim build --http-probe my/sample-node-app docker-slim[build]: state=started docker-slim[build]: info=params target=my/sample-node-app continue.mode=enter docker-slim[build]: state=inspecting.image docker-slim[build]: state=inspecting.container docker-slim[build]: info=container ... target.port.list=[32908] target.port.info=[8000/tcp => 0.0.0.0:32908] docker-slim[build]: info=prompt message='press <enter> when you are done using the container' docker-slim[build]: state=http.probe.starting docker-slim[build]: info=http.probe.call status=200 method=GET target=http://127.0.0.1:32908/ attempt=1 error=none docker-slim[build]: state=http.probe.done docker-slim[build]: state=processing docker-slim[build]: state=building message='building minified image' docker-slim[build]: state=completed docker-slim[build]: info=results status='MINIFIED BY 30.88X [432330078 (432 MB) => 14002579 (14 MB)]' docker-slim[build]: info=results image.name=my/sample-node-app.slim image.size='14 MB' data=true $ docker images my/sample-node-app.slim REPOSITORY TAG IMAGE ID CREATED SIZE my/sample-node-app.slim latest b72b685be7fe 1 minute ago 14 MB
docker-bench-security
docker-bench-securityはホスト設定、Dockerデーモン設定、Dockerイメージ、実行中コンテナなどのセキュリティをチェックするツール。
watchtower
watchtowerはコンテナを監視して、Docker Hubや独自レジストリでイメージの更新があった際に自動的に最新イメージに更新してコンテナを再起動するツール。
以下のようにwatchtowerと監視対象のコンテナを起動しておくと、監視対象イメージ(centurylink/wetty-cli)に更新があると自動的に更新されるとのこと。
$ docker run -d \ --name watchtower \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower $ docker ps CONTAINER ID IMAGE STATUS PORTS NAMES 967848166a45 centurylink/wetty-cli Up 10 minutes 0.0.0.0:8080->3000/tcp wetty 6cc4d2a9d1a5 containrrr/watchtower Up 15 minutes watchtower
container-diff
container-diffはDockerイメージの差分を確認できるツール。
--type
としてはhistory, file, size, rpm, pip, apt, nodeが指定できる。
$ container-diff diff python:3.8.0-alpine python:3.7.0-alpine --type=size --type=pip -----Pip----- Packages found only in python:3.8.0-alpine: None Packages found only in python:3.7.0-alpine: None Version differences: PACKAGE IMAGE1 (python:3.8.0-alpine) IMAGE2 (python:3.7.0-alpine) -pip 19.3.1, 4.2M 18.1, 4M -setuptools 41.6.0, 1.6M 40.4.3, 1.6M -wheel 0.33.6, 49.3K 0.32.1, 48.4K -----Size----- Image size difference between python:3.8.0-alpine and python:3.7.0-alpine: SIZE1 SIZE2 106.4M 75.5M
pumba
pumbaはDocker向けのカオスエンジニアリングツール。
コンテナの停止、削除やネットワークエミュレーション(遅延、パケットロスなど)ができるとのこと。
$ pumba -h NAME: Pumba - Pumba is a resilience testing tool, that helps applications tolerate random Docker container failures: process, network and performance. USAGE: pumba [global options] command [command options] containers (name, list of names, or RE2 regex if prefixed with "re2:") VERSION: 0.7.2 - 92ecb8b () 2020-03-17_09:43_GMT AUTHOR: Alexei Ledenev <alexei.led@gmail.com> COMMANDS: kill kill specified containers stop stop containers pause pause all processes rm remove containers stress stress test a specified containers netem emulate the properties of wide area networks help, h Shows a list of commands or help for one command
container-structure-test
container-structure-testはDockerイメージに対して、コマンド実行テスト、ファイルの存在テスト、ファイルの内容テスト、環境変数テストなどができるツール。
Linter/Formatter
Repository | スター数 |
---|---|
hadolint/hadolint | 3,562 |
jessfraz/dockfmt | 346 |
hadolint
hadolintはHaskell製のDockerfileのLinter。
チェックする項目はREADME.mdのRulesに書いてある。
$ docker run --rm -i hadolint/hadolint < Dockerfile /dev/stdin:31 SC2086 Double quote to prevent globbing and word splitting. /dev/stdin:31 DL3005 Do not use apt-get upgrade or dist-upgrade /dev/stdin:31 DL3008 Pin versions in apt get install. Instead of `apt-get install <package>` use `apt-get install <package>=<version>` /dev/stdin:31 DL3013 Pin versions in pip. Instead of `pip install <package>` use `pip install <package>==<version>`
dockfmt
dockfmtはgofmtのDockerfile版のようなもの。
以下はフォーマット前後の差分を表示する使用例。
$ dockfmt fmt -d htop/Dockerfile diff htop/Dockerfile dockfmt/htop/Dockerfile --- /tmp/dockfmt143910590 2016-09-19 15:59:22.612250710 -0700 +++ /tmp/dockfmt412224773 2016-09-19 15:59:22.612250710 -0700 @@ -4,10 +4,11 @@ # --pid host \ # jess/htop # -FROM alpine:latest -MAINTAINER Jessie Frazelle <jess@linux.com> + +FROM alpine:latest +MAINTAINER Jessie Frazelle <jess@linux.com> -RUN apk --no-cache add \ +RUN apk add --no-cache \ htop -CMD [ "htop" ] +CMD ["htop"]
Dockerfileサンプル
Repository | スター数 |
---|---|
jessfraz/dockerfiles | 9,759 |
vimagick/dockerfiles | 1,851 |
docker/awesome-compose | 1,994 |
Dockerfileのサンプルは下記リポジトリが人気のようだ。
なお、Docker Composeのサンプルは下記リポジトリにある。
チートシート
Repository | スター数 |
---|---|
wsargent/docker-cheat-sheet | 18,228 |
eon01/DockerCheatSheet:embed | 2,970 |
コマンドなどのチートシートは下記リポジトリが人気のようだ。