Docker基础-8-初识container

前面介绍了什么是镜像(image)和镜像的简单操作,例如查看当前系统有哪些镜像,如何从仓库拉取镜像,如何通过dockerfile制作一个镜像。前面我们在制作容器之后,使用了docker run这个命令,通过这个命令,其实就产生了一个容器。这篇,我们开始学习容器,这篇主要了解下什么是容器。

上面这张图,可以辅助我们去理解下面几个容器的特点。

  1. 通过image创建
  2. 在image layers之上建立一个container layer,这个容器层是可以读写操作
  3. Image负责app的存储和分发,container负责运行app

现有image才能创建container, 这个我们可以拿类和对象来比喻image和container,先有类,才有具体对象,对象是类的实例。同样,容器是通过Image来创建的。Container是在原先的image基础之前增加一层。

 

如何启动一个容器

前面我们知道如何通过docker build命令,根据Dockerfile来制作一个镜像,那么容器如何启动呢。这里来学习关于容器的第一个docker命令,叫做docker run

下面截图,我们通过docker run 镜像名称来启动一个容器。

首先,查看系统有哪些image

然后,我这里来通过anthony/hello-docker这个镜像来启动一个容器。

打印了hello docker,说明容器运行了,产生了打印输出效果。

 

如何列举容器清单

但是容器在哪里呢?输入docker container ls 命令

命令docker container ls是用来查看当前运行的容器,上面显示查询结果没有找到运行的容器,怎么回事呢?原来我们上面虽然打印了hello docker,只不过这个程序不是一个常驻内存运行的程序,打印完就退出了容器。怎么看出这个容器是否是退出状态呢?

在上面命令基础上添加一个参数 —a 就能显示全部的容器,上面容器状态是退出状态。而且有一个容器ID,还显示这个容器对应的镜像名称,以及创建时间等信息。这里我们重点看看COMMAND这一列,为什么这里显示“/hello”,这个容器会默认启动的时候运行Dockfilefile中的CMD的命令。

 

交互式运行容器方法

上面我们做过的实践都是运行完容器就显示退出状态,那么有没有交互式运行容器呢,不让容器显示退出状态。既然容器有退出状态,那么容器还有其他什么状态呢?

为了跟着我们练习,你需要提前通过docker pull centos来拉取一个默认tag是latest 的镜像。

我们还是跟着上面知识来运行centos容器。

运行之后,发现确实多了一个叫centos的退出状态的容器。

当前还不是交互式,下面介绍一个很重要的命令,通过这个命令,我们可以交互式操作容器,帮助我们来理解,容器是可读写操作这个特点的。这个命令为docker run –it centos来交互式操作容器。

上面我进入了这个容器,通过root@后面的看出来,这个是容器的ID,我在这个容器里创建了一个test.txt文件。整个过程就是一个交互的过程,如果你怀疑,你可以在交互式过程中,利用yum来安装一个java,可以试试这个操作。

输入exit命令就直接退到外边的Linux机器,而且这个容器里面就显示退出状态。

 

容器的各种状态

既然容器有退出状态,那么容器还有启动和停止状态吧。

通过docker run -it命令我们在一次启动一个容器,然后在另外一个ssh session来看这个容器是在运行状态。

一个容器在运行状态,这里就显示UP,那么有没有类似stop的状态呢。我目前不确定有没有Stop或者Down这个状态,但是我知道还有一个Dead的状态,就是服务死了的状态。

这篇容器简单认识就介绍这里,需要多动手去实践,敲敲命令。下一篇就简单来介绍docker的命令,会挑一部分来实战练习。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值