4.3 进入容器

时间 : 16-03-09 栏目 : linux精讲 作者 : 老薛 评论 : 0 点击 : 1,100 次

在使用-d 参数时,容器启动后会进入后台,用户无法看到容器中的信息。某些时候如果需要进入容器进行操作,有多种方法,包括使用docker  attach 命令,docker  exec命令,以及nsenter工具等。

attach命令

docker  attach Docker 自带的命令。下面示例如何使用该命令:

[root@dockers ~]# docker run -t -i -h
docker001 centos:6 /bin/bash

[root@dockers ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

7d2c228aad49        centos:6            "/bin/bash"         12 seconds ago      Up 11 seconds                           dreamy_almeida

[root@dockers ~]# docker attach dreamy_almeida

[root@docker001 /]#

但是使用attach 命令有时后并不方便。当多个窗口同时attach到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其它窗口也无法进行操作了。

exec 命令

Docker 1.3版本起,提供了一个更加方便的工具exec,可以直接在容器内运行命令。例如进入到刚刚创建的容器中,并启动一个bash

[root@dockers ~]# docker exec -ti
14fcac75d16f  /bin/bash

[root@docker001 /]#

nsenter工具

nsenter工具在util-linux2.23版本后包含。如果系统中util-linux包没有该命令,可以按照下面的方法从源码安装:

[root@dockers ~]# cd /home/xuekun/

[root@dockers util-linux-2.24]# wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz

[root@dockers util-linux-2.24]#./configure
--without-ncurses

[root@dockers util-linux-2.24]#make nsenter
&& cp nsenter /usr/local/bin

为了使用nsenter连接到容器,还需要找到容器的进程的PID,可以通过下面的命令获取:

PID=$(docker inspec --format "{{
.State.Pid}}" <container>)

通过这个PID,就可以连接到这个容器:

nsenter --target  $PID --mount --uts --ipc --net --pid

以下是完整例子:

[root@dockers util-linux-2.24]# PID=$(docker
inspect --format "{{ .State.Pid }}" 7ba09fc75f1d )

[root@dockers util-linux-2.24]# echo $PID

3310

[root@dockers util-linux-2.24]# nsenter
--target 3310 --mount --uts --ipc --net --pid

[root@docker001 /]#

本文标签

除非注明,文章均为( 老薛 )原创,转载请保留链接: http://www.bdkyr.com/operation/1298.html

4.3 进入容器:等您坐沙发呢!

发表评论

2 + 0 = ?


博主微信号,很高兴为您提供帮助

随便看看

为您推荐

0