Orange Pi 3 docker tool menu

当サイトではdockerを少しでも使いやすくするためメニューを作成していますが今回鯨を少しだけ増やしてみました。pythonの勉強です。

青鯨、黒鯨は今までのとおりですが新たに赤鯨と緑鯨を追加してみました。
dockerの状態やコントロールするためにpythonのListboxを作成してみたいと思います。

参考

雛形はボタンでもお世話になっているこちらのサイトのものを参考にしています。
https://python.keicode.com/advanced/tkinter-widget-scrollbar.php

docker container ls

docker container ls(docker ps)は基本ですね。
以下のコマンドを実行するとNAMESの項だけを取り出すことができます。

$ docker container ls | grep -v NAMES | grep .$ | awk '{print $NF}'
$ docker container ls -a | grep -v NAMES | grep .$ | awk '{print $NF}'


1行目を除外して文字列を検索、awkで最後の文字列を取得します。
この値を変数に読み込ませてリストに出力、表示します。


赤鯨は現在実行中のコンテナを表示します。
緑鯨は作成済みの全コンテナを取得します。

黒鯨は全コンテナを停止してしまいますが赤鯨はリストから選択して特定のコンテナを停止、または再スタートすることができます。
緑鯨はリストに載っているコンテナを選択してスタートorストップします。緑鯨からのスタート及びストップは実行後緑鯨は終了します。赤鯨が起動していれば再起動してリストに反映します。
また不要なコンテナを選択して削除します。
赤鯨を起動後コマンドラインからスタートしたコンテナはRELOADすることでリストに反映されますがリストの内容だけを書き換えることは難しかったので赤鯨を再起動することでリストに反映しています。(緑鯨も同様)

alpineでssh接続の様子
今までのボタン操作で起動しています。
赤鯨が起動しているとアプリケーションの再起動によってdwmのウインドウ位置が入れ替わります。赤鯨は確認、及び必要があるときに起動するとdwm本来の動作になります。
ウインドウ位置が変わるだけなので使いやすい方でいいのですが…


dockerメニューのコンテナボタンをクリックするとコンテナがスタートします。
コンテナがスタートするとメッセージボックスが出現します。コンテナによって違いますが数秒もしくはもう少しかかる場合もあります。赤鯨を起動していればメッセージボックスとともに赤鯨が再起動してリストに反映されます。Yesで接続(sleep 1)にいきますが即接続できるのはalpinだけですね。X(vnc)コンテナは20〜30秒待ったほうが確実と思います。

Noではコンテナ起動のままダイアログを閉じます。(接続は再度ボタンをクリック)
ssh or vnc接続のタイミングはヒューマン感覚に任せることにします。

緑鯨からは不要なコンテナを削除できます。
buildで失敗したときなどは外人さんふうのコンテナが作成されているときがあります。
そんなコンテナを削除するには便利と思います。(コンテナはSTOP)


当サイトではできるだけ新コマンド形式を使うようにしています。旧コマンドに比べると長ったらしくなるのですがエイリアスにするとイメージしやすくなります。
それでもやっぱり忘れるのでテキストボタンからすぐ呼び出せるようにしています。
画像では.cshrcですが.bashrcも記述方法が少し違うだけで同じように利用できます。

リストからnameをコピーできるのでペーストして簡単な編集確認はすぐできます。
(注)Osのコマンドとバッティングしないようにします。dc(計算機)がある場合が多いと思います。

ボタンカラー

ボタンや文字の色についてはなかなか的確な情報を見つけられなかったのですがこのページがヒットしました。
https://www.geeksforgeeks.org/python-add-style-to-tkinter-button/
最初NameErrorが出てうまくいかなかったのですがよく見るとimportする専用モジュールがあるんですね。似たような名称なので見逃していました。

Traceback (most recent call last):
  File "docker_run.py.txt", line 85, in 
    style = Style()
NameError: name 'Style' is not defined

緑鯨を例にすると追加した項目は以下のようになりました。
‘TButton’がデフォルトで摘要されます。
‘W.TButton’で個別に設定します。

from tkinter.ttk import *

    # Butoon color
    style = Style()
    style.configure('TButton', font=('calibri', 9), background='#A4DCBF')
    style.configure('W.TButton', font=('calibri', 9), foreground='#FF0089')

    button4 = ttk.Button(frame2, text='REMOVE', style='W.TButton', command=button4_click)

参考 赤鯨 緑鯨 dockerメニュー

赤鯨、緑鯨はコマンドラインの補助ツールです。
当サイトの環境で動作確認していますが自己責任で!
dockerメニューは一部コンテナボタン割愛しています。
ファイルの保存場所は~/binにしています。パスを通すか明示的に~/bin/xxx.pyのように変更する必要があると思います。
赤鯨 docker_run.py
緑鯨 docker_container.py
メニュー docker.py


管理ツール portainer
比べるまでもなく作成したpython toolよりははるかに高機能ですがportainer自体がdockerコンテナであること、webブラウザ経由であることを考慮するとpython tool(赤鯨、緑鯨)もコマンドラインのサブツールとして意外と便利かもしれません。