首页

文章

如何进入 Docker 容器

发布网友 发布时间:2022-02-26 21:24

我来回答

1个回答

热心网友 时间:2022-02-26 22:53

如何进入Docker容器

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

下面我们来逐一讲一下每种方式。
一、使用docker attach进入Docker容器
Docker提供了attach命令来进入Docker容器。

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

[plain] view plain copy
$ sudo docker run -itd ubuntu:14.04 /bin/bash

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

[plain] view plain copy
$ sudo docker attach 44fc0f0582d9

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

但在,使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。下来我们来演示一下。打开两个窗口,都使用attach命令进入同一个容器里面。如下所示:

接下来我们只在第一个窗口进行操作,可以看到第一个窗口的操作同步到第二个窗口显示了,如下:

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

二、使用SSH进入Docker容器
在生产环境中排除了使用docker attach命令进入容器之后,相信大家第一个想到的就是ssh。在镜像(或容器)中安装SSH Server,这样就能保证多人进入容器且相互之间不受干扰了,相信大家在当前的生产环境中(没有使用Docker的情况)也是这样做的。但是使用了Docker容器之后不建议使用ssh进入到Docker容器内。关于为什么不建议使用,请参考如下几篇文章:
Why you don't need to run SSHd in your Docker containers
上面这篇文章是英文的,如果英语不好的话可以参考如下译文
为什么不需要在 Docker 容器中运行 sshd

三、使用nsenter进入Docker容器
在上面两种方式都不适合的情况下,还有一种比较方便的方法,即使用nsenter进入Docker容器。关于什么是nsenter请参考如下文章:
https://github.com/jpetazzo/nsenter
在了解了什么是nsenter之后,我们需要把nsenter安装到主机中(注意是主机而非容器或镜像),具体的安装命令如下:

[plain] view plain copy
$ wget https:/。。。r.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命令使用如下:

[plain] view plain copy
$ sudo docker inspect --help

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

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

[plain] view plain copy
$ sudo docker inspect 44fc0f0582d9

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

[plain] view plain copy
$ sudo docker inspect -f {{.State.Pid}} 44fc0f0582d9

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

[plain] view plain copy
$ sudo nsenter --target 3326 --mount --uts --ipc --net --pid
其中的3326即刚才拿到的进程的PID

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

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

[plain] view plain copy
$ sudo docker exec --help

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

[plain] view plain copy
$ sudo docker ps
$ sudo docker exec -it 775c7c9ee1e1 /bin/bash

网上还有一种做法是使用nsinit,没有亲身实践过所以不在此罗列了,有兴趣的话可以尝试一下。
...火柴小女孩》《词语手册》里有很多词语的意思的,求告知 暖融融解释 领淘通淘客助手这个软件怎么样? 淘宝客必备的九大工具有哪些? 电脑里硬盘如何共享怎么实现多台电脑共用一块硬盘 两台电脑一个硬盘两台电脑是否可以同时用一个硬盘 共享电脑硬盘怎样设置局域网电脑硬盘共享 现在下载歌曲好还是不下好 故障码P033D的含义解析 切菜机多功能型切菜机 scanbox三维扫描仪 苹果13没有删除的备忘录怎么恢复? iphone备忘录永久删除怎么恢复?iphone备忘录恢复最近删除文件方法介绍... 备忘录最近删除怎么找 初一班主任工作计划 新初一班主任工作计划 359度是什么角 报个 定向乡镇卫生院 的医学好不好 酒驾缓刑节保证书怎么写 合同法律咨询免费 这款充电宝可以带上飞机吗? 倪俊卿成就及荣誉 江苏种牛站有几家? 山东宏正牧业有限公司服务承诺 吃早餐后抽血会影响体检结果吗 电脑如何设置护眼模式(台式电脑如何设置护眼模式) 电脑显示器设置护眼电脑屏幕怎么设置比较护眼 广告机是否支持分屏显示功能? 上海东丰船务有限公司怎么样? 马弗炉管厂家 CF手游体验服怎样获取资格 穿越火线体验服在哪申请资格_cf手游体验服资格申请入口链接 穿越火线体验服资格申请链接在哪-穿越火线体验服资格申请链接介绍 快手浏览量多少才能赚钱?快手靠浏览量能挣多少钱? 小麦胚芽如何吃最好 个头怎么造句 高跟鞋走路磨脚该如何处理? 除螨虫的特效药 螨虫什么药物可以除掉 网上在哪买奢侈品 二手包包闲置了怎么办 夫妻想要怀孕要提前做哪些准备 手机图片如何投屏到电视上去 手机图片投屏到电视上去的方法 分区助手无法压缩卷怎么处理? 广州北斗公司有哪些 在文件夹里.把cfg文件删掉.电影还可以看么? 办理骑士卡要钱吗? 一千个伤心的理由吉他谱前奏怎么弹出 一千个伤心的理由吉他谱 去中国逛夜市,必买的小吃有哪些? 上海香肠的配料秘方有哪些? 怎么修改微信铃声 docker 怎么创建基础镜像 请教Docker 正确的使用姿势 docker desk top 安装后怎么复制命令到终端? 如何操作一个docker mysql docker进入container之后能运行什么命令 如何打包创建镜像和运行Docker容器及常用命令 如何查看docker 里某个容器的的启动命令? docker 容器里好多命令没有怎么办 docker linux 一些常用命令没有 苹果平板抖音怎么看回放 nginx的能用apache打开吗 单独使用NGINX+PHP好还是NGINX+APACHE+PHP好 NGINX+PHP(FASTCGI)好,还是NGINX+APACHE+PHP好? 我的网站是纯php的,用apache好还是nginx好? 微信与别人的聊天记录怎么发给别人 nginx php 和apache php 哪个性能更高 apache+php 与 nginx+php,哪个好 在linux的centOS7.2版本中2.4版本的apache的httpd.conf 如何配置外部访问啊! 如何在CentOS6下实现Apache+PHP+MySQL的快速安装 微信铃声怎么改 如何操作docker 容器的配置文件 怎么更改微信铃声怎么设置 linux服务器怎么安装nginx vivo x7微信铃声怎么改? 在linux下yum安装nginx选择哪个安装 在linux上安装nginx是不是会创建名为nginx或nobody的用户和用户组 请教问题nginx反向代理proxy 我的QQ界面怎么变成简洁版就不会变了 nginx怎样实现反向代理虚拟机 每次用360浏览器打开淘宝网,右下角就弹出广告,怎样禁止啊? 如何去掉右下角淘宝广告,是出现在360浏览器的网页里的 手机怎么自动录制视频 怎么禁止浏览器右下角广告? 桌面右下角的淘宝广告怎么去掉? 怎么从钉钉转发到微信 打开浏览器右下角老是出现淘宝特价广告,如何去掉,求指教! 如何把钉钉里的文件转发到微信上 钉钉里文件如何转发到微信 钉钉消息怎么转发到微信
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com