非常教程

Docker 17参考手册

引擎: CLI | Engine: CLI

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专门处理:它忽略任何具有默认操作的信号。因此,进程不会在SIGINTSIGTERM除非它被编码来这么做。

禁止在附加到启用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 (一个小写字母字符)
  • @ (在标志处)
  • [ (左括号)
  • \\ (两个反向斜线)
  • _ (下划线)
  • ^ (脱字号;补注号)

这些actrl-aX,或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

引擎: CLI | Engine: CLI相关

1.守护进程CLI参考(dockerd)(引擎) | Daemon CLI reference (dockerd) (Engine)
2.docker
3.docker build
4.docker checkpoint
5.docker checkpoint create
6.docker checkpoint ls
7.docker checkpoint rm
8.docker commit
9.docker config
10.docker config create
11.docker config inspect
12.docker config ls
13.docker config rm
14.docker container
15.docker container attach
16.docker container commit
17.docker container cp
18.docker container create
19.docker container diff
20.docker container exec
21.docker container export
22.docker container inspect
23.docker container kill
24.docker container logs
25.docker container ls
26.docker container pause
27.docker container port
28.docker container prune
29.docker container rename
30.docker container restart
31.docker container rm
32.docker container run
33.docker container start
34.docker container stats
35.docker container stop
36.docker container top
37.docker container unpause
38.docker container update
39.docker container wait
40.docker cp
41.docker create
42.docker deploy
43.docker diff
44.docker events
45.docker exec
46.docker export
47.docker history
48.docker image
49.docker image build
50.docker image history
51.docker image import
52.docker image inspect
53.docker image load
54.docker image ls
55.docker image prune
56.docker image pull
57.docker image push
58.docker image rm
59.docker image save
60.docker image tag
61.docker images
62.docker import
63.docker info
64.docker inspect
65.docker kill
66.docker load
67.docker login
68.docker logout
69.docker logs
70.docker network
71.docker network connect
72.docker network create
73.docker network disconnect
74.docker network inspect
75.docker network ls
76.docker network prune
77.docker network rm
78.docker node
79.docker node demote
80.docker node inspect
81.docker node ls
82.docker node promote
83.docker node ps
84.docker node rm
85.docker node update
86.docker pause
87.docker plugin
88.docker plugin create
89.docker plugin disable
90.docker plugin enable
91.docker plugin inspect
92.docker plugin install
93.docker plugin ls
94.docker plugin push
95.docker plugin rm
96.docker plugin set
97.docker plugin upgrade
98.docker port
99.docker ps
100.docker pull
Docker 17

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

主页 https://docker.com/
源码 https://github.com/docker/docker
版本 17
发布版本 17.06