版权声明:starRTC免费im直播会议一对一视频,by elesos.com & starRTC.com https://blog.csdn.net/elesos/article/details/60958098

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

有很多种方法,包括使用 docker attach 命令或 nsenter 工具等。

使用 attach 命令有时候并不方便。当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。

nsenter 可以访问另一个进程的名字空间。

为了连接到容器,你还需要找到容器的第一个进程的 PID,可以通过下面的命令获取。

PID=¥(docker inspect --format "{{ .State.Pid }}" <container>) //将<container>换成你的容器id通过这个 PID,就可以连接到这个容器:

¥ nsenter --target ¥PID --mount --uts --ipc --net --pid

¥ wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker;
¥ echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrc

这个文件中定义了很多方便使用 Docker 的命令,例如 docker-pid 可以获取某个容器的 PID;而 docker-enter 可以进入容器或直接在容器内执行命令。

¥ echo ¥(docker-pid <container>)
¥ docker-enter <container>

[编辑]附
.bashrc_docker文件内容:

# Some useful commands to use docker.# Author: yeasy@github# Created:2014-09-25
 
alias docker-pid="sudo docker inspect --format '{{.State.Pid}}'"alias docker-ip="sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}'"
 
#the implementation refs from https://github.com/jpetazzo/nsenter/blob/master/docker-enterfunction docker-enter(){if[-e ¥(dirname"¥0")/nsenter ]; then# with boot2docker, nsenter is not in the PATH but it is in the same folderNSENTER=¥(dirname"¥0")/nsenter
elseNSENTER=nsenter
fi[-z"¥NSENTER"]&&echo"WARN Cannot find nsenter"&&return
 
if[-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=¥(sudo docker inspect --format"{{.State.Pid}}""¥1")if[-z"¥PID"]; thenecho"WARN Cannot find the given container"returnfishift
 
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.#sudo ¥NSENTER "¥OPTS" su - rootsudo¥NSENTER--target¥PID--mount--uts--ipc--net--pidsu - root
else# Use env to clear all host environment variables.sudo¥NSENTER--target¥PID--mount--uts--ipc--net--pidenv-i ¥@fifi}
艺搜参考
http://www.hjue.me/post/docker-nsenter

http://yeasy.gitbooks.io/docker_practice/content/container/enter.html
---------------------
作者:github.com/starRTC
来源:CSDN
原文:https://blog.csdn.net/elesos/article/details/60958098
版权声明:本文为博主原创文章,转载请附上博文链接!

Docker 多终端登录的更多相关文章

  1. ECS Win2008 远程时提示"要登录到此远程计算机,您必须被授予允许通过终端登录登录的权限"的解决方法

    问题描述 ECS Windows 2008 远程登陆时提示"要登录到此远程计算机,您必须被授予允许通过终端登录登录的权限",如下图所示: 问题分析 组策略中做了设置不允许管理员组成 ...

  2. 【转】自动实时监控Windows2003服务器终端登录并发邮件和发短信通知

    记得以前管理的一批windows服务器,一些开源程序做的web站点总会遭到入侵.然而就想找找看有没有办法可以知道服务器有没有被入侵.服务器在什么时候登陆过,如果登陆马上发邮件通知,感觉这种问题肯定有人 ...

  3. UNIX高级环境编程(12)进程关联(Process Relationships)- 终端登录过程 ,进程组,Session

    在前面的章节我们了解到,进程之间是有关联的: 每个进程都有一个父进程: 子进程退出时,父进程可以感知并且获取子进程的退出状态. 本章我们将了解: 进程组的更多细节: sessions的内容: logi ...

  4. 自动实时监控Windows2003服务器终端登录

    朋友一台Windows服务器被黑了,而且还被人恶意删除了一些数据备份,帮其做了下安全加固,考虑到服务器都是通过Windows 终端服务器来管理的,就想办法对其登录做个监控,找了个命令行下发邮件的小工具 ...

  5. Windows 2008 远程登陆时提示"要登录到此远程计算机,您必须被授予允许通过终端登录登录的权限"

    ECS Win2008 远程时提示"要登录到此远程计算机,您必须被授予允许通过终端登录登录的权限"的解决方法   问题描述 ECS Windows 2008 远程登陆时提示&quo ...

  6. ftp服务器终端登录后乱码处理方法

    首先在windows上用资源管理器登录看看会不会乱码,如果不会,说明是GBK编码 因为windows默认是GBK(936),linux默认(UTF-8) 因为FTP服务器我们修改不了,如果用linux ...

  7. Win2008 远程时提示"要登录到此远程计算机,您必须被授予允许通过终端登录登录的权限"的解决方法

    问题描述 ECS Windows 2008 远程登陆时提示"要登录到此远程计算机,您必须被授予允许通过终端登录登录的权限",如下图所示: 问题分析 组策略中做了设置不允许管理员组成 ...

  8. 限制客户端同账号同IP多终端登录

    打开SoftEther VPN Server Manager工具,连接上节点 1.管理虚拟HUB--管理用户--双击用户--安全策略--最大多重登录数设置为1 2.管理虚拟HUB--虚拟HUB属性-- ...

  9. 【Docker】制作一个支持SSH终端登录的镜像

    首先从官方或者docker.cn的镜像库中pull下来ubuntu镜像: docker pull ubuntu 现在用命令查看一下pull下来的ubuntu镜像: docker images 关于如何 ...

随机推荐

  1. 使用WIFI网卡的AP功能

    前几篇博客中,wifi无线网卡都工作于STA模式,那么它能否工作于AP模式.本篇博客就研究使wifi 无线网卡工作于AP模式.使用一个应用程序hostapd,关于它的介绍可以去此网站https://w ...

  2. ubuntu配置定时任务crontab何保存退出

    crontab -e配置完成后,如何把保存并退出? 1.Ctrl+o 写入 2.出现“FIile name to Write...”,输入Enter 3.Ctrl+x 保存输出 提示“crontab: ...

  3. docker删除镜像Error response from daemon: conflict: unable to remove repository reference

    Docker无法删除images,由于是依赖container. 1.进入root权限   sudo su 2. 列出所有运行或没有运行的镜像  docker  ps  -a 3.停止containe ...

  4. Educational Codeforces Round 78 (Rated for Div. 2) C. Berry Jam

    链接: https://codeforces.com/contest/1278/problem/C 题意: Karlsson has recently discovered a huge stock ...

  5. ReplaceGoogleCDN 真的好使

    在国内访问 stackoverflow快了很多. 谢谢开发者 https://github.com/justjavac/ReplaceGoogleCDN

  6. selenium--拖拽页面元素

    from selenium import webdriver import unittest from selenium.webdriver import ActionChains import ti ...

  7. ASP.NET Core 简介

    .NET Core 是 .NET Framework 的新一代版本,是微软开发的第一个具有跨平台 ( Windows.Mac OSX .Linux ) 能力的应用程序开发框 ASP.NET Core ...

  8. netlify搭建静态站+https

    转载[大雄的学习人生 - 原文地址:https://www.cnblogs.com/codernie/p/9062104.html] 一.使用github或者gitlab登陆netlify 首先,打开 ...

  9. a标签设置水平右对齐

      1.情景展示 如上图所示,这其实是一个a标签,如何让它右对齐呢? 2.解决方案 第一步:将行内标签转化成块级元素,即display:block: 第二步:文字右对齐,即text-align:rig ...

  10. 关于Echarts柱状图实现的细节

    echarts柱状图显示数值[1] echarts2:  itemStyle : { normal: {label : {show: true, position: 'top'}}}, echarts ...