zoukankan      html  css  js  c++  java
  • nsenter工具进入docker容器

    对于运行在后台的Docker容器,我们经常需要做的事情是进入到容器中,docker为我们提供了docker exec 、docker attach 命令,并且还提供了nsenter工具,外部工具供我们使用。docker attach存在的问题是:当多个窗口同时attach到同一个容器时,所有的窗口都会同步的显示,假如其中的一个窗口发生阻塞时,其它的窗口也会阻塞,docker attach命令可以说是最不方便的进入后台docker容器的方法。docker exec命令是在docker 1.3之后增加的一个比docker attach命令更加方便的命令。和docker exec差不多方便的命令是nsenter工具。

     


    $ cd /tmp;
    $ wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz 
    $tar -zxf util-linux-2.24.tar.gz
    $cd util-linux-2.24 $ ./configure --without-ncurses $ make nsenter && sudo cp nsenter /usr/local/bin

    在使用nsenter命令之前需要获取到docker容器的进程,然后再使用nsenter工具进去到docker容器中,具体的使用方法如下:

    $ docker inspect -f {{.State.Pid}} 容器名或者容器id   #每一个容器都有.State.Pid,所以这个命令除了容器的id需要我们根据docker ps -a去查找,其他的全部为固定的格式
    $ nsenter --target 上面查到的进程id --mount --uts --ipc --net --pid  #输入该命令便进入到容器中

     通过此命令进入docker后,可以直接使用exit命令退出docker, 而不需要用ctrl+p+q退出

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

  • 相关阅读:
    jquery 图片播放器插件(支持自己设定时间,自己设定是否自动播放)
    ie6下bug集合(二)li之间空隙bug
    大小不固定的图片和多行文字的垂直水平居中
    解决IE6下 position的fixed定位问题
    C# 编写不安全代码
    委托和事件的使用
    如何删除win7桌面的库和家庭组图标
    gcc g++ 区别
    Java 访问注册表
    C# 通过反射类动态调用DLL方法
  • 原文地址:https://www.cnblogs.com/devilwind/p/7230564.html
Copyright © 2011-2022 走看看