如何进入docker容器

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

1.使用docker attach进入Docker容器

Docker提供了attach命令来进入Docker容器。接下来我们创建一个守护态的Docker容器,然后使用docker attach命令进入该容器。

$ sudo docker run -itd ubuntu:16.04 /bin/bash  

然后我们使用docker ps查看到该容器信息,接下来就使用docker attach进入该容器

$ sudo docker attach 44fc0f0582d9 

可以看到我们已经进入到该容器中了。

但在,使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。

因为这个原因,所以docker attach命令不太适合于生产环境,平时自己开发应用时可以使用该命令。

2.使用SSH进入Docker容器

在生产环境中排除了使用docker attach命令进入容器之后,相信大家第一个想到的就是ssh。在镜像(或容器)中安装SSH Server,这样就能保证多人进入容器且相互之间不受干扰了,相信大家在当前的生产环境中(没有使用Docker的情况)也是这样做的。但是使用了Docker容器之后不建议使用ssh进入到Docker容器内。关于为什么不建议使用,请参考如下文章:

为什么不需要在 Docker 容器中运行 sshd

 3.使用nsenter进入Docker容器

 在上面两种方式都不适合的情况下,还有一种比较方便的方法,即使用nsenter进入Docker容器。关于什么是nsenter请参考如下文章:

https://github.com/jpetazzo/nsenter

在了解了什么是nsenter之后,系统默认将我们需要的nsenter安装到主机中

如果没有安装的话,按下面步骤安装即可(注意是主机而非容器或镜像)

具体的安装命令如下:

$ wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz  
$ tar -xzvf util-linux-2.24.tar.gz  
$ cd util-linux-2.24/  
$ ./configure --without-ncurses  
$ make nsenter  
$ sudo cp nsenter /usr/local/bin

安装好nsenter之后可以查看一下该命令的使用。

 

nsenter可以访问另一个进程的名称空间。所以为了连接到某个容器我们还需要获取该容器的第一个进程的PID。可以使用docker inspect命令来拿到该PID。docker inspect命令使用如下:

$ sudo docker inspect --help 

inspect命令可以分层级显示一个镜像或容器的信息。比如我们当前有一个正在运行的容器

可以使用docker inspect来查看该容器的详细信息。

$ sudo docker inspect 44fc0f0582d9

 由其该信息非常多,此处只截取了其中一部分进行展示。如果要显示该容器第一个进行的PID可以使用如下方式

$ sudo docker inspect -f {{.State.Pid}} 44fc0f0582d9

在拿到该进程PID之后我们就可以使用nsenter命令访问该容器了。

$ sudo nsenter --target 3326 --mount --uts --ipc --net --pid  
$ sudo nsenter --target 3326 --mount --uts --ipc --net --pid  

其中的3326即刚才拿到的进程的PID。

当然,如果你认为每次都输入那么多参数太麻烦的话,网上也有许多做好的脚本供大家使用。地址如下:

http://yeasy.gitbooks.io/docker_practice/content/container/enter.html

http://www.tuicool.com/articles/eYnUBrR

4.使用docker exec进入Docker容器

除了上面几种做法之外,docker在1.3.X版本之后还提供了一个新的命令exec用于进入容器,这种方式相对更简单一些,下面我们来看一下该命令的使用:

$ sudo docker exec --help  

接下来我们使用该命令进入一个已经在运行的容器

$ sudo docker ps  
$ sudo docker exec -it 775c7c9ee1e1 /bin/bash 

 

转载于:https://www.cnblogs.com/bdhk/p/7428101.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android surface windows,【技术攻略】s3 硬盘android+windows10双系统

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼grub.cfg内容set timeout5set default"0"menuentry Windows {search --file --no-floppy --setroot /EFI/Microsoft/Boot/bootmgfw.efichainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi}menuentry "Android-…

麻省理工学院让软体机器人拥有了更好的触觉和空间感知能力

MIT来源: IEEE电气电子工程师当机器人可以抓取薯片且不会压碎它的时候,这就意味着它们越来越先进了。为了做到这一点,需要赋予它们触觉和本体感知 -- 一种对它们在空间位置中的感知。这种感觉在大多数软体机器人中是不存在的,但是…

android图片文件的路径地址与uri的相互转换,android图片文件的路径地址与Uri的相互转换...

uri ---> 绝对路径/*** Try to return the absolute file path from the given Uri** param context* param uri* return the file path or null*/public static String getRealFilePath( final Context context, final Uri uri ) {if ( null uri ) return null;final Stri…

centos 环境变量配置

CentOS系统下如何将PHP和mysql命令加入到环境变量中,在Linux CentOS系统上 安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到环境变量之前,执行“php -v”命令查看当前php版本信…

5G时代,解锁机器视觉与千行百业的“完美关系”

来源: 脑极体在人工智能带来的诸多产业升级价值中,机器视觉毫无疑问将贡献最大的篇幅。无论是在工业、农业、服务业、金融业,基于视觉交互的智能解决方案都在智能化体系中占据了80%以上的比例。而且视觉往往还是知识图谱、语义分割、机器学习…

Tkinter图片按钮

1 imgBtn tk.PhotoImage(filetest.png) 2 tk.Button(imageimgBtn).pack() 3 tk.mainloop() 转载,来源简书评论,地址:http://www.jianshu.com/p/5c7a1af4aa53 侵删转载于:https://www.cnblogs.com/yechenkai/p/7429553.html

华为p10plus能用鸿蒙吗,华为P10/P10 Plus对比评测:自家兄弟大对决

华为P10/P10 Plus上手评测:离完美更近一步刚刚华为在巴塞罗那正式推出P10系列新机。早在发布会前,身边不少朋友都问“是等等S8还是选P10”。私以为这问题总有些眼熟。若干年前也是MWC,估计不少人会想:到底是买三星还是HTC。华为P1…

马斯克39页火星计划PPT曝光,我们能学到什么

来源:管理晨读本文ppt部分转载自公众号北美工程师求职顾问新闻报道部分来自于中新社SpaceX公司首席运营官马斯克一直梦想着移民火星,并在之前完成了许多的开发计划和实验。很多人说他是异想天开,也有很多人觉得火星目前没有找到绿色生物&…

Tomcat安装与环境变量的配置

Tomacat的下载 去Tomcat官网下载,我使用的是apache-tomcat-7.0.78的版本。 安装 下载完成之后,我们解压缩到相应的目录。这里我解压缩到d盘下面 1、然后去配置系统的环境变量,新建系统变量: catalina_home 2、下面两个系…

android高德天气api接口,天气查询-API文档-开发指南-Web服务 API | 高德地图API

产品介绍天气查询是一个简单的HTTP接口,根据用户输入的adcode,查询目标区域当前/未来的天气情况。使用API前您需先申请Key,若无高德地图API账号需要先申请账号。适用场景需要使用相关天气查询的时候。使用限制服务调用量的限制请点击这里查阅…

Gartner对于建设「数据中台」的建议

来源:云技术(文:Gartner高级研究总监 孙鑫)数据中台是中国本土诞生的一个名词,很多企业在“什么是数据中台”和“我要上XX中台”徘徊。其炒作程度跟当年的“大数据” 一词有的一拼,如果用Gartner的炒作周期…

[python 学习] requests 库的使用

1、get请求 # -*- coding: utf-8 -*- import requestsURL_IP "http://b.com/index.php" pyload {cate:1,id:2} headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36} def use_…

直通输出设备 android kodi,【本地播放】利用Kodi媒体播放器轻松实现源码输出DTS到功放...

本帖最后由 PlyFly 于 2015-2-13 22:11 编辑各位花粉注意了,本次发布的B056固件,华为终于修复了DTS源码输出到功放不能正常解码的问题(如功放无声音、破音等等)。经实际测试,不用Kodi就能轻松将DTS源码输出到功放解码,且无任何异常…

3纳米、2纳米、1纳米芯片该如何造?

来源:EETOP编译目前台积电和三星正在加紧开发他们的3nm和2nm技术,目前预计分别在2022年和2024年推出。1nm及以上工艺也正在进行中,但是距离仍然很远。业界希望从3nm开始,从当今的finFET晶体管过渡到全能栅极或称为环绕式栅极FET(G…

字符串数组

字符串:用双引号引起来的多个字符“\0” 是字符串结束标志 字符串的存储方式 字符数组 字符指针 字符串的键盘输入:字符串在输入时只能使用字符数组,不能使用字符指针 字符串的库函数:str系列函数共四种:strcmp:比较是否相同 (从两…

华为鸿蒙os再见了安卓,再见了安卓!华为鸿蒙OS 2.0正式登场,开机只需19秒

大家也都知道,华为从前年开始就被老美打压,以至于无法使用谷歌GMS服务,而从去年开始,华为祭出了鸿蒙OS大招,并且也从1.0版本迭代到了2.0版本,首个搭载机型也由6月份发布的P50提前至近期入网的Mate40 Pro 4G…

万字长文概览深度学习的可解释性研究

作者:知乎—王小贱地址:https://www.zhihu.com/people/wang-xiao-jian-38-81《深度学习的可解释性研究概览》包含3篇内容,作者将用尽可能浅显的语言带领大家了解可解释性的概念与方法以及关于深度学习可解释性工作的研究成果。深度学习的可解…

html如何让框架的边框消失,css如何让边框透明?

透明一般认为是一种颜色属性,但是并没有这个数值。我们找到了一种让边框实现透明的最佳方案,运用RGBA设置。css可以使用RGBA设置边框透明,RGBA在RGB的基础上多了控制alpha透明度的参数,我们使用RGBA设置边框颜色同时可以设置边框透…

spring boot / cloud (七) 使用@Retryable来进行重处理

spring boot / cloud (七) 使用Retryable来进行重处理 前言 什么时候需要重处理? 在实际工作中,重处理是一个非常常见的场景,比如:发送消息失败,调用远程服务失败,争抢锁失败,等等,这些错误可能是因为网络波动造成的,等待过后重处理就能成功.通常来说,会用try/catch,while循环…

前沿研究丨数字孪生与信息物理系统——比较与联系

本文选自中国工程院院刊《Engineering》2019年第4期作者:陶飞,戚庆林,王力翚,A.Y.C. Nee来源:Digital Twins and Cyber–Physical Systems toward Smart Manufacturing and Industry 4.0: Correlation and Comparison[…