首页 > 代码库 > 不通过SSH接入Docker

不通过SSH接入Docker

翻译自:http://www.sebastien-han.fr/blog/2014/01/27/access-a-container-without-ssh/

先运行一个简单的memcache容器:

1
2
3
4
5
6
$sudo docker run-d-p11211 bacongobbler/memcachedmemcached /usr/bin/memcached-m64 -p11211 -umemcache -l0.0.0.0
 
$sudo docker ps
CONTAINER ID        IMAGE                                      COMMAND                CREATED            STATUS              PORTS                      NAMES
0a9856723f90        192.168.0.127:5042/memcached:latest        memcached/usr/bin/m  2 secondsago       Up2 seconds        0.0.0.0:49153->11211/tcp  pensive_pasteur
 

获得运行在docker中进程的pid:

1
2
3
root@docker:~# ps faux |grep memcached
syslog   29123  0.0  0.0323216  1184?        Sl  22:40  0:00          \_memcached /usr/bin/memcached-m64 -p11211 -umemcache -l0.0.0.0
 

安装nsenter命令(util-linux包中),需要2.23release的linux。

1
2
3
4
5
6
7
$wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.bz2
$ bzip2-d-cutil-linux-2.24.tar.bz2| tarxvf -
$cd util-linux-2.24/
$ sudo./configure--without-ncurses
$make nsenter
$ cpnsenter /usr/local/bin
 

然后,我们连接进入docker容器。

1
2
3
4
5
6
7
$sudo nsenter-m-u-i-n-p-t29123 /bin/sh
# ps faux
USER      PID %CPU%MEM    VSZ  RSS TTY      STATSTART   TIME COMMAND
root        11  0.0  0.0  4396   608?        S    22:41  0:00/bin/sh
root        12  0.0  0.0  15272  1100?        R+  22:41  0:00  \_ps faux
memcache     1  0.0  0.0323216  1184?        Sl  22:40  0:00memcached /usr/bin/memcached-m64 -p11211 -umemcache -l0.0.0.0
 

不通过SSH接入Docker