先计算容器的PID: PID=$(docker inspect --format {{.State.Pid}} <container_name_or_ID>) solumuser@ubuntu14044:~/devstack$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e6551c6bf7e7 98b7ac1054f74e97840618198d699cec-java_app-20160517t175809236072150-1713a757d34ca340211473f322e0fc2406d3f65d "/bin/bash -c 'sourc 16 hours ago Up 16 hours nova-148a593f-d75c-4ac8-8cad-95c2ee7ffefd solumuser@ubuntu14044:~/devstack$ PID=$(docker inspect --format {{.State.Pid}} nova-148a593f-d75c-4ac8-8cad-95c2ee7ffefd ) 进入容器: nsenter --target $PID --mount --uts --ipc --net --pid solumuser@ubuntu14044:~/devstack$ sudo nsenter --target $PID --mount --uts --ipc --net --pid root@instance-0000000e:/# pwd / root@instance-0000000e:/# ls app bin boot dev etc home lib lib64 media mnt opt proc root run sbin solum srv sys tmp usr var #!/bin/sh if [ -e $(dirname "$0")/nsenter ]; then # with boot2docker, nsenter is not in the PATH but it is in the same folder NSENTER=$(dirname "$0")/nsenter else NSENTER=nsenter fi if [ -z "$1" ]; then echo "Usage: `basename "$0"` CONTAINER [COMMAND [ARG]...]" echo "" echo "Enters the Docker CONTAINER and executes the specified COMMAND." echo "If COMMAND is not specified, runs an interactive shell in CONTAINER." else PID=$(docker inspect --format "{{.State.Pid}}" "$1") if [ -z "$PID" ]; then exit 1 fi shift OPTS="--target $PID --mount --uts --ipc --net --pid --" if [ -z "$1" ]; then # No command given. # Use su to clear all host environment variables except for TERM, # initialize the environment variables HOME, SHELL, USER, LOGNAME, PATH, # and start a login shell. "$NSENTER" $OPTS su - root else # Use env to clear all host environment variables. "$NSENTER" $OPTS env --ignore-environment -- "$@" fi fi
使用nsenter进入docker container
猜你喜欢
转载自886.iteye.com/blog/2322476
今日推荐
周排行