LoginSignup
23
22

More than 5 years have passed since last update.

peco で Docker の container ID を楽に選択する alias

Posted at

Docker 使っていると割りと container ID が必要になるケース多いと思います。
このとき一々 docker ps から container ID を探し出してコピペするのが面倒だったので、alias を定義しました。

alias -g P='`docker ps | tail -n +2 | peco | cut -d" " -f1`'

docker ps の結果を peco で絞り込みます。
これだと起動しているコンテナの ID しか取れないので、停止中のも取りたい場合は -a オプションを付ければよいです。

peco に渡す前に tail -n +2 を噛ませていますが、これは「頭から2行目以降を出力する(= 先頭行を飛ばして出力する)」というコマンドです。
docker ps は先頭行にフィールド名ヘッダが入るので、これを除去しています。

コンテナ停止

$ docker stop P

コンテナのログを見る

$ docker logs P

nsenter を使ってコンテナに入る

予め nsenter を使えるようにしておき、.bashrc や .zshrc で docker-enter コマンドを定義しておく。

$ docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter

OS X で boot2docker 経由の docker-enter を参考までに載せておきます。

docker-enter() {
  boot2docker ssh '[ -f /var/lib/boot2docker/nsenter ] || docker run --rm -v /var/lib/boot2docker/:/target jpetazzo/nsenter'
  boot2docker ssh -t sudo /var/lib/boot2docker/docker-enter "$@"
}

以上設定したら、以下のコマンドでコンテナに attach できる。

$ docker-enter P

docker exec でコンテナ内プロセス実行 (>= Docker 1.3)

最近 Docker 1.3 が出て docker exec コマンドが定義されました。便利!!!!

例えばコンテナ内のプロセス一覧を確認したい場合、

$ docker exec P ps -ef

See also

dot.zsh/.zshrc.peco - dtan4/dot.zsh
¯

23
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
22