docker exec & pecoが思いの外捗る


dockerを使いはじめて2年くらいなのですが、今までコンテナに入るまでこんなことをしていました。

y-nishi@yutaroon: laravel-docker-template [master] » docker ps                                                                                 [23:44:39]
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS              PORTS                               NAMES
0fd143ed3db0        laravel-docker-template_nginx   "nginx -g 'daemon of…"   10 seconds ago      Up 10 seconds       0.0.0.0:3333->80/tcp                nginx
286b79e909a4        laravel-docker-template_php     "docker-php-entrypoi…"   11 seconds ago      Up 10 seconds       9000/tcp                            php
cef83b6bb200        laravel-docker-template_mysql   "docker-entrypoint.s…"   11 seconds ago      Up 10 seconds       0.0.0.0:3306->3306/tcp, 33060/tcp   mysql
y-nishi@yutaroon: laravel-docker-template [master] » docker exec -it 286b79e909a4 sh                                                           [23:44:52]
# echo 'mendokuseeee'
mendokuseeee
#

コンテナIDを調べたりコマンド打ったりとてもめんどうです。

そこでpecoを導入してみました。
こんな感じになります。

僕の場合、dexec というエイリアスを登録して、これを叩くことでコンテナ選択に遷移するようにしています、

コンテナIDを意識せずに、コンテナ名を直感的に指定できるのでとても良いです。
コンテナがたくさん立ち上がっている環境だと一層操作しやすくなるのではないでしょうか。

やり方

僕はfishを使っているので、 ~/.config/fish/config.fish に下記を追記します。
bashの人は ~/.bashrc によしなに登録してください。

alias dps='docker ps --format "{{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Command}}\t{{.RunningFor}}"'
alias dexec='docker exec -it (dps | peco | cut -f 1) sh'