- Usage: docker attach [OPTIONS] CONTAINER
- Attach to a running container
- Options:
- –detach-keys string Override the key sequence for detaching a container
- –help Print usage
- –no-stdin Do not attach STDIN
- –sig-proxy Proxy all received signals to the process (default true)
docker attach命令可以通过使用容器的ID或名称来附着到一个运行中的容器,来查看它的输出或以交互方式控制它。可以同时多次附着同一个容器进程,屏幕共享风格或快速查看进程的进度。
要停止一个容器,使用CTRL-c。此键序列向容器发送SIGKILL信号。如果–sig-proxy为true(默认),CTRL-c发送SIGINT到容器。可以使用CTRL-p CTRL-q键序列与容器分离。
当附着到一个启用tty的容器时,将禁止重定向docker attach命令的标准输入。
当客户諯使用docker attach连接到容器的stdio时,docker使用大约1MB的内存缓冲来最大化应用的吞吐量。如果填充了缓冲,API连接的速度将开始影响进程输出的写入速度,因为如果API连接速度慢时,缓冲区无法及时释放,导致进程等待缓冲区。这里其它应用如SSH类似。所以,不推荐使用attach命令来查看那些运行在前台,产生大量输出进程的日志。而是用户应该使用docker logs命令来查看这些日志。
示例
- $ 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