CentOS 6.5でnsenterを使ってDockerコンテナに入る方法

f712a111e120c65ed3ec259a3f9c812b_s

CentOS 7が出ちゃったけど、もろもろのインフラが全部6ベースだからどうしようもないのさ…という昨今。Docker使うのももちろんまだまだCentOS 6.5上です。 で、動いているDockerコンテナにつなげる方法として、一時期話題になっていた、

の件。やってみたら動かないよ…。

go での nsinit のコンパイル方法を間違ったのかと思ったらさにあらず。カーネル2.6ベースのCentOS 6.5では、 nsinit は動かないんだそうな。う、動かしてる環境を書いておいてください…。

じゃあどうするかというと、新しい util-linux に入っている nsenter を使えとのこと。依存する gettext も拾ってきてコンパイルすれば CentOS 6.5 でも動いているコンテナにアタッチするコマンドがちゃんと 手に入る。すばらしい。これでわが軍はあと十年は戦える。

手コンパイルだとこんな感じ。rpm作るべきなのかも。

これで /opt/lib/util-linux-2.24.2/bin/nsenternsenter 本体がインストールされた。ただ、このままだとちょっと使い勝手が 悪いので、

とかいうファイルを /usr/bin/docker-nsenter として置いておくとよい。 で、つなげたい動作中コンテナのコンテナIDを docker ps で調べて、

とやると、みごとお好きなコンテナにアタッチできました。ぱちぱち…。
…めんどくさい。