这篇“Docker进入启动容器的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Docker进入启动容器的方法”文章吧。
为那坡等地区用户提供了全套网页设计制作服务,及那坡网站建设行业解决方案。主营业务为成都做网站、网站制作、那坡网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息,也无法进行操作。
这个时候如果需要进入容器进行操作,有多种方法,包括使用官方的attach或exec命令,以及第三方的nsenter工具等。
1、attach命令
attach命令是docker自带的命令,命令格式为:
docker attach [–detach-keys[=[]]] [–no-stdin] [–sig-proxy[=true]] container
支持三个主要选项:
·–detach-keys[=[]]:指定退出attach模式的快捷键序列,默认是ctrl-p ctrl-q;
·–no-stdin=true|false:是否关闭标准输入,默认是保持打开;
·–sig-proxy=true|false:是否代理收到的系统信号给应用进程,默认为true。
但是,使用attach命令有时候并不方便。当多个窗口同时使用attach命令连到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。
2、exec命令
docker从1.3.0版本起提供了一个更加方便的exec命令,可以在容器内直接执行任意命令。该命令的基本格式为:
docker exec [-d|–detach] [–detach-keys[=[]]] [-i|–interactive] [–privileged] [-t|–tty] [-u|–user[=user]] container command [arg…]。
比较重要的参数有:
·-i,–interactive=true|false:打开标准输入接受用户输入命令,默认为false;
·–privileged=true|false:是否给执行命令以高权限,默认为false;
·-t,–tty=true|false:分配伪终端,默认为false;
·-u,–user=”“:执行命令的用户名或id。
例如进入到刚创建的容器中,并启动一个bash:
可以看到,一个bash终端打开了,在不影响容器内其他应用的前提下,用户可以很容易与容器进行交互。
通过指定-it参数来保持标准输入打开,并且分配一个伪终端。通过exec命令对容器执行操作是最为推荐的方式。
3、nsenter 工具
在util-linux软件包版本2.23+中包含nsenter工具。如果系统中的util-linux包没有该命令,可以按照下面的方法从源码安装:
$ 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 && cp nsenter /usr/local/bin
为了使用nsenter连接到容器,还需要找到容器进程的pid,可以通过下面的命令获取:
pid=$(docker inspect --format "{{ .state.pid }}" )
通过这个pid,就可以连接到这个容器:
$ nsenter --target $pid --mount --uts --ipc --net --pid
以上就是关于“Docker进入启动容器的方法”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注创新互联行业资讯频道。