进入正在运行的容器四种方法

1.使用attach命令
docker attach 容器名,attach 类似于vnc,操作会在同一个容器的多个会话界面同步显示,所有使用此方式进入容器的操作都是同步显示的,且使用exit退出后容器自动关闭,不推荐使用,需要进入到有shell环境的容器


2.使用exec命令
可以执行单次命令,以及进入容器,测试环境使用此方式,虽然exit退出容器还在运行,此为推荐方式

3.使用nsenter命令
nsenter命令需要通过PID进入到容器内部,且退出后仍然正常运行:不过需要事先使用docker inspect获取到容器的PID, 目前此方式使用较少,安装nsenter命令yum install util-linux

docker inspect -f {{.State.Pid}}  ba792a7e0747
20536
nsenter -t 20536 -m -u -i -n -p

4.脚本方式
cat docker-in.sh   执行权限chmod +x docker-in.sh
#!/bin/bash

docker_in(){
   NAME_ID=1
   PID=(docker inspect -f "{{.State.Pid}}" {NAME_ID})
   nsenter -t{PID} -m -u -i -n -p
}
docker_in $1

一、类似视频演示,两个终端同步。

docker attach 容器名,attach 类似于vnc,操作会在同一个容器的多个会话界面同步显示,所有使用此方式进入容器的操作都是同步显示的,且使用exit退出后容器自动关闭,不推荐使用,需要进入到有shell环境的容器

 

 

二、可以执行单次命令,以及进入容器,测试环境使用此方式,虽然exit退出容器还在运行,此为推荐方式

[root@localhost7B ~]# docker run  -it  -d  --name centosv1 centos
3ed03c02ea886980727e2494ae0e028e912aab64c956fdf0920daa5500e0fa77
[root@localhost7B ~]# 
[root@localhost7B ~]# 
[root@localhost7B ~]# 
[root@localhost7B ~]# docker exec  -it  centosv1  bash

 

三、nsenter命令需要通过PID进入到容器内部,且退出后仍然正常运行:不过需要事先使用docker inspect获取到容器的PID, 目前此方式使用较少,安装nsenter命令yum install util-linux

[root@localhost7B ~]#yum install util-linux
[root@localhost7B ~]# docker inspect  -f "{{.State.Pid}}"  centosv1 
66872

[root@localhost7B ~]# nsenter -t 66872  -m -u -i -n -p
[root@3ed03c02ea88 /]# ls

 

四、 脚本方式


[root@localhost7B ~]# docker run  -it  -d  --name centosv1 centos
[root@localhost7B ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3ed03c02ea88        centos              "/bin/bash"         42 minutes ago      Up 42 minutes                           centosv1
 
[root@localhost7B ~]# cat   docker-in.sh 
#!/bin/bash

docker_in(){
   NAME_ID=$1
   PID=$(docker inspect -f "{{.State.Pid}}" ${NAME_ID})
   nsenter -t ${PID} -m -u -i -n -p
}
docker_in $1

[root@localhost7B ~]# chmod a+x docker-in.sh [root@localhost7B ~]# ./docker-in.sh centosv1 [root@3ed03c02ea88 /]# [root@3ed03c02ea88 /]# cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 3ed03c02ea88 [root@3ed03c02ea88 /]# exit logout

 

posted @ 2022-10-17 14:56  yuanbangchen  阅读(3289)  评论(0编辑  收藏  举报