`

使用nsenter进入docker container

 
阅读更多
先计算容器的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

 

分享到:
评论

相关推荐

    dssh:使用 nsenter 为 Docker 容器提供终端。 外观和感觉就像一个 ssh 客户端

    dssh 使用 nsenter 为 Docker 容器提供终端。 外观和感觉就像一个 ssh 客户端。安装gem install dssh用法假设你有一个 docker 容器已经启动并且正在运行: dssh &lt; container&gt; 如果您只运行一个容器,则可以不使用...

    Docker圣经:大白话说Docker底层原理,6W字实现Docker自由.docx

    Docker 容器的四种进入方式分别是:使用 docker attach 进入 Docker 容器、使用 SSH 进入 Docker 容器、使用 nsenter 进入 Docker 容器和使用 docker exec 进入 Docker 容器。 nsenter 是一个非常有用的工具,可以让...

    Create a docker container that contains a MATLAB install.zip

    Create a docker container that contains a MATLAB install

    Docker如何进入启动容器

    这个时候如果需要进入容器进行操作,有多种方法,包括使用官方的attach或exec命令,以及第三方的nsenter工具等。 1、attach命令 attach命令是Docker自带的命令,命令格式为: docker attach [–detach-keys[=...

    docker离线资源(包含container-selinux-2.9-4).rar

    docker安装部署依赖包container-selinux-2.9-4.el7.noarch.rpm,yum资源无法下载。

    Fortran并行数值计算软件Docker开发环境

    运行docker镜像(生成并进入容器) docker container run -it fortran_mpi_omp:latest /bin/bash 编译并测试 make && chmod +x ./test.sh && ./test.sh 基本使用 将宿主机目录挂载到容器并启动(举例):docker ...

    ubuntu20.04下docker及nvidia-docker安装包

    1)nvidia-docker:libnvidia-container1_1.4.0-1_amd64.deb ,libnvidia-container-dev_1.4.0-1_amd64.deb,libnvidia-container-tools_1.4.0-1_amd64.deb,nvidia-container-runtime_3.5.0-1_amd64.deb,nvidia-...

    docker安装包

    docker container --help ## Display Docker version and info docker --version docker version docker info ## Excecute Docker image docker run hello-world ## List Docker images docker image ls ## ...

    如何进入、退出docker的container.doc

    详细描述了如何进度docker容器,以及详细描述了如何退出docker容器而不会导致容器退出,本文只是记录平时遇到的问题解决方案

    Learning.Docker.1784397938

    You will discover how to debug a container using the docker exec command and the nsenter tool. Finally, you will learn how to secure your containers with SELinux and other proven methods. Table of ...

    docker常用命令 整理成了思维导图 结构更清晰

    docker常用命令 整理成了思维导图 结构更清晰。 常用命令 启动/状态/关闭 service docker start|... systemctl start|... docker docker version 查看版本 ... docker [container] run 参数

    jenkins docker azure container service

    DevOps tools introduce: jenkins: Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。...container service

    Pro Docker(Apress,2015)

    In this fast-paced book on the Docker open standards ...How to run an Application in a Docker Container Use Docker with Apache Hadoop Ecosystem Use Docker with NoSQL Databases Use Docker with RDBMS

    docker_container.tar

    docker:latest 镜像,适用于CentOS 7 等linux 系统。具体详见https://blog.csdn.net/qq_37137713/article/details/105876641

    Docker - 使用规范

    Docker使用规范.

    Docker 使用nsenter工具进入容器的操作

    在使用Docker容器的时候,利用nsenter工具会比较方便,如果我们的系统没有的话,那就需要我们自己来安装了 1.首先访问该网址找到最新版本的nsenter工具 2.然后下载nsenter工具的源码到我们的主机上 输入命令: # ...

    docker1.12官方离线安装包.zip

    软件介绍: 如果你从官方下载软件比较慢,可以使用这个docker1.12离线安装包docker-engine_1.12.3-0-xenial_amd64.deblibltdl7_2.4.6-1_amd64.deb

    Ubuntu离线安装docker与nvidia-docker离线资源包

    在Ubuntu系统上离线安装Docker和NVIDIA-...6. 配置Docker daemon以使用NVIDIA-docker作为默认运行时。 通过遵循上述步骤,即使在没有网络连接的情况下,你也能成功地在Ubuntu系统上部署并运行GPU加速的Docker应用。

Global site tag (gtag.js) - Google Analytics