Docker容器进入方法解析:4种方式详解及推荐使用

创始人
2025-01-10 08:04:17
0 次浏览
0 评论

Docker容器进入的4种方式(推荐最后一种)

使用Docker创建容器后,如何进入容器是一个关键问题。
下面将详细介绍几种常用的抓取Docker容器的方法。

命令1.dockerattach:该命令可以快速进入正在运行的容器。
首先创建一个守护进程容器,然后使用dockerattach命令访问它。
在生产环境中,这种方法会带来同步操作问题。
当同时使用多个窗口时,一旦其中一个窗口被遮挡,其他窗口就无法工作。
因此,该方法不适合生产环境,仅适合个人开发应用场景。

2.容器内SSH:在镜像或容器中安装SSHServer,保证多人进入容器互不影响。
不过,使用Docker容器后,建议避免使用SSH。
查看相关文章以了解原因。

3.nsenter命令:用于访问另一个进程的命名空间,可以连接到容器中的进程。
您需要先安装nsenter才能获取容器中第一个进程的PID。
您可以使用dockerinspect命令来获取它。
使用nsenter命令访问容器后,使用PID连接到容器。
即用型脚本可用于简化操作。

命令4.dockerexec:1.3.X版本之后新增的Docker命令,提供了更简单的进入容器的方式。
直接使用dockerexec命令访问正在运行的容器,使用方便。

总结一下,Docker提供了几种进入容器的方法。
选择哪种方法取决于场景和具体需求。
选择输入法时要考虑生产环境的稳定性、并发操作问题、易用性等因素。
个人开发场景建议使用dockerattach或dockerexec命令,而生产环境建议使用SSH方式,更加安全且互不影响。

如何进入到Docker容器内部

首先,您需要运行一个容器并使用dockerattach+容器名称/ID附加该容器。
dockerpull后可能无法登录,可以拉取一个centos镜像,使用该镜像创建容器,然后使用dockerattach+containername/ID登录。

如何进入Docker容器

Docker容器使用Docker创建容器后;大家更担心的是如何安装容器。
实际上,有多种方法可以进入Docker容器;以下是添加到Docker容器的一些常见方法。
安装Docker容器的几种常见方式如下:1.使用dockerattach命令将Docker附加到Docker容器上。
然后我们创建一个守护进程Docker容器并使用dockerattach命令访问该容器。
[plain]viewplaincopy$sudodockerrun-itdubuntu:14.04/bin/bash然后使用dockerps查看容器信息,使用dockerattach访问容器。
[plain]viewplaincopy$sudodockerattach44fc0f0582d9可以看到已经进入了容器。
但是使用这个命令的时候有一个问题。
当多个窗口同时使用此命令安装此容器时。
所有窗口将同时显示。
如果一个窗口被阻塞,其他窗口将无法运行。
我们再做一次演示。
打开两个窗口并使用Attach命令添加相同的容器。
然后,您可以看到我们只在第一个窗口上工作。
为此原因,dockerattach命令您可以使用此命令为生产环境创建您自己的应用程序。
2.SSH安装Docker容器在生产环境中部署并弃用使用dockerattach命令登录容器后,大家想到的就是ssh。
将SHServer添加到镜像(或容器)中,以便多人可以互不干扰地访问容器。
但使用后不建议再使用ssh访问Docker容器。
请阅读以下文章,了解为什么不建议这样做:为什么不需要在Docker容器中启用SSH如果上述文章的英文不好。
你可以参考下面的翻译。
您不需要在Docker容器中运行sshd。
3、使用nsenter访问Docker容器当以上两种方法都不合适时。
还有一种更方便的方法是使用nsenter访问Docker容器。
什么是nsenter阅读以下文章:https://github.com/jpetazzo/nsenter了解什么是nsenter后。
我们需要在主机上安装nsenter(注意不是主机、容器或者镜像)指定的安装命令如下:[plain]viewplaincopy$wgethttps://url/to/util-安装linux-2.24.tar.gz$tar-xzvfutil-linux-2.24.tar.gz$cdutil-linux-2.24/$./configure--without-ncurses$makensenter$sudocpnsenter/usr/local/binnsenter后;您可以查看该命令的用法。
nsenter可以访问另一个进程的命名空间。
因此,要连接到容器,我们还可以获得容器第一个进程的PID是必须的。
您可以使用dockerinspect命令来获取PID。
dockerinspect命令的用法如下:[plain]viewplaincopy$sudodockerinspect--helpinspect命令可以显示有关镜像或容器的分层信息。
例如,如果我们当前有一个容器正在使用;您可以使用dockerinspect查看容器的详细信息。
[plain]viewplaincopy$sudodockerinspect44fc0f0582d9因为信息很多,这里仅捕获了其中的一部分以供显示。
如果你想显示容器的第一个PID,可以使用如下方法:[plain]viewplaincopy$sudodockerinspect-f{{.State.Pid}}44fc0f0582d9获取进程的PID后;我们可以使用nsenter命令。
来访问容器。
[plain]viewplaincopy$sudonsenter--target3326--mount--uts--ipc--net--pid3326是我们刚刚得到的进程的PID;如果你觉得添加这么多参数太困难;什么时候互联网上也有许多制作精良的脚本供任何人使用。
地址如下:4.除了上述方法外,还可以使用dockerexec安装Docker容器。
Docker1.3.X版本之后,这种方法进入容器内部就相当简单了。
让我们使用这个命令:[plain]viewplaincopy$sudodockerexec--help接下来我们使用这个命令来添加一个已经运行的容器。
[plain]viewplaincopy$sudodockerps$sudodockerexec-it775c7c9ee1e1/bin/bash网上还有另一种方法。
我自己没有实践过nsinit,所以如果你有兴趣可以在这里尝试一下。
热门文章
1
Redisson分布式锁深度解析:Red... Redis实现分布式锁+Redisson源码解析在某些场景下,多个进程需要以互斥...

2
深度解析Docker:容器技术提升应用部... docker是什么Docker是一种强大的开源容器技术,它将应用程序及其所有依赖...

3
C语言实现:如何判断一个整数是否为质数? C语言输入一个整数,判断是否是质数?#include//头文件intmain()...

4
K8s弃用Docker背后的故事及Doc... K8s为什么要弃用Docker?在讨论K8s抛弃Docker的话题时,我们首先需...

5
C语言文本输入输出教程:安全高效处理字符... C语言怎么变成文字?如果你想用C语言输入输出文本,其实很简单。您必须首先定义一个...

6
深入解析Java:面向对象编程特性与实现... Java语言的特点,实现机制和体系结构。中的任何实体都可以被视为一个对象。对象通...

7
三款免费Docker管理工具,提升您的可... 3款免费又好用的Docker可视化管理工具在Docker的世界里,命令行工具无疑...

8
C语言期末编程题解析:完整程序代码分享 C语言期末考试编程代码函数题?按照题目要求编写的完整程序如下(见图,图中重复的部...

9
轻松掌握:Redis键值查看技巧,两种方... 如何读取redis中的key值中的结果我们希望它能帮助您使用它。怎么查看redi...

10
SQL DELETE语句:详解及不同删除... 请问Sql的DELETE语句怎么写delete表示删除表中的数据示例:delet...