Dockerヘルパーツールの「Recker」をつくってみた
個人的には便利に使ってるとはいえ「他人さまにはどうかなあ…」と思って公開をためらっていたツールを公開してみます。Docker ヘルパーツールの「Recker」(レッカー)です。
なんとなくデファクトスタンダードになってしまったDocker。それなりに便利に使ってるんですが、
- いろいろめんどくさい
- かんたんにしようと思ってなんかツールを入れようとしたら規模がデカすぎる
ということが多いんですよね。「ぼくが欲しかったのはコレジャナイ!」的な。欲しいのは、docker コマンドに皮をかぶせた程度のCLIなんです。
ということで Recker は以下のような機能を備えたツールです:
- 作業対象イメージ・コンテナを一覧画面からカーソルキーで選択する機能
TABキーでのイメージ・コンテナ名・ID補完機能docker buildの゛土台“(scaffold)作成機能docker runの簡便化、ポート・リンク・ボリュームの設定サポート機能
ぼくのところでは、コンテナはいつもこれで作っています。特に、ビルドのたびに「秘伝のタレ」を継ぎ足していたスクリプトを消してつくった scaffold はけっこうラクです。こんな感じで使います。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$ recker scaffold my_sl_container $ cd ~/Docker/Dockerfiles/my_sl_container $ cat <<'_EOF_' >> container_build.sh yum -y install epel-release yum -y install sl _EOF_ $ sed -i -e 's|^\(EXEC\)=$|\1=/usr/bin/sl|' config.sh $ recker build ./ $ recker run ./ (@@) ( ) (@) ( ) @@ () @ ( ) (@@@@) ( ) (@@@) ==== ________ ___________ _D _| |_______/ \__I_I_____===__|_________| |(_)--- | H\________/ | | =|___ ___| / | | H | | | | ||_| |_|| _ | | | H |__--------------------| [___] | =| | ________|___H__/__|_____/[][]~\_______| | -| |/ | |-----------I_____I [][] [] D |=======|____|_ __/ =| o |=-~~\ /~~\ /~~\ /~~\ ____Y___________|__|___ |/-=|___|= O=====O=====O=====O|_____/~\___/ | \_/ \__/ \__/ \__/ \__/ \_/ $ |
あと、開発環境をたくさん立ち上げたい人向けに、HTTP/SSHのポートを自動インクリメントリマップしてコンテナを起動させるなんてことも気軽にできます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$ recker scaffold call_apache $ cd ~/Docker/Dockerfiles/call_apache $ cat <<'_EOF_' >> container_build.sh yum -y install httpd _EOF_ $ cat <<'_EOF_' >> container_services.sh service httpd start _EOF_ $ sed -i \ -e 's|^\(RUN_AS_SERVICE\)=.\{0,\}$|\1=1|' \ -e 's|^\(AUTOMAP_PORT_HTTP\)=.\{0,\}$|\1=1|' \ config.sh $ recker build ./ $ recker run ./ HTTP port auto-mapped to: 8000 Changed mode to background because of declaration RUN_AS_SERVICE 8214acd40c4c5afeae9746a08ff9b32722709b05d18fd5783f11d929b7f76b00 $ recker run ./ HTTP port auto-mapped to: 8001 Changed mode to background because of declaration RUN_AS_SERVICE 0d7a3a762cffe07b0522841b9f71b4bdea29fe9f24b647e962a9ba5ce505eb3f $ recker run ./ HTTP port auto-mapped to: 8002 Changed mode to background because of declaration RUN_AS_SERVICE cd0a73733580ad604263d1fa4c140d41367fde3a7314fb567495826089342ce0 : |
TAB補完は…実は今のDockerだとbashcompletion入れるだけで有効になるんですけどね。ほぼ相当くらいの機能を自前で実装してます。とはいえ、あまり頭を使いたくないときはカーソル+Enterでイメージ・コンテナを選択できるモードが便利かと。
ということで興味のある方がいらしたら使ってみて、クレームくださいな。