023、兩種進入容器的方法(2019-01-16 週三)

三角形發表於2019-01-16
 
 
我們經常需要進到容器裡面去做一些工作,比如檢視日誌、除錯、啟動其他程式等。
 
有兩種進入容器的方法  attach 和 exec
 
docker attach
 
使用快捷鍵 CTRL + P + Q 退出,但是不會結束容器(不加 -it 該快捷鍵無效)
不要使用 CTRL + C 強行退出,這樣會導致容器停止
 
root@docker-lab:~# docker run -d -it busybox ping 127.0.0.1
6a5bf51cba2e34da3c464cd90ec4c96d94728dab3500420763f0e197a54e827f
root@docker-lab:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
6a5bf51cba2e        busybox             "ping 127.0.0.1"    6 seconds ago       Up 5 seconds                            epic_kilby
root@docker-lab:~# docker attach 6a5bf51cba2e34da3c464cd90ec4c96d94728dab3500420763f0e197a54e827f
64 bytes from 127.0.0.1: seq=20 ttl=64 time=0.048 ms
64 bytes from 127.0.0.1: seq=21 ttl=64 time=0.061 ms
64 bytes from 127.0.0.1: seq=22 ttl=64 time=0.059 ms
64 bytes from 127.0.0.1: seq=23 ttl=64 time=0.062 ms
read escape sequence    [ CTRL + P + Q ]
root@docker-lab:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
6a5bf51cba2e        busybox             "ping 127.0.0.1"    4 minutes ago       Up 4 minutes                            epic_kilby
 
 
docker exec
 
-it 會先建一個bash終端,用完之後執行exit退出即可,但不會關閉容器
 
root@docker-lab:~# docker exec -it 6a5bf51cba2e sh
/ # w
USER        TTY        IDLE    TIME         HOST
/ # ps -ef | grep ping
    1 root      0:00 ping 127.0.0.1
/ # exit
root@docker-lab:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
6a5bf51cba2e        busybox             "ping 127.0.0.1"    About an hour ago   Up About an hour                        epic_kilby
 
 
attach VS exec
 
1、attach直接進入容器啟動命令的終端,不會啟動新的終端,所以進入容器後可以直接看到ping的內容
2、exec則是在容器中新開一個終端並且可以啟動新的程式
3、檢視容器啟動命令的輸出使用attach,其他情況使用exec
 
docker logs
 
docker logs -f ID 有類似tail -f 的效果,持續在螢幕上列印啟動命令的結果
 
root@docker-lab:~# docker logs 6a5bf51cba2e | head
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: seq=0 ttl=64 time=0.067 ms
64 bytes from 127.0.0.1: seq=1 ttl=64 time=0.057 ms
64 bytes from 127.0.0.1: seq=2 ttl=64 time=0.048 ms
64 bytes from 127.0.0.1: seq=3 ttl=64 time=0.055 ms
64 bytes from 127.0.0.1: seq=4 ttl=64 time=0.057 ms
64 bytes from 127.0.0.1: seq=5 ttl=64 time=0.055 ms
64 bytes from 127.0.0.1: seq=6 ttl=64 time=0.054 ms
64 bytes from 127.0.0.1: seq=7 ttl=64 time=0.051 ms
64 bytes from 127.0.0.1: seq=8 ttl=64 time=0.049 ms
 
 
 
 
 
 
 
 
 
 
 
end

相關文章