dockerコンテナの起動と停止するたびに名前の指定が面倒になってきたので、fzfを使ってシェル関数を作った。
※私はたまたまpecoよりfzf派なだけなのでpeco派の人は適宜書き換えていただければいいかと。
※私はシェル関数を~/.zshrc
に追記してます。
docker-start
起動していないコンテナを選んでからスタートさせる。
docker-start() {
local container
container="$(docker ps -a -f status=exited | sed -e '1d' | fzf --height 40% --reverse | awk '{print $1}')"
if [ -n "${container}" ]; then
echo 'starting container...'
docker start ${container}
fi
}
docker-stop
起動しているコンテナを選んでからストップさせる。
docker-stop() {
local container
container="$(docker ps -a -f status=running | sed -e '1d' | fzf --height 40% --reverse | awk '{print $1}')"
if [ -n "${container}" ]; then
echo 'stopping container...'
docker stop ${container}
fi
}
docker-exec-bash
コンテナにbashでつなぐ。
(bashでつなぐことがよくあるので、ついでに作った。)
docker-exec-bash() {
local container
container="$(docker ps -a -f status=running | sed -e '1d' | fzf --height 40% --reverse | awk '{print $1}')"
if [ -n "${container}" ]; then
docker exec -it ${container} /bin/bash
fi
}
docker-logs
コンテナの直近のログを見る。
docker-logs() {
local container
container="$(docker ps -a -f status=running | sed -e '1d' | fzf --height 40% --reverse | awk '{print $1}')"
if [ -n "${container}" ]; then
docker logs -f --tail 100 ${container}
fi
}
docker-rm
起動していないコンテナを選んでから削除させる。
docker-rm() {
local container
container="$(docker ps -a -f status=exited | sed -e '1d' | fzf --height 40% --reverse | awk '{print $1}')"
if [ -n "${container}" ]; then
echo 'removing container...'
docker rm ${container}
fi
}
docker-rmi
(追記)ディスクいっぱいになってイメージ削除するときにも使えた。
docker-rmi() {
local image
image="$(docker images -a | sed -e '1d' | fzf --height 40% --reverse | awk '{print $3}')"
if [ -n "${image}" ]; then
echo 'removing container image...'
docker rmi ${image}
fi
}
参考
fzfのExamplesを参考にしました。
https://github.com/junegunn/fzf/wiki/Examples