こんにちわ
ゴリラです。
みなさんDockerは好きですか?
自分はDocker好きです。
Docker面白いですよね。
本記事は、ゴリラによるDockerユーザのためのゴリラ製Dockerツールを紹介します。
以前こちらの記事でも作ったことを紹介したのですが、
あれから少し進化してより便利になったので、再度紹介します。
これからDockerを始めよう、
もしくはすでに始めている方にとって便利なツールかなと思います。
どういうツール
できること
現時点でできることは以下になります。
-
image
- search/pull/remove
- save/import/load
- inspect/filtering
-
container
- create/remove
- start/stop
- export/commit
- inspect/rename/filtering
- attach
-
volume
- create/remove/prune
- inspect/filtering
-
network
- remove
- inspect/filtering
まだ実装できていないものがありますが、
基本的にDocker単体でできることは大体カバーしています。
次、構成について説明していきます。
構成
info panel
画面最上部に
- DockerのAPIバージョン
- Docker Engineのバージョン
- DockerのEndpoint
- docuiのバージョン
が表示されます。
task list
イメージ取得やコンテナ作成など、各操作が非同期で動きます。
どんな操作がどういう状態なのかを確認するパネルになります。
将来的には履歴から同じ操作を行えるようにする予定です。
image list
container list
volume list
network list
navigate panel
ログ
docuiではエラーが起きた時に、エラーの内容がログに出力されます。
ログの場所は$HOME/docui.log
にあります。
バグの解析などで使用することがメインなので、普段見る必要はありません。
time="2019-01-27T18:28:12+09:00" level=info msg="docui start" func=main.main file="/Users/skanehira/dev/go/src/github.com/skanehira/docui/main.go:14"
time="2019-01-27T18:28:23+09:00" level=info msg="inspect network start" func="github.com/skanehira/docui/panel.(*NetworkList).Detail" file="/Users/skanehira/dev/go/src/github.com/skanehira/docui/panel/networkPanel.go:245"
time="2019-01-27T18:28:23+09:00" level=info msg="inspect network finished" func="github.com/skanehira/docui/panel.(*NetworkList).Detail" file="/Users/skanehira/dev/go/src/github.com/skanehira/docui/panel/networkPanel.go:275"
time="2019-01-27T18:30:26+09:00" level=info msg="remove network start" func="github.com/skanehira/docui/panel.(*NetworkList).RemoveNetwork.func1.1" file="/Users/skanehira/dev/go/src/github.com/skanehira/docui/panel/networkPanel.go:288"
time="2019-01-27T18:30:26+09:00" level=info msg="remove network finished" func="github.com/skanehira/docui/panel.(*NetworkList).RemoveNetwork.func1.1" file="/Users/skanehira/dev/go/src/github.com/skanehira/docui/panel/networkPanel.go:296"
time="2019-01-27T18:32:05+09:00" level=info msg="remove image start" func="github.com/skanehira/docui/panel.(*ImageList).RemoveImage.func1.1" file="/Users/skanehira/dev/go/src/github.com/skanehira/docui/panel/imagePanel.go:682"
time="2019-01-27T18:32:05+09:00" level=info msg="remove image finished" func="github.com/skanehira/docui/panel.(*ImageList).RemoveImage.func1.1" file="/Users/skanehira/dev/go/src/github.com/skanehira/docui/panel/imagePanel.go:691"
time="2019-01-27T18:46:23+09:00" level=info msg="docui finished" func=main.main file="/Users/skanehira/dev/go/src/github.com/skanehira/docui/main.go:19"
使い方
各パネルでできることをgif付きで紹介していきます。
イメージ系操作
イメージ検索
Ctrl + f で検索フォームが出ます。
検索したいイメージ名を入力してEnterを押すと検索結果が出てきます。
取得したいイメージを選択して、Enterを押すとイメージを取得してくれます。
イメージ取得
p で取得したいイメージ名を入力して取得できます。
非同期で動くので、大きいなイメージを取得している間はコンテナを作ったりする事ができます。
イメージ削除
d でイメージを削除できます。
間違って削除してしまわないように確認ダイアログがでます。
イメージ保存
s でイメージを保存できます。
ファイルパスは絶対パスでなければいけないです。
ファイル名のみの場合はカレントディレクトリに出力されます。
イメージインポート
i でイメージをインポートできます。
ファイルパスは絶対パスでなければいけないです。
ファイル名のみの場合はカレントディレクトリを見に行きます。
イメージインポートはファイルシステムだけインポートします。(個人的に使いみが思いつかない)
イメージロード
Ctrl + l でイメージをロードできます。
ファイルパスは絶対パスでなければいけないです。
ファイル名のみの場合はカレントディレクトリを見に行きます。
イメージの詳細
Enter でイメージの詳細を確認できます。
内部ではdocker inspect
しているだけです。
イメージのフィルタリング
f でイメージ一覧のフィルタリングができます。
イメージが多い時に真価が発揮します。
コンテナ系操作
コンテナ作成
Ctrl + c でコンテナ作成フォームが出ます。
全オプションは対応していないのですが、主要のオプションのみ用意してあります。
オプションを入力してCreateボタンを押すとコンテナが作成されます。
コンテナ削除
d でコンテナを削除できます。
間違って削除してしまわないように確認ダイアログがでます。
コンテナ開始
u でコンテナを起動します。
毎回docker start container
しなくて済むので楽ですね。
コンテナ停止
s でコンテナを止めます。
毎回docker stop container
しなくて済むので楽ですね。
コンテナ名変更
r でコンテナ名を変更できます。
docker container rename old new
しなくて済むので楽ですね。
コンテナのアタッチ
Ctrl + c でコマンド(bashやsh)を入力してコンテナへアタッチできます。
コンテナが起動していないときはダイアログが出ます。
内部でdocker exec -it container cmd
していますので、抜けてもコンテナが落ちることはないです。
個人的に気にっている機能の一つです。
コンテナの詳細
Enter でコンテナの詳細を確認できます。
内部ではdocker inspect
しているだけです。
コンテナのフィルタリング
ボリューム系操作
ボリューム作成
ボリューム削除
d でボリュームを削除できます。
間違って削除してしまわないように確認ダイアログがでます。
ボリュームの詳細
ボリュームのフィルタリング
ネットワーク系操作
ネットワークの削除
d でネットワークを削除できます。
間違って削除してしまわないように確認ダイアログがでます。
ネットワークの詳細
Enter でネットワークの詳細を確認できます。
内部ではdocker inspect
しているだけです。
ネットワークのフィルタリング
今後について
まだまだ実装したい機能があるので、
今後もゆっくりではあるんですが、更に使いやすくなるよう進化していきます。
issueとPR大歓迎なので、お待ちしています。
ちなみに、docuiとは関係ないのですが、
将来的にはdocker-compose
とk8s
も同じようなツールも作っていく予定です。
では良いDockerライフを〜