每天5分鐘玩轉 Docker 容器技術(23)
阿新 • • 發佈:2019-01-02
我們經常需要進到容器裡去做一些工作,比如檢視日誌、除錯、啟動其他程序等。有兩種方法進入容器:attach 和 exec。
docker attach
通過 docker attach
可以 attach 到容器啟動命令的終端,例如:
這次我們通過 “長ID” attach 到了容器的啟動命令終端,之後看到的是echo
每隔一秒列印的資訊。
注:可通過 Ctrl+p 然後 Ctrl+q 組合鍵退出 attach 終端。
docker exec
通過 docker exec
進入相同的容器:
說明如下:
① -it
以互動模式開啟 pseudo-TTY,執行 bash,其結果就是打開了一個
bash 終端。
② 進入到容器中,容器的 hostname 就是其 “短ID”。
③ 可以像在普通 Linux 中一樣執行命令。ps -elf
顯示了容器啟動程序while
以及當前的 bash
程序。
④ 執行 exit
退出容器,回到 docker host。
docker exec -it <container> bash|sh
是執行
exec 最常用的方式。
attach VS exec
attach 與 exec 主要區別如下:
-
attach 直接進入容器 啟動命令 的終端,不會啟動新的程序。
-
exec 則是在容器中開啟新的終端,並且可以啟動新的程序。
-
如果想直接在終端中檢視啟動命令的輸出,用 attach;其他情況使用 exec。
當然,如果只是為了檢視啟動命令的輸出,可以使用 docker logs
命令:
-f
的作用與 tail
-f
類似,能夠持續列印輸出。
下一節聊聊執行容器的最佳實踐。