码迷,mamicode.com
首页 > 其他好文 > 详细

centos7下安装docker(8.1运行容器)

时间:2017-10-22 16:54:43      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:images   exit   启动   span   while语句   技术分享   必须   如何   logs   

从今天开始学习docker container

1.docker run

之前我们在学习制作镜像以及制作私有仓库的时候已经用到docker run -it以及docker run -d来临时运行一个容器和在后台运行一个容器了,

我们可以通过docker ps 和docker ps -a 来查看运行中的容器,和所有容器(包括状态为up和exited)

技术分享

或者可以使用docker container ls以及docker container ls -a来查看docker container ,效果和docker ps 或docker ps -a一致

技术分享

 

 无论是docker ps -a还是docker container ls -a,我们都是通过-a这个参数来查看所有container 的,一般这种exited状态的容器并不是我们想要的结果,我们希望容器能一直时running的状态,这样才能被使用。

如何使容器长期保持运行状态呢?

1.首先我们运行一个容器:docker run -it <image>   -i:获得一个交互式连接,获取container的输入  -t:进入一个终端;这两个参数通常连用

技术分享

打开另一个终端:docker ps

技术分享

可以通过container ID 来判断我们在另一个终端打开的同一个容器的状态时运行中的(也可以通过ctrl+p,ctrl+q退出而不终止容器运行,可以使容器在后台保持运行)

 

 

 

2.可以通过执行一个长期运行的命令来保持容器的运行状态,例如执行一下命令:

技术分享

while语句让bash不会退出,我们打开另外一个终端,可以看到容器为运行的状态

技术分享

 

 

 

3.通过 :docker run -d <image>在后台运行一个容器

技术分享

docker ps查看运行中的容器,可以看到容器为运行状态

技术分享

 

在做docker run -d在后台运行的状态时,我发现了一个问题:当我使用base 镜像在后台运行容器的时候

技术分享

 

通过docker ps发现这个容器并没有在后台运行,

技术分享

实际是Exited状态的

技术分享

为什么会出现docker run -d闪退的情况呢?

技术分享

我们可以观察到运行中的容器中COMMAND都没有结束,而Exited状态的容器COMMAND都已经执行完结束了,所以说如果想要通过docker run -d的方法使容器在后台一直保持运行的状态:容器里就必须有一个前台的进程,容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的,这个是docker的机制问题,如果容器里面没有前台运行的进程,这样的容器,后台启动后,会立即自杀,因为他觉得他没事可做了.【这句话借鉴:http://blog.csdn.net/meegomeego/article/details/50707532】

 

总结:一开始的想法只是想让docker run -it的容器始终保持运行,因为我每次退出一个新建的容器之后他都会变为Exited的状态,如果让他保持运行的话,就要再打开一个终端;

          后来发现第二种方法,执行一个始终运行的命令,可以保持容器运行,但依然要占用另一个终端

          原本以为docker run -d的方法可以使任何容器都可以在后台保持运行的状态,但是在试验的过程中,又发现一些容器也不能在后台保持运行的状态,通过查资料等了解到:docker run -d在后台运行容器,并使其保持运行状态的话就必须有一个前台运行的进程。

          难道运行一个容器就必须运行个前台的进程吗,后来我又发现:通过docker run -it的方法运行一个容器,退出的时候不要使用ctrl+c,而是使用ctrl+p&ctrl+q可以保存退出,这个方法对docker run -d和命令法运行容器都不适用。

 

 

 docker ps -a这个命令我们都知道是列出所有状态的容器

技术分享

CONTAINER ID:容器的"短ID",我们使用docker run -d运行容器时会出现一行容器的“长ID”,短ID是长ID的前12个字符

技术分享

可以通过容器的ID来启动或者停止容器;启动:docker start CONTAINER ID 停止:docker stop CONTAINER ID

技术分享

技术分享 

IMAGE:容器使用的镜像

COMMAND:创建容器的时候使用的命令

CREATED:创建时间

STATUS:运行状态

PORTS:端口

NAME:容器名字,当我们没有指定容器名字的时候,会随机分配一个名字,我们可以通过--name来指定容器的名字

 技术分享

 

centos7下安装docker(8.1运行容器)

标签:images   exit   启动   span   while语句   技术分享   必须   如何   logs   

原文地址:http://www.cnblogs.com/lkun/p/7709894.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!