?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
將本地標(biāo)準(zhǔn)輸入,輸出和錯(cuò)誤流附加到正在運(yùn)行的容器
docker attach [OPTIONS] CONTAINER
名稱(chēng),縮寫(xiě) | 默認(rèn) | 描述 |
---|---|---|
--detach-keys | 重寫(xiě)用于分離容器的密鑰序列 | |
--no-stdin | false | 不附加 STDIN |
--sig-proxy | true | 代理所有接收到的信號(hào)到過(guò)程中 |
命令 | 描述 |
---|---|
docker | 泊塢窗 CLI 的基本命令。 |
用于docker attach
使用容器的ID或名稱(chēng)將終端的標(biāo)準(zhǔn)輸入,輸出和錯(cuò)誤(或三者的任意組合)附加到正在運(yùn)行的容器。這允許您查看其正在進(jìn)行的輸出或以交互方式控制它,就好像命令直接在您的終端中運(yùn)行一樣。
注:大
attach
命令將顯示ENTRYPOINT/CMD
過(guò)程。這可能看起來(lái)像是掛起附加命令,而實(shí)際上,進(jìn)程可能根本沒(méi)有與終端進(jìn)行交互。
您可以同時(shí)從Docker主機(jī)上的不同會(huì)話(huà)多次附加到同一包含的進(jìn)程。
要停止容器,請(qǐng)使用CTRL-c
。該密鑰序列發(fā)送SIGKILL
到容器。如果--sig-proxy
為真(默認(rèn)),則CTRL-c
發(fā)送一個(gè)SIGINT
到容器。您可以從容器中分離并使用CTRL-p CTRL-q
鍵序列保持運(yùn)行。
注:在容器中作為PID 1運(yùn)行的進(jìn)程被Linux專(zhuān)門(mén)處理:它忽略任何具有默認(rèn)操作的信號(hào)。因此,進(jìn)程不會(huì)在
SIGINT
或SIGTERM
除非它被編碼來(lái)這么做。
禁止在附加到啟用tty的容器(即:?jiǎn)?dòng)時(shí)-t
)時(shí)重定向docker attach
命令的標(biāo)準(zhǔn)輸入。
當(dāng)客戶(hù)端連接到容器的Stdio時(shí),請(qǐng)使用docker attach
,Docker使用~1MB內(nèi)存緩沖區(qū)來(lái)最大化應(yīng)用程序的吞吐量。如果填充了此緩沖區(qū),API連接的速度將開(kāi)始影響進(jìn)程輸出寫(xiě)入速度。這與其他應(yīng)用程序類(lèi)似,如SSH。因此,不建議運(yùn)行性能關(guān)鍵的應(yīng)用程序,這些應(yīng)用程序在前臺(tái)通過(guò)緩慢的客戶(hù)端連接生成大量輸出。相反,用戶(hù)應(yīng)該使用docker logs
命令來(lái)訪(fǎng)問(wèn)日志。
如果需要,可以為DECHACH配置一個(gè)覆蓋Docker密鑰序列。如果Docker默認(rèn)序列與用于其他應(yīng)用程序的密鑰序列發(fā)生沖突,則此操作非常有用。有兩種方法可以定義您自己的分離密鑰序列,作為每個(gè)容器覆蓋或作為整個(gè)配置的配置屬性。
若要重寫(xiě)單個(gè)容器的序列,請(qǐng)使用--detach-keys="<sequence>"
帶docker attach
命令。的格式<sequence>
不是一封信阿-Z,或ctrl-
與下列任何一項(xiàng)相結(jié)合:
a-z
(一個(gè)小寫(xiě)字母字符)
@
(在標(biāo)志處)
[
(左括號(hào))
\\
(兩個(gè)反向斜線(xiàn))
_
(下劃線(xiàn))
^
(脫字號(hào);補(bǔ)注號(hào))
這些a
,ctrl-a
,X
,或ctrl-\\
的值是有效的密鑰序列的所有實(shí)施例。要為所有容器配置不同的配置默認(rèn)密鑰序列,請(qǐng)參閱配置文件部分。
$ 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.05Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombieCpu(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
在第二個(gè)示例中,您可以看到bash
進(jìn)程返回的退出代碼也被docker attach
命令返回給其調(diào)用者:
$ 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