Help us understand the problem. What is going on with this article?

nsenter・docker-enterでコンテナに入る方法

More than 5 years have passed since last update.

概要

nsenterdocker-enterコマンドを使う事で、コンテナ(namespace)にSSHを使わず入ることができまる。ここでは、セットアップの仕方と使い方を紹介。

課題

Dockerfile 等でENTRYPOINTをデーモンに指定すると、サーバの操作ができず、SSHログインすることが出来ない。CentOS6 の Docker コンテナであれば sshd を起動させておけるが、CentOS7 では環境によって systemd で sshd を起動させることが出来ないだけでなく、本来のコンテナの使い方としては推奨されていない
また、docker attach を使う場合は Ctrl+Pキーが無効のため、emacs等のキーバインドに支障がでる。

nsenter

nsenterとは?

Dockerで作った名前空間(ネームペース;namespace)に入るためのコマンドライン・ツール。nsenter の由来は「enter into namespaces」=「ネームスペースに入る」。

セットアップするには?

パッケージ util-linux のバージョン 2.23 以降に同梱(RHEL7等)。

パッケージが提供されない場合、docker を使ってセットアップする方法が簡単。

docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter

/usr/local/bin/ 以下にファイルが置かれる。

コンテナに入るには?

docker ps等でコンテナIDを確認するか、あるいはコンテナ名を引数にする。

書式:docker-enter <コンテナIDかコンテナ名>

例:daemon モードで実行する

# docker ps -l
CONTAINER ID        IMAGE                    COMMAND                CREATED             STATUS              PORTS               NAMES
88b0b089b522        zembutsu/centos6:httpd   /usr/sbin/httpd -D F   3 minutes ago       Up 3 minutes        80/tcp              focused_nobel

# docker-enter 88b0b089b522
bash-4.1# pwd ←ここからコンテナ操作
/
bash-4.1# exit ←終了
exit

なお、docker-enternsenterのラッパーであり、次の内容と同じ処理。

$ PID=$(docker inspect --format {{.State.Pid}} <コンテナ名かID>)
$ nsenter --target $PID --mount --uts --ipc --net --pid

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした