Docker容器运行后,如何进入容器进行操作呢?起初我是用SSH。如果只启动一个容器,用SSH还能应付,只需要将容器的22端口映射到本机的一个端口即可。当我启动了五个容器后,每个容器默认是没有配置SSH Server的,安装配置SSHD,映射容器SSH端口,实在是麻烦。

我发现很多Docker镜像都是没有安装SSHD服务的,难道有其他方法进入Docker容器?

浏览了Docker的文档,我没有找到答案。还是要求助于无所不能的Google,万能的Google告诉我用nsenter吧。

在大多数Linux发行版中,util-linux包中含有nsenter.如果没有,你需要安装它.

cd /tmp
curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz \| tar -zxf-
cd util-linux-2.24
./configure --without-ncurses
make nsenter
cp nsenter /usr/local/bin

使用shell脚本 docker-enter,将如下代码保存为docker-enter,chmod +x docker-enter

 #!/bin/shif [ -e $(dirname "$0")/nsenter ]; then# with boot2docker, nsenter is not in the PATH but it is in the same folderNSENTER=$(dirname "$0")/nsenterelseNSENTER=nsenterfiif [ -z "$1" ]; thenecho "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."elsePID=$(docker inspect --format "{{.State.Pid}}" "$1")if [ -z "$PID" ]; thenexit 1fishiftOPTS="--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 - rootelse# Use env to clear all host environment variables."$NSENTER" $OPTS env --ignore-environment -- "$@"fifi

运行 docker-enter <container id>,这样就进入到指定的容器中

关于nsenter更详细的使用方法见这里 https://github.com/jpetazzo/nsenter

来源:http://www.hjue.me/post/docker-nsenter?utm_source=tuicool

使用nsenter进入Docker容器相关推荐

  1. 使用nsenter进入docker容器后端报错 mesg: ttyname failed: No such file or directory

    通过nsenter 进入到docker容器的后端总是报下面的错,, [root@devdtt ~]# docker inspect -f {{.State.Pid}} mynginx4 11950 [ ...

  2. 【云计算】使用nsenter进入Docker容器进行调试

    [nsenter安装使用] cd /tmp curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.t ...

  3. 进入正在运行的Docker容器的4种方式

    进入Docker容器比较常见的几种做法如下: 使用docker attach 使用SSH 使用nsenter 使用exec 一.使用docker attach进入Docker容器 Docker提供了a ...

  4. 进入Docker容器的4种方式

    进入Docker容器的4种方式 在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法. 进 ...

  5. 进入docker容器的方法

    登录容器的方式                        ssh登录                                                               第 ...

  6. Docker容器进入的4种方式

    Docker容器进入的4种方式 $ sudo docker ps $ sudo docker exec -it 775c7c9ee1e1 /bin/bash 在使用Docker创建了容器之后,大家比较 ...

  7. 如何进入Docker容器

    概述 在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法. 进入Docker容器比较常见 ...

  8. linux安装nsenter工具,Docker 使用nsenter工具进入容器的操作

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

  9. 我如何进入Docker容器的shell?

    本文翻译自:How do I get into a Docker container's shell? I'm getting started working with Docker. 我开始使用Do ...

  10. 使用nsenter进入docker namespace

    我们知道docker容器使用namespace实现资源隔离. 我们知道,有很多image内部是没有bash的,所以我们docker exec是无法进入容器的,此时如果还想看一下容器内的情况,其实只需要 ...

最新文章

  1. 浅谈Java SE、Java EE、Java ME三者的区别
  2. android 保存textview,为什么没有TextView(带ID)会自动保存它的状态?
  3. You must install peer dependencies yourself
  4. 如何在两个目录中删除其中一个目录中同名文件
  5. 解决zabbix-agent二进制班不能连接使用docker搭建的zabbix-server
  6. Java设计模式GOF之6大设计原则
  7. 什么决定了电商双11大促的成败
  8. NATS服务器部署及测试
  9. 使用SoapUI调用不同的安全WCF SOAP服务-基本身份验证,第二部分
  10. (5):Silverlight 2 实现简单的拖放功能
  11. linux下打开、关闭tomcat,实时查看tomcat运行日志
  12. 获取程序下基目录下的文件的
  13. SQL SERVER数据库三种数据插入方式
  14. 期刊分类abcde_收藏!中文顶级期刊分类,多图教你不被ABCD类搞晕!
  15. iOS armv7, armv7s, arm64区别与应用32位、64位配置
  16. 信息检索与利用(第三版)第二章信息资源与信息源
  17. Solr Server服务器端安装配置
  18. IP-Guard十六个模块功能详解
  19. 程序员如何利用空闲时间挣零花钱
  20. 网易云音乐实时计算平台设计及实践

热门文章

  1. shell引入sql脚本报错_Oracle11g rac集群安装执行脚本报错的解决方法
  2. 拓端tecdat|共享汽车数据分析调研案例报告
  3. 使用cdn和npm引入的区别_带你体验 Vue2 和 Vue3 开发组件有什么区别
  4. 修改默认启动操作系统
  5. jbpm hibernate.cfg.xml 连接mysql配置_hibernate.cfg.xml文件连接mySql、Oracle、SqlServer配置...
  6. keras实现多层LSTM
  7. sklearn库的学习
  8. pyspark分类算法之决策树分类器模型实践【decisionTreeClassifier】
  9. Pandas常用函数diff和shift函数学习使用
  10. python 求解给定字符串中的最长DNA序列长度