大家好,欢迎再次光临,我是你们的朋友全栈君。
当我们使用-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…]。
其中较为重要的参数包括:
·-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
<code>
要使用nsenter连接到容器,首先需要找到容器进程的PID,可以通过以下命令获取:
<p>代码语言:javascript代码运行次数:0<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="<a href="https://www.php.cn/link/c9041cfd2a40932691855abd98fd219a">http://www.w3.org/2000/svg"><path</a> d="M6.66666 10.9999L10.6667 7.99992L6.66666 4.99992V10.9999ZM7.99999 1.33325C4.31999 1.33325 1.33333 4.31992 1.33333 7.99992C1.33333 11.6799 4.31999 14.6666 7.99999 14.6666C11.68 14.6666 14.6667 11.6799 14.6667 7.99992C14.6667 4.31992 11.68 1.33325 7.99999 1.33325ZM7.99999 13.3333C5.05999 13.3333 2.66666 10.9399 2.66666 7.99992C2.66666 5.05992 5.05999 2.66659 7.99999 2.66659C10.94 2.66659 13.3333 5.05992 13.3333 7.99992C13.3333 10.9399 10.94 13.3333 7.99999 13.3333Z" fill="currentcolor"></path></svg>运行<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="<a href="https://www.php.cn/link/c9041cfd2a40932691855abd98fd219a">http://www.w3.org/2000/svg"><path</a> clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>复制<code>javascript PID=$(docker inspect --format "{ { .State.Pid }}" )</code></pre><p>有了这个PID,就可以连接到容器:</p><p>代码语言:javascript代码运行次数:0<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="M6.66666 10.9999L10.6667 7.99992L6.66666 4.99992V10.9999ZM7.99999 1.33325C4.31999 1.33325 1.33333 4.31992 1.33333 7.99992C1.33333 11.6799 4.31999 14.6666 7.99999 14.6666C11.68 14.6666 14.6667 11.6799 14.6667 7.99992C14.6667 4.31992 11.68 1.33325 7.99999 1.33325ZM7.99999 13.3333C5.05999 13.3333 2.66666 10.9399 2.66666 7.99992C2.66666 5.05992 5.05999 2.66659 7.99999 2.66659C10.94 2.66659 13.3333 5.05992 13.3333 7.99992C13.3333 10.9399 10.94 13.3333 7.99999 13.3333Z" fill="currentcolor"></path></svg>运行<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>复制</code>javascript
$ nsenter --target $PID --mount --uts --ipc --net --pid</p><pre class="brush:php;toolbar:false;"><code></p><p>发布者:全栈程序员栈长,转载请注明出处:<a href="https://www.php.cn/link/3a8fcf2a8e88e290cf69a9b95726187a">https://www.php.cn/link/3a8fcf2a8e88e290cf69a9b95726187a</a></code>以上就是docker容器的启动(docker容器启动时间)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号