Bash
golang
docker
Peco
nyagos

peco で Docker container ID を選択するやつ。

いつもの Docker container を peco で選択するやつです。

demo

必要なもの

  • docker
  • peco
  • bash or nyagos (キーバインドを設定して呼び出す)

使い方

bash または nyagos のキーバインドで呼び出すことを想定している。
私はCtrl + dで呼び出すように設定している。

docker exec -it [ここでおもむろに Ctrl + d]

あとはpecoでcontainerを選択し、続く引数を入力していけば良い。

準備

キーバインドで呼び出せるようにするまでの準備方法

1. インストール

ここからバイナリを落とす。
docker-selector/releases

対応したバイナリが無くてgolangが入ってればこちらを。

$ go get -u github.com/ujiro99/docker-selector

2. キーバインドの設定

bashまたはnyagosでの設定例。
これを.bashrc.nyagosに書くとCtrl + dで呼び出せる。

  • bash
peco-docker-selector() {
    local l=$(\docker-selector -a)
    READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}${l}${READLINE_LINE:$READLINE_POINT}"
    READLINE_POINT=$(($READLINE_POINT + ${#l}))
}
bind -x '"\C-d": peco-docker-selector'
  • nyagos
nyagos.bindkey("C_D", function(this)
    local result = nyagos.eval('docker-selector.exe -a')
    this:call("CLEAR_SCREEN")
    return result
end)

背景

pecoでDockerを使いやすくする取り組みは過去にも色々あった。

fzfにも存在する。

だけど、いずれもbashやzshを使うことを前提としており、nyagosユーザの私には使えなかった。MinGW bashへの移行やLuaスクリプトで書くことも考えたが、それなら初めからクロスプラットフォームで使えるようにしておこうと思い、golangで書いたのであった。