PortainerはDocker上でportainerコンテナを作ってDocker全体を管理するタイプのツールです。
参考
https://qiita.com/polarbear08/items/931fe04ec228fad13092
https://stackoverflow.com/questions/394230/how-to-detect-the-os-from-a-bash-script
起動させるのがめんどくさいので自分用にちょっと便利にしたスクリプトを作成しました。(ただしwindowsは非対応)
スクリプト内容
Docker起動後に以下の内容が記載されたファイルを実行することでPortainerを実行させます。
例えば.zprofile
や.bash_profile
等に/bin/sh ファイルパス.sh
といった感じに追記してターミナル起動時に起動させることが出来ます(起動したらブラウザを開く)。既に起動している場合はportainer running. URL
が表示されるだけです。
portainerに設定した内容はDocker Volumeのportainer_setting_data
に格納されます。
ターミナル起動時毎に実行され、dockeとportainerrが起動しているか等を判定するので、ターミナルの起動時間が気になる人はcron
とか使ったりして対応するか、このスクリプト自体使わない方が良いかもしれません。
# /bin/bash
# コンソール表示用の環境変数
PORTAINER_URL=http://docker.local
# ホスト側のポート番号
PORTAINER_PORT1=8000
PORTAINER_PORT2=9000
if [ "$(docker stats --no-stream)" ]; then
if [ "$(docker ps -qf name=portainer -f status=running)" ]; then
# portainer動作中
echo "portainer running. ${PORTAINER_URL}:${PORTAINER_PORT1}"
elif [ "$(docker ps -qf name=portainer -f status=exited)" ]; then
# portainerコンテナはあるが動作していない場合
docker start portainer
echo "portainer start. ${PORTAINER_URL}:${PORTAINER_PORT2}"
# URLを開く
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
# Linux
echo "open linux"
xdg-open ${PORTAINER_URL}:${PORTAINER_PORT2}
elif [[ "$OSTYPE" == "darwin"* ]]; then
# Mac OSX
open ${PORTAINER_URL}:${PORTAINER_PORT2}
fi
elif [ ! "$(docker ps -aqf name=portainer)" ]; then
# portainerコンテナが存在していない場合
docker run \
--detach \
--publish ${PORTAINER_PORT1}:8000 \
--publish ${PORTAINER_PORT2}:9000 \
--name portainer \
--restart always \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume portainer_setting_data:/data \
portainer/portainer-ce
echo "portainer create. ${PORTAINER_URL}:${PORTAINER_PORT2}"
# URLを開く
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
# Linux
echo "open linux"
xdg-open ${PORTAINER_URL}:${PORTAINER_PORT2}
elif [[ "$OSTYPE" == "darwin"* ]]; then
# Mac OSX
open ${PORTAINER_URL}:${PORTAINER_PORT2}
fi
fi
fi
portainer削除
上記スクリプトのファイルを削除してから下記を実行することでコンテナとボリュームをそれぞれ削除出来ます。
コンテナを停止して削除
docker stop $(docker ps -aqf "name=portainer") && docker rm $(docker ps -aqf "name=portainer")
設定が入ったボリュームを削除
docker volume rm portainer_setting_data