Dockerで実行中のコンテナに入って調査するにはnsenterを使います。正確には、nsenterコマンドを使って、コンテナと同じ名前空間でプロセスを実行します。
nsenterコマンドにはコンテナのPIDや諸々の引数を渡す必要があるので、下記を .bashrc や .zshrc に書いておきます。
# Docker: enter into the container function docker-enter () { local container="$1" if [ -z "$container" ]; then echo "Usage: $0 CONTAINER [COMMAND ARGS...]" echo docker ps return 1 fi shift sudo nsenter -m -u -i -n -p -t "$(docker inspect --format {{.State.Pid}} "$container")" "$@" }
使用例。
% docker-enter Usage: docker-enter CONTAINER [COMMAND ARGS...] CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a2b0567b3899 my:jenkins java -jar jenkins.wa 14 hours ago Up 14 hours 8009/tcp, 8080/tcp jenkins,lb/jenkins % docker-enter jenkins /bin/bash bash-4.2#
なお、nsenterはutil-linux-2.23以降で使えます。