Dockerによる仮想コンテナを試してみる(1.5日目)~ dockerコンテナに入る編~
attach
コマンドで実行中のコンテナに入ることができるのですが、いちいちコンテナのIDをコピペするのが面倒臭い。
世のエンジニアな方々がこんなことを我慢しているわけがない、ということで少し調べてみると、何種か方法があるっぽい。
ってことでやってみたでござる。
sshd立ち上げろ
dokerコンテナ内でsshd立ち上げて接続すればいいじゃん法。
でもなんかいまいち。 一々sshd立ち上げなきゃ接続できないのかっていうと決してそんなことはない。はず。
nsinitでやれば?
Dockerコンテナに入るなら SSH より nsinit が良さそう - Gosuke Miyashita
こちらの説明がわかりやすくて、実際にやってみた。
# nsinit exec /bin/bash 2014/08/16 22:54:44 failed to exec: mountpoint not found
んぅ…うまくいかない。
ちょっと調べてみたのですが、どうにも解決までいかなくて挫折。
nsenterもあるよ
RHEL/CentOS 6で Docker に nsinit/nsenter する - Qiita
どんぴしゃな感じでとても参考になりました。
が、dockerの基本的なことをわかってないのに追跡する方向性が発散してしまいそうになったので、もうこれはシェル芸もどきでなんとかするしかないのではという結論に至る。
シェル関数を書いちゃおうぜ!
要はコンテナのIDを拾えればそれでいいんじゃよ、という結論に至った(至ってしまった)ため、以下のような関数を書きました。
dock_attach(){ id=($(docker ps -q --no-trunc | tr '\n' ' ')) if [ -z $1 ]; then echo "Usage: dock_attach <container_id>" >&2 return 1 fi select=${id[$1]} sh -c "docker attach $select" }
dock_attach 0
とかやってあげると、docker ps
で表示される1行目のコンテナに入ることができます。
なんかもっと良い方法がありそうなのですが、楽する前に基礎をしっかりということで、引き続きお勉強と洒落こみたいと思います。