Docker容器进入的4种方式

[toc]

  • 使用SSH
  • 使用nsenter、nsinit
  • 使用docker exec
  • 使用docker attach

使用ssh登陆进容器

在生产环境中排除了使用docker attach命令进入容器之后,相信大家第一个想到的就是ssh。在镜像(或容器)中安装SSH Server,这样就能保证多人进入,容器且相互之间也不受干扰,在当前的生产环境中(没有使用Docker的情况)也是这样做的。但是使用了Docker容器之后不建议使用ssh进入到Docker容
在容器中启动sshd,存在开销和攻击面增大的问题。同时也违反了Docker所倡导的一个容器一个进程的原则。
为什么不需要在 Docker 容器中运行 sshd

使用nsenter、nsinit等第三方工具

需要额外学习使用第三方工具。
nsenter可以访问另一个进程的名称空间。所以为了连接到某个容器我们还需要获取该容器的第一个进程的PID。
github网址:https://github.com/jpetazzo/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  
$cp nsenter /usr/local/bin

Docker attach

所以大多数情况最好还是使用Docker原生方法,Docker目前主要提供了Docker exec和Docker attach方法
Docker attach可以attach到一个已经运行的容器的stdin,然后进行命令执行的动作。 但是需要注意的是,如果从这个stdin中exit,会导致容器的停止。

$docker attach containerId

但在,使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。
因为这个原因,所以docker attach命令不太适合于生产环境,平时自己开发应用时可以使用该命令。

Docker exec

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

$docker exec -h
docker exec
  • -i时,由于没有分配伪终端,看起来像pipe执行一样。但是执行结果、命令返回值都可以正确获取
  • -t参数,则可以看到一个console窗口,但是执行命令会发现由于没有获得stdin
    的输出,无法看到命令执行情况
  • -it时,则和我们平常操作console界面类似。而且也不会像attach方式因为退出,导致 整个容器退出。 这种方式可以替代ssh或者nsenter、nsinit方式,在容器内进行操作,very nice
  • -d参数在后台执行一个进程。可以看出,如果一个命令需要长时间进程,使用-d参数会很快返回,程序在后台运行。如果不使用-d参数,由于命令需要长时间执行,docker exec会卡住,一直等命令执行完成才返回

                                     2017-11-27-Boy
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 进入Docker容器的4种方式 使用docker attach 使用SSH 使用nsenter 使用docker ...
    行书以鉴阅读 32,543评论 3 22
  • 一、Docker 简介 Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用...
    R_X阅读 4,406评论 0 27
  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,595评论 15 147
  • 今天玩儿的是粘土!当我把粘土带回家散在桌子上时,爸爸不停地说我忒幼稚,我把捏出来的成品(嗯……就把它们当做成品吧)...
    w小树芽阅读 275评论 0 3
  • 我以为我可以明确地说出爱的感觉,就是相遇时的怦然心动而又装作视而不见;无时无刻无处不在的想念,就算是一些无关联的小...
    地球人生存指南阅读 664评论 0 1