Docker之进入容器(三)

一、简介

  通过前面两篇博客的扫盲,你们多多少少对docker有了一个基本的了解,也接触了docker的经常使用命令。在这篇博客中,我将介绍进入docker容器的几种方式。php

 

二、进入docker中的几种方式

  2.一、使用docker attach命令进入docker

  Docker提供了attach命令来进入Docker容器html

docker run -itd nginx-name mynginx
docker attach mynginx
# 或者
docker attach mynginx

 

优缺点:
  当多个窗口使用该命令进入该容器时,全部窗口都会显示同步。若是一个窗口阻塞了,其余窗口没法再进行操做;。
  所以docker attach命令不太适合于生产环境。且该命令有点古老,不太建议使用mysql

PS:linux

  最近在家里的windows系统中使用docker attach mynginx命令进入docker容器卡死窗口。可能该命令太古老了,高版本用有点问题。nginx

  2.二、使用ssh进入docker容器

  dockerc之初识这一篇博客文章中,咱们就了解到docker就是一个隔离的盒子,最原始初始化的盒子咱们能够将它当作一个mini型的linux虚拟机,咱们在该盒子中安装咱们须要的服务(例如:nginx、mysql、redis等),打包以后就造成了目前最为流行的docker应用容器。既然是一个linux虚拟主机,那么咱们就能够在该主机上面安装一个ssh server就能够经过ssh协议来链接该容器了。redis

  不过这种方式也基本没什么人用,出力不讨好。哈哈,那是由于后面有一种既安全又便捷的命令用啦。sql

  能够去看一下这个老外写的缘由:为何不须要在 Docker 容器中运行 sshddocker

  2.三、使用nsenter进入docker容器

  对于nsenter网上有比较多且详细的介绍,这里我就说一下我本身理解。windows

  我的理解nsenter:经过容器在宿主机中的pid进行通信
  所以: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 --help

# nsenter能够访问另外一个进程名称空间。所以咱们须要获取容器的PID
sudo docker inspect -f {{.State.Pid}} 44fc0f0582d9  // 假设进程号为 4426
$ sudo nsenter --target 4426 --mount --uts --ipc --net --pid  
# --target 4426 目标pid

  2.四、使用docker exec命令进入docker容器

  docker在1.3.x版本以后提供了一个新命令exec用户进入容器。  

  该命令是本篇博客中的主角,是个大boss。上面的三种方式都是为了陪衬它的存在,郁闷脸。。。

  该方法是最经常使用的方法,没有之一!!!!!

$ docker ps
$ docker exec -it mynginx /bin/bash        

  对,你没看错,这个命令就是这么简单。

  

 

(以上是本身的一些看法,如有不足或者错误的地方请各位指出)

 做者:那一叶随风   http://www.cnblogs.com/phpstudy2015-6/

 原文地址:  https://www.cnblogs.com/phpstudy2015-6/p/9961231.html 

 声明:本博客文章为原创,只表明本人在工做学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文连接

相关文章
相关标签/搜索