nsenter工具进入docker容器

参考:http://blog.sina.com.cn/s/blog_149e9d2ec0102x0fe.html
nsenter工具进入docker容器

1. nsenter概述

      对于运行在后台的Docker容器,我们经常需要做的事情是进入到容器中,docker为我们提供了docker exec 、docker attach 命令,并且还提供了nsenter工具,外部工具供我们使用

。docker attach存在的问题是:当多个窗口同时attach到同一个容器时,所有的窗口都会同步的显示,假如其中的一个窗口发生阻塞时,其它的窗口也会阻塞,docker attach命令可以说

是最不方便的进入后台docker容器的方法。docker exec命令是在docker 1.3之后增加的一个比docker attach命令更加方便的命令。和docker exec差不多方便的命令是nsenter工具。


2. nsenter安装

      输入如下命令,完成nsenter的安装。
$ cd /tmp;
$ curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz | tar -zxf-; cd util-linux-2.24;
$ ./configure   --without-ncurses
$ make nsenter && sudo cp nsenter /usr/local/bin


3. nsenter使用
      在使用nsenter命令之前需要获取到docker容器的进程,然后使用nsenter工具进去到docker容器中,具体的使用方法如下:
$ docker inspect -f {{.State.Pid}} 容器名或者容器id    #每一个容器都有.State.Pid,所以这个命令除了容器的id需要我们根据docker ps -a去查找,其他的全部为固定的格式
$ nsenter --target 上面查到的进程id --mount --uts --ipc --net --pid   #输入该命令便进入到容器中

解释nsenter指令中进程id之后的参数的含义: 
* –mount参数是进去到mount namespace中 
* –uts参数是进入到uts namespace中 
* –ipc参数是进入到System V IPC namaspace中 
* –net参数是进入到network namespace中 
* –pid参数是进入到pid namespace中 
* –user参数是进入到user namespace中


在Linux中,最爱简单的查看指定命令参数含义的办法是在终端中输入:
$ nsenter --help   #会回显所有与该命令有关的参数
$ man nsenter   #能查到更加详细的使用示例和参数说明

要想知道更加详细的资料参考文献:http://www.oschina.net/translate/enter-docker-container?print
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值