Docker - 終端交互


進入容器交互終端

使用docker attach命令進入容器交互終端。
注意:如果多個窗口同時attach到同一個容器,那么所有窗口都會同步顯示。如果某個窗口因命令阻塞時,那么其他窗口將無法執行操作。

[root@CentOS-7 ~]# docker images ubuntu
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/ubuntu    latest              6a2f32de169d        13 days ago         117.2 MB
[root@CentOS-7 ~]# 
[root@CentOS-7 ~]# docker run --name test -idt ubuntu
6a0e7b067fe3122ad23b34d84653ca0872cda44efff903198f41e76e017e4a26
[root@CentOS-7 ~]# 
[root@CentOS-7 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
6a0e7b067fe3        ubuntu              "/bin/bash"         7 seconds ago       Up 7 seconds                            test
[root@CentOS-7 ~]# 
[root@CentOS-7 ~]# docker attach test
root@6a0e7b067fe3:/# 
root@6a0e7b067fe3:/# exit
exit
[root@CentOS-7 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@CentOS-7 ~]# 

退出容器交互終端

通過Ctrl-p和Ctrl-q鍵,可以退出正在交互的容器終端,此時容器不會終止。
特別注意:通過exit命令或Ctrl+d鍵來退出容器終端時,所創建的容器立刻終止。

[root@CentOS-7 ~]# docker run --name test -it ubuntu bash
root@a445204315f3:/# 
root@a445204315f3:/#    # 先后按Ctrl-p和Ctrl-q鍵
[root@CentOS-7 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a445204315f3        ubuntu              "bash"              36 seconds ago      Up 34 seconds                           test
[root@CentOS-7 ~]# 

使用nsenter工具進入容器交互終端

nsenter啟動一個新的shell進程(默認是/bin/bash), 同時會把這個新進程切換到和目標(target)進程相同的命名空間,相當於進入了容器內部。
nsenter包含在util-linux 2.23版本之后,而且運行需要root權限。
特別注意:通過exit命令或Ctrl+d鍵來退出容器終端時,所創建的容器不會終止。

[root@CentOS-7 ~]# rpm -qa |grep util-linux
util-linux-2.23.2-26.el7.x86_64
[root@CentOS-7 ~]# 
[root@CentOS-7 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a445204315f3        ubuntu              "bash"              2 hours ago         Up 2 hours                              test
[root@CentOS-7 ~]# 
[root@CentOS-7 ~]# PID=$(docker inspect --format "{{ .State.Pid }}" test)
[root@CentOS-7 ~]# 
[root@CentOS-7 ~]# nsenter --target $PID --uts --ipc --net --pid
[root@a445204315f3 ~]# 
[root@a445204315f3 ~]# exit
logout
[root@CentOS-7 ~]# 
[root@CentOS-7 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a445204315f3        ubuntu              "bash"              2 hours ago         Up 2 hours                              test
[root@CentOS-7 ~]# 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM