码头工人附加
描述
将本地标准输入,输出和错误流附加到正在运行的容器
用法
$ docker attach [OPTIONS] CONTAINER
扩展说明
用于docker attach使用容器的ID或名称将终端的标准输入,输出和错误(或这三者的任意组合)附加到正在运行的容器上。这使您可以查看其正在进行的输出或以交互方式对其进行控制,就像命令直接在您的终端中运行一样。
注意: 该
attach命令将显示ENTRYPOINT/CMD进程的输出。实际上,当进程可能当时根本不与终端进行交互时,这似乎好像挂起了attach命令。
您可以从Docker主机上的不同会话同时多次附加到相同的包含进程。
要停止容器,请使用CTRL-c。该密钥序列发送SIGKILL到容器。如果--sig-proxy为true(默认值),则将CTRL-ca发送SIGINT到容器。如果容器使用-i和来运行-t,则可以从容器中分离出来,并使用CTRL-p CTRL-q键序列使其保持运行状态。
注意: Linux会特别处理在容器内以PID 1运行的进程:它会忽略具有默认操作的任何信号。因此,该过程将不会终止,
SIGINT或者SIGTERM除非被编码为终止该过程。
禁止docker attach在附加到启用了tty的容器时(例如:使用启动-t)重定向命令的标准输入。
使用客户端将客户端连接到容器的stdio时docker attach,Docker使用约1MB的内存缓冲区来最大化应用程序的吞吐量。如果此缓冲区已满,则API连接的速度将开始对进程输出的写入速度产生影响。这类似于SSH之类的其他应用程序。因此,不建议运行性能关键的应用程序,这些应用程序通过缓慢的客户端连接在前台生成大量输出。而是,用户应使用
docker logs命令来访问日志。
覆盖分离顺序
如果需要,您可以配置覆盖Docker密钥序列以进行分离。如果Docker默认序列与您用于其他应用程序的密钥序列冲突,这将很有用。定义您自己的分离键序列的方法有两种,一种是按容器覆盖,另一种是整个配置中的配置属性。
要覆盖单个容器的顺序--detach-keys="<sequence>",请在docker attach命令中使用该
标志。的格式为<sequence>字母[aZ]或ctrl-以下任意一项的组合:
- a-z(单个小写字母字符)
- @(在标志处)
- [(左括号)
- \\(两个反斜杠)
- _(下划线)
- ^(插入符号)
这些a,ctrl-a,X,或ctrl-\\的值是有效的密钥序列的所有实施例。要为所有容器配置不同的配置默认键序列,请参阅“配置文件”部分。
有关此命令的示例用法,请参阅下面的示例部分。
选项
| 名称,简写 | 默认 | 描述 | 
| --detach-keys | 覆盖分离容器的键序列 | |
| --no-stdin | 不要附上STDIN | |
| --sig-proxy | true | 代理所有接收到的信号到进程 | 
例子
连接到正在运行的容器或从容器中分离
$ 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
上级命令
| 命令 | 描述 | 
|---|---|
| 码头工人 | Docker CLI的基本命令。 |