docker
fzf

dockerコンテナの起動・停止をちょっと楽にするシェル関数

dockerコンテナの起動と停止するたびに名前の指定が面倒になってきたので、fzfを使ってシェル関数を作った。

※私はたまたまpecoよりfzf派なだけなのでpeco派の人は適宜書き換えていただければいいかと。

※私はシェル関数を~/.zshrcに追記してます。

docker-start

image.gif

起動していないコンテナを選んでからスタートさせる。

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

image.gif

起動しているコンテナを選んでからストップさせる。

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

image.gif

コンテナに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-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