使用nsenter工具进入Docker容器

vi docker_enter.sh

#!/bin/sh

# 作   者: chengcheng

# 时   间: 2018-03-08

# 文 档名: docker_enter.sh

# 版   本: 1.0.1

# 用   途: 使用nsenter工具进入Docker容器

# 用   法:. docker_enter 容器ID或bash -x docker_enter.sh 容器ID

# 正   文:如以下代码

if [ -e $(dirname "$0")/nsenter ]; then

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 -- "[email protected]"

fi

fi

原文地址:http://blog.51cto.com/12943999/2084203

时间: 2024-10-29 20:35:12

使用nsenter工具进入Docker容器的相关文章

nsenter工具 通过docker pid进入到docker容器里

pid 可以是dockerID 也可以是docker 里面起的进程ID ##安装 wget https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.32/util-linux-2.32.tar.gz tar -xzvf util-linux-2.32.tar.gz cd util-linux-2.32/ ./configure --without-ncurses make nsenter cp nsenter /usr/loca

phpStorm中使用xdebug工具调试docker容器中的程序

前提准备 phpstorm开发软件 + dnmp(docker + nginx + mysql +php) 配置好hosts 映射比如 /etc/hosts      127.0.0.1 tp5.dev 为现有的php环境安装好xdebug扩展,安装成功之后可以通过页面输出phpinfo()查看是否安装成功xdebug 安装能够进行调试的ieda环境,一般对于php程序开发者来说,使用phpStorm较多,本文也是通过这个讲述. 成熟的docker构建的环境. 可以使用https://githu

Docker容器学习梳理--容器登陆方法梳理(attach、exec、nsenter)

对于运行在后台的Docker容器,我们运维人员时常是有登陆进去的需求.登陆Docker容器的方式: 1)使用ssh登陆容器.这种方法需要在容器中启动sshd,存在开销和攻击面增大的问题.同时也违反了Docker所倡导的一个容器一个进程的原则. 参考Docker容器学习梳理--SSH方式登陆容器 2)使用自带命令docker attach登陆容器.命令格式:docker attach container_id.不过docker attach存在的问题是:当多个窗口同时attach到同一个容器时,所

Docker 网络之pipework 工具(2)将Docker容器配置到本地网络环境中

为了使本地网络中的机器和Docker容器更方便的通信,我们经常会有将Docker容器配置到和主机同一网段的需求.这个需求其实很容易实现,我们只要将Docker容器和主机的网卡桥接起来,再给Docker容器配上IP就可以了.下面我们来操作一下,我主机A地址为192.168.1.107/24,网关为192.168.1.1,需要给Docker容器的地址配置为192.168.1.150/24.在主机A上做如下操作:安装pipework下载地址:wgethttps://github.com/jpetazz

通过nsenter连接docker容器

通常连接Docker容器并与其进行交互有四种方法.详情见:https://github.com/berresch/Docker-Enter-Demo,下面摘录nsenter连接的方式. 查看是否安装nsenter [[email protected] ~]# whereis nsenter nsenter: /usr/bin/nsenter /usr/share/man/man1/nsenter.1.gz 如果没安装可创建install.sh,并执行 #!/bin/bash curl https

使用nsenter进入Docker容器

Docker容器运行后,如何进入容器进行操作呢?起初我是用SSH.如果只启动一个容器,用SSH还能应付,只需要将容器的22端口映射到本机的一个端口即可.当我启动了五个容器后,每个容器默认是没有配置SSH Server的,安装配置SSHD,映射容器SSH端口,实在是麻烦. 我发现很多Docker镜像都是没有安装SSHD服务的,难道有其他方法进入Docker容器? 浏览了Docker的文档,我没有找到答案.还是要求助于无所不能的Google,万能的Google告诉我用nsenter吧. 在大多数Li

【原创】大叔经验分享(71)docker容器中使用jvm工具

java应用中经常需要用到jvm工具来进行一些操作,如果java应用部署在docker容器中,如何使用jvm工具? 首先要看使用的docker镜像, 比如常用的openjdk镜像分为jdk和jre,只有jdk版本才有jvm工具,所以可以直接使用jdk版本的openjdk: 比如常用的tomcat镜像则没有jdk和jre选择,默认使用都是jre,所以没有jvm工具,tomcat镜像中的jdk目录如下: # ls /usr/lib/jvm/java-1.8-openjdk bin jre lib #

使用burpsuite等代理工具抓取docker容器中的数据包

使用burpsuite等代理工具抓取docker容器中的数据包,下面是详细的教程. 以docker中的某个漏洞平台(bwapp)为例,展示如何抓包. 1.首先使用docker下载bwapp: # docker pull raesene/bwapp 2.然后运行bwapp (使用命令   --env HTTP_PROXY="http://192.168.43.14:8080"   来进行代理设置,这里设置的是burpsuite中的ip地址以及端口) # docker run -d --n

Docker 网络之pipework 工具(3)单主机Docker容器VLAN划分

pipework不仅可以使用Linux bridge连接Docker容器,还可以与OpenVswitch结合,实现Docker容器的VLAN划分.下面,就来简单演示一下,在单机环境下,如何实现Docker容器间的二层隔离.为了演示隔离效果,我们将4个容器放在了同一个IP网段中.但实际他们是二层隔离的两个网络,有不同的广播域. 安装openvswitch 安装基础环境 [[email protected] ~]# yum -y install gcc make python-devel opens