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