LoginSignup
22
22

More than 5 years have passed since last update.

Dockerコンテナの中に入る方法

Last updated at Posted at 2014-08-10

(注意)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].

~/.bash_profile
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/

22
22
1

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
22
22