一、容器简介
容器(Container):容器是一种轻量级、可移植、并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行 Docker将镜像文件运行起来后,产生的对象就是容器。容器相当于是镜像运行起来的一个实例。 容器具备一定的生命周期。 另外,可以借助docker ps命令查看运行的容器,如同在linux上利用ps命令查看运行着的进程那样。
二、容器与虚拟机
Docker容器与虚拟机相同点
容器和虚拟机一样,都会对物理硬件资源进行共享使用。
容器和虚拟机的生命周期比较相似(创建、运行、暂停、关闭等等)。
容器中或虚拟机中都可以安装各种应用,如redis、mysql、nginx等。也就是说,在容器中的操作,如同在一个虚拟机(操作系统)中操作一样。
同虚拟机一样,容器创建后,会存储在宿主机上:linux上位于/var/lib/docker/containers下
Docker容器与虚拟机不同点
注意:容器并不是虚拟机,但它们有很多相似的地方
虚拟机的创建、启动和关闭都是基于一个完整的操作系统。一个虚拟机就是一个完整的操作系统。而容器直接运行在宿主机的内核上,其本质上以一系列进程的结合。
容器是轻量级的,虚拟机是重量级的。首先容器不需要额外的资源来管理(不需要Hypervisor、Guest OS),虚拟机额外更多的性能消耗;其次创建、启动或关闭容器,如同创建、启动或者关闭进程那么轻松,而创建、启动、关闭一个操作系统就没那么方便了。
也因此,意味着在给定的硬件上能运行更多数量的容器,甚至可以直接把Docker运行在虚拟机上。
三、容器的生命周期
虚拟机的生命周期
容器的生命周期
四、容器的生命周期管理
容器创建 – docker create
作用: 利用镜像创建出一个Created 状态的待启动容器
命令格式:
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
命令参数(OPTIONS):
-t, --tty 分配一个伪TTY,也就是分配虚拟终端 -i, --interactive 即使没有连接,也要保持STDIN打开 --name 为容器起名,如果没有指定将会随机产生一个名称
命令参数(COMMAND\ARG): COMMAND 表示容器启动后,需要在容器中执行的命令,如ps、ls 等命令 ARG 表示执行 COMMAND 时需要提供的一些参数,如ps 命令的 aux、ls命令的-a等等
命令演示:
容器启动 – docker start
作用: 将一个或多个处于创建状态或关闭状态的容器启动起来
命令格式:
docker start [OPTIONS] CONTAINER [CONTAINER...]
命令参数(OPTIONS):
-a, --attach 将当前shell的 STDOUT/STDERR 连接到容器上 -i, --interactive 将当前shell的 STDIN连接到容器上 命令演示:
docker run 与 docker create + docker start
docker run 相当于 docker create + docker start –a 前台模式 docker run -d 相当于 docker create + docker start 后台模式
容器暂停 – docker pause
作用: 暂停一个或多个处于运行状态的容器
命令格式:
docker pause CONTAINER [CONTAINER...]
命令参数(OPTIONS): 无
命令演示:
容器取消暂停 – docker unpause
作用: 取消一个或多个处于暂停状态的容器,恢复运行
命令格式:
docker unpause CONTAINER [CONTAINER...]
命令参数(OPTIONS): 无
命令演示:
容器关闭 – docker stop
作用: 关闭一个或多个处于暂停状态或者运行状态的容器
命令格式:
docker stop [OPTIONS] CONTAINER [CONTAINER...]
命令参数(OPTIONS):
-t, --time int 关闭前,等待的时间,单位秒(默认 10s) 命令演示:
容器终止 – docker kill
作用: 强制并立即关闭一个或多个处于暂停状态或者运行状态的容器
命令格式:
docker kill [OPTIONS] CONTAINER [CONTAINER...]
命令参数(OPTIONS):
-s, --signal string 指定发送给容器的关闭信号 (默认“KILL”信号)
命令演示: