docker attach

描述

docker attach :连接到正在运行中的容器。

用法

docker attach [OPTIONS] CONTAINER

要attach上去的容器必须正在运行,可以同时连接上同一个container来共享屏幕(与screen命令的attach类似),也就是说当我们打开两个窗口用attach进入同一个容器的时候,两个窗口显示的内容是一致的。

当我们输入exit来退出容器时,容器会被关闭,当我们直接关系shell窗口,容器则不会被关闭,这也就导致操作上的一些麻烦,所以没有特殊的要求,建义还是使用 docker exec 来操作容器。

官方文档中说attach后可以通过CTRL-C来detach,但实际上经过我的测试,如果container当前在运行bash,CTRL-C自然是当前行的输入,没有退出;如果container当前正在前台运行进程,如输出nginx的access.log日志,CTRL-C不仅会导致退出容器,而且还stop了。这不是我们想要的,detach的意思按理应该是脱离容器终端,但容器依然运行。好在attach是可以带上--sig-proxy=false来确保CTRL-D或CTRL-C不会关闭容器。

选项

  • --detach-keys    覆写脱离容器的快捷键

  • --no-stdin    不打开输入功能

  • --sig-proxy    代理所有进程所接收的信号,默认true 

实例

容器mynginx将访问日志指到标准输出,连接到容器查看访问信息。

cssjs@cssjs:~$ docker attach --sig-proxy=false mynginx
192.168.239.1 - - [10/Jul/2016:16:54:26 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-"