大家好,欢迎再次光临,我是你们的朋友全栈君。
当我们使用-d参数启动容器时,容器会进入后台运行,用户无法直接看到容器内的信息或进行操作。
此时,若需要进入容器进行操作,有多种方法可供选择,包括使用Docker官方提供的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命令 从Docker1.3.0版本开始,提供了更为便捷的exec命令,可在容器内直接执行任意命令。其基本格式为:
docker exec [-d|–detach] [–detach-keys[=[]]] [-i|–interactive] [–privileged] [-t|–tty] [-u|–user[=USER]] CONTAINER COMMAND [ARG…]。
其中较为重要的参数包括:
Angel工作室企业网站管理系统全DIV+CSS模板,中英文显示,防注入sql关键字过滤,多浏览器适应,完美兼容IE6-IE8,火狐,谷歌等符合标准的浏览器,模板样式集中在一个CSS样式中,内容与样式完全分离,方便网站设计人员开发模板与管理。系统较为安全,以设计防注入,敏感字符屏蔽。新闻,产品,单页独立关键字设计,提高搜索引擎收录。内置IIS测试,双击打启动预览网站 Angel工作室企业网站
·-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包没有此命令,可以按照以下方法从源码安装:
代码语言:javascript代码运行次数:0运行复制```javascript $ cd /tmp; curl https://www.php.cn/link/0958560bd45062d115debadb6bca3183 | tar -zxf-; cd util-linux-2.24;$ ./configure --without-ncurses$ make nsenter && cp nsenter /usr/local/bin
要使用nsenter连接到容器,首先需要找到容器进程的PID,可以通过以下命令获取:代码语言:javascript代码运行次数:0运行复制
javascript PID=$(docker inspect --format "{ { .State.Pid }}" )
有了这个PID,就可以连接到容器:
代码语言:javascript代码运行次数:0运行复制javascript $ nsenter --target $PID --mount --uts --ipc --net --pid
发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/3a8fcf2a8e88e290cf69a9b95726187a









