云计算
什么是容器?
容器( Container ) :容器是一种轻量级、可移植的封装APP应用程序的技术,几乎可以在任何地方以相同的方式执行APP应用程序。 当docker运行镜像文件时,生成的对象是容器。 容器相当于执行镜像的实例,并且容器具有特定的生命周期。
文档容器与虚拟机的区别
同一点:
容器与虚拟机一样,共享和使用物理硬件资源。
容器和虚拟机的生命周期比较相似(创建、运行、暂停、关闭等)。
可以在容器和虚拟机上安装各种APP应用程序,如Redis、mysql和nginx。 这意味着在容器中的操作与在虚拟机(操作系统)中的操作相同。
与虚拟机一样,容器存储在主机上。 在linux上,位于/var/lib/docker/containers下
不同点:
的虚拟机的创建、启动和关闭基于完整的操作系统。 虚拟机是一个完整的操作系统。 容器直接在宿主机的内核上执行,本质上是一系列进程的结合。
集装箱重量很轻,虚拟机是重量级的。 首先,容器不需要额外的资源来管理(不需要虚拟机管理程序和来宾操作系统),虚拟机需要增加性能消耗,然后创建、启动或关闭容器就是创建、启动或关闭进程
这意味着可以在指定的硬件上运行更多的容器,也可以直接在虚拟机上运行Docker。
集装箱的生命周期管理
我们先来看看容器的生命周期示意图。
下面的咸鱼简单学习一下容器管理的部分命令。
创建容器( docker create )
命令格式:
docker create [参数]镜像名称[容器执行命令][执行命令时需要提供的参数]
一般参数:
-t分配虚拟终端
-i提供模拟输入。 不提供的话就不能输入默认命令
--name为创建的容器提供容器名称,不提供时随机分配一个
容器启动( docker start )
启动一个或多个容器。
命令格式:文档开始[参数]容器[容器. ]
一般参数:
-a将当前输入和输出连接到容器
-i将当前输入连接到容器
创建并启动容器( docker run ) )。
命令格式:
docker run [“参数”镜像“容器执行命令”“执行命令提供的参数”
一般参数:
-t分配虚拟终端
保持-i输入打开
-d在后台运行容器并打印容器id
-RM容器完成后自动删除容器
注意:因为我们学习docker主要是在我们之后为基于docker的Python开发的服务,所以关于docker run和docker create/start的一些参数的具体区别我不会在文章中介绍。 有疑问的人请参考官方文件。 当然,也欢迎在留言区和咸鱼进行讨论。 在这里简单地记住两个公式就好了。
docker run=dokercreatedockerstart-a
docker run-d=dockercreatedockerstart
在此,建议使用docker run -dti启动所需的容器。
容器暂停( docker pause/unpause ) )。
文档密码将暂停一个或多个容器
docker unpause将启动一个或多个暂停的容器
命令格式:
文档密码/取消密码容器[容器. ]
(“容器封闭”( docker stop ) ) ) )。
关闭一个或多个容器。
docker stop关闭一个或多个容器
命令格式:
文档停止容器[容器. ]
一般参数:
-t关闭前的等待时间,默认为10秒
容器结束( docker kill )
强制立即关闭一个或多个已暂停或正在运行的容器。
命令格式: docker kill [参数]容器[容器. ]
一般参数:
-s指定容器的关闭信号。 默认值为“kill”
重新启动容器( docker restart )
重新启动一个或多个正在运行、暂停、停止或创建的容器。
命令格式:
docker restart [参数]容器[容器. ]
一般参数:
-t关闭之前的等待时间,默认为10秒,实际上是关闭之前的等待时间
删除容器( docker container rm/docker rm )
命令格式:文档容器RM [参数]容器[容器. ]
一般参数:
-f强制删除
-v删除容器的同时也删除容器的数据卷
文件库kill和文件库stop的区别
上面在docker容器的生命周期管理中stop和kill关闭了容器,其中的kill是如何实现强制杀死正在运行的容器的呢?
在此,需要说明下关linux上进程结束的相关信号。 SIGTERM和SIGKILL
SIGKILL信号:无条件结束过程信号。 当接收到此信号时,进程将立即停止,不执行清理和转移操作。 此信号不能被忽略、处理或阻止。 为系统管理员提供了一种可以扼杀任何进程的方法。
SIGTERM信号:程序结束信号。 可以使用kill命令生成。 与SIGKILL不同,它可以阻止SIGTERM信号并退出,从而使程序可以在退出之前保存工作和清理临时文件等。
docker stop首先向进程发送SIGTERM信号,告知进程将关闭。 经过-t指定的等待时间后,立即发出SIGKILL信号,直接关闭容器。
docker kill直接发出SIGKILL信号关闭容器。 但是,也可以修改由-s参数发出的信号。
也可以在docker restart中设置-t等待时间。 等待时间过后马上发送SIGKILL信号,直接关闭集装箱。
因此,如果在等待docker stop时中止执行docker stop,则容器最终不会关闭。 docker kill几乎立即发生,无法撤销。
总结
对于docker容器的生命周期管理,咸鱼踩坑后需要加深理解的部分有docker run/start/create和docker kill/stop/restart两大部分。
关于docker kill和docker stop的区别,请重点看上面的docker kill/stop的区别部分,对于docker run/start/create,是用不同的参数制作的职位
以上是对容器生命周期管理部分咸鱼踩穴的总结。
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn