(注意)1.3からはdocker execというコマンドが標準であるので、標準のコマンドでシェルを起動してあげれば同じような事ができるはずです。この投稿は1.2以前の環境について書いてます
ちょっとした設定変更をして動くのを試すのにいちいちイメージをビルドし直すのが少し面倒。
sshサーバ立てるしかないのなかーと思ってたらnsenterなるものを発見[1][2]。
インストール方法が変わっていてツールをビルドするため?のDockerイメージをダウンロードして、その中でビルドしたものをマウントしたホストのディレクトリ上にコピーしてくれるって流れらしい。
手順としては以下のコマンドを叩くだけでいい(boot2dockerを使ってる場合は引数が少し違うらしい)。
docker run -v /usr/local/bin:/target jpetazzo/nsenter
^^^^^^^^^^^^^^^
ここがインストール先のホストディレクトリ
mac上でboot2dockerを使ってる場合は以下。
docker run -v /var/lib/boot2docker:/target jpetazzo/nsenter
mac上の~/.bash_profileに以下を追加[3].
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 "$@"
}
上記の修正をした後にsourceで読み込んでおいて
$source ~/.bash_profile
以下のコマンドでシェルが起動しコンテナ内に入れる.
$ docker-enter <container-id>
[1]If you run SSHD in your Docker containers, you're doing it wrong! - ~jpetazzo/index
http://jpetazzo.github.io/2014/06/23/docker-ssh-considered-evil/
[2]jpetazzo/nsenter - github
https://github.com/jpetazzo/nsenter
[3]Docker debug with nsenter on boot2docker - sequenceiq
http://blog.sequenceiq.com/blog/2014/07/05/docker-debug-with-nsenter-on-boot2docker/