docker attach
docker attach
描述
将本地标准输入,输出和错误流附加到正在运行的容器
使用
docker attach [OPTIONS] CONTAINER
备选方案
名称,缩写 | 默认 | 描述 |
---|---|---|
--detach-keys | | 重写用于分离容器的密钥序列 |
--no-stdin | false | 不附加 STDIN |
--sig-proxy | true | 代理所有接收到的信号到过程中 |
父命令
命令 | 描述 |
---|---|
docker | 泊坞窗 CLI 的基本命令。 |
扩展描述
用于docker attach
使用容器的ID或名称将终端的标准输入,输出和错误(或三者的任意组合)附加到正在运行的容器。这允许您查看其正在进行的输出或以交互方式控制它,就好像命令直接在您的终端中运行一样。
注:
大attach
命令将显示ENTRYPOINT/CMD
过程。这可能看起来像是挂起附加命令,而实际上,进程可能根本没有与终端进行交互。
您可以同时从Docker主机上的不同会话多次附加到同一包含的进程。
要停止容器,请使用CTRL-c
。该密钥序列发送SIGKILL
到容器。如果--sig-proxy
为真(默认),则CTRL-c
发送一个SIGINT
到容器。您可以从容器中分离并使用CTRL-p CTRL-q
键序列保持运行。
注:
在容器中作为PID 1运行的进程被Linux专门处理:它忽略任何具有默认操作的信号。因此,进程不会在SIGINT
或SIGTERM
除非它被编码来这么做。
禁止在附加到启用tty的容器(即:启动时-t
)时重定向docker attach
命令的标准输入。
当客户端连接到容器的Stdio时,请使用docker attach
,Docker使用~1MB内存缓冲区来最大化应用程序的吞吐量。如果填充了此缓冲区,API连接的速度将开始影响进程输出写入速度。这与其他应用程序类似,如SSH。因此,不建议运行性能关键的应用程序,这些应用程序在前台通过缓慢的客户端连接生成大量输出。相反,用户应该使用docker logs
命令来访问日志。
重写分离序列
如果需要,可以为DECHACH配置一个覆盖Docker密钥序列。如果Docker默认序列与用于其他应用程序的密钥序列发生冲突,则此操作非常有用。有两种方法可以定义您自己的分离密钥序列,作为每个容器覆盖或作为整个配置的配置属性。
若要重写单个容器的序列,请使用--detach-keys="<sequence>"带docker attach命令。的格式<sequence>不是一封信阿-Z,或ctrl-与下列任何一项相结合:
a-z
(一个小写字母字符)
@
(在标志处)
[
(左括号)
\\
(两个反向斜线)
_
(下划线)
^
(脱字号;补注号)
这些a
,ctrl-a
,X
,或ctrl-\\
的值是有效的密钥序列的所有实施例。要为所有容器配置不同的配置默认密钥序列,请参阅配置文件
部分。
示例
附加到正在运行的容器并从中分离
$ docker run -d --name topdemo ubuntu /usr/bin/top -b
$ docker attach topdemo
top - 02:05:52 up 3:05, 0 users, load average: 0.01, 0.02, 0.05
Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 373572k total, 355560k used, 18012k free, 27872k buffers
Swap: 786428k total, 0k used, 786428k free, 221740k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 17200 1116 912 R 0 0.3 0:00.03 top
top - 02:05:55 up 3:05, 0 users, load average: 0.01, 0.02, 0.05
Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 373572k total, 355244k used, 18328k free, 27872k buffers
Swap: 786428k total, 0k used, 786428k free, 221776k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 17208 1144 932 R 0 0.3 0:00.03 top
top - 02:05:58 up 3:06, 0 users, load average: 0.01, 0.02, 0.05
Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.3%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 373572k total, 355780k used, 17792k free, 27880k buffers
Swap: 786428k total, 0k used, 786428k free, 221776k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 17208 1144 932 R 0 0.3 0:00.03 top
^C$
$ echo $?
0
$ docker ps -a | grep topdemo
7998ac8581f9 ubuntu:14.04 "/usr/bin/top -b" 38 seconds ago Exited (0) 21 seconds ago topdemo
获取容器命令的退出代码
在第二个示例中,您可以看到bash
进程返回的退出代码也被docker attach
命令返回给其调用者:
$ docker run --name test -d -it debian
275c44472aebd77c926d4527885bb09f2f6db21d878c75f0a1c212c03d3bcfab
$ docker attach test
root@f38c87f2a42d:/# exit 13
exit
$ echo $?
13
$ docker ps -a | grep test
275c44472aeb debian:7 "/bin/bash" 26 seconds ago Exited (13) 17 seconds ago test