docker attach :连接到正在运行中的容器。
语法
docker attach [OPTIONS] CONTAINER
要attach上去的容器必须正在运行,可以同时连接上同一个container来共享屏幕(与screen命令的attach类似)。
官方文档中说attach后可以通过CTRL-C来detach,但实际上经过我的测试,如果container当前在运行bash,CTRL-C自然是当前行的输入,没有退出;如果container当前正在前台运行进程,如输出nginx的access.log日志,CTRL-C不仅会导致退出容器,而且还stop了。这不是我们想要的,detach的意思按理应该是脱离容器终端,但容器依然运行。好在attach是可以带上--sig-proxy=false来确保CTRL-D或CTRL-C不会关闭容器。
实例
容器mynginx将访问日志指到标准输出,连接到容器查看访问信息。
runoob@runoob:~$ 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" "-"
作用
进入容器正在执行的终端
语法格式
docker attach [OPTIONS] CONTAINER
options 说明
option | 说明 |
--detach-keys | 覆盖用于分离容器的键序列 |
--no-stdin | 不要附加标准输入 |
--sig-proxy | 所有接收到的信号代理到进程 |
实际栗子
docker run -d --name topdemo ubuntu /usr/bin/top -b docker attach topdemo
能看到 topdemo 容器内部正在执行的命令,1s 输出一次
和 docker exec 的区别
#进入当前容器后开启一个新的终端,可以在里面操作。(常用) docker exec # 进入容器正在执行某个命令的终端,不能在里面操作 docker attach