进入正在运行的容器四种方法
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