1什么是容器
上面这张图,可以辅助我们去理解下面几个容器的特点。
1、通过image创建
2、在image layers之上建立一个container layer,这个容器层是可以读写操作
3、Image负责app的存储和分发,container负责运行app
现有image才能创建container, 这个我们可以拿类和对象来比喻image和container,先有类,才有具体对象,对象是类的实例。同样,容器是通过Image来创建的。Container是在原先的image基础之前增加一层。
2如何启动一个容器
这里来学习关于容器的第一个docker命令,叫做docker run
下面截图,我们通过docker run 镜像名称来启动一个容器。
首先,查看系统有哪些image
然后,我这里来通过docker run centos 这个镜像来启动一个容器,输入命令后没啥反馈。
然后,列举容器清单
但是容器在哪里呢?输入docker container ls 命令
命令docker container ls是用来查看当前运行的容器,上面显示查询结果没有找到运行的容器,怎么回事呢?原来我们上面虽然运行了一下docker run centos,只不过这个程序没有常驻内存运行,运行完就退出了容器。怎么看出这个容器是否是退出状态呢?
在上面命令基础上添加一个参数 —a 就能显示全部的容器,上面容器状态是退出状态。而且有一个容器ID,还显示这个容器对应的镜像名称,以及创建时间等信息。
3交互式运行容器方法
上面我们做过的实践都是运行完容器就显示退出状态,那么有没有交互式运行容器呢,不让容器显示退出状态。既然容器有退出状态,那么容器还有其他什么状态呢?
下面介绍一个很重要的命令,通过这个命令,我们可以交互式操作容器,帮助我们来理解,容器是可读写操作这个特点的。这个命令为docker run –it centos来交互式操作容器。
上面我进入了这个容器,通过root@后面的看出来,这个是容器的ID,我在这个容器里创建文件,可以安装软件包。
输入exit命令就直接退到外边的Linux机器,而且这个容器里面就显示退出状态。
4容器的各种状态
既然容器有退出状态,那么容器还有启动和停止状态吧。
通过docker run -it 命令我们在一次启动一个容器,然后在另外一个ssh session来看这个容器是在运行状态。
一个容器在运行状态,这里就显示UP,那么有没有类似stop的状态呢。我目前不确定有没有Stop或者Down这个状态,但是我知道还有一个Dead的状态,就是服务死了的状态。