Docker核心技术之容器详解(一)

简介: Docker核心技术之容器详解(一)

一、容器简介



容器(Container):容器是一种轻量级、可移植、并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行 Docker将镜像文件运行起来后,产生的对象就是容器。容器相当于是镜像运行起来的一个实例。 容器具备一定的生命周期。 另外,可以借助docker ps命令查看运行的容器,如同在linux上利用ps命令查看运行着的进程那样。


二、容器与虚拟机



Docker容器与虚拟机相同点


容器和虚拟机一样,都会对物理硬件资源进行共享使用。


容器和虚拟机的生命周期比较相似(创建、运行、暂停、关闭等等)。


容器中或虚拟机中都可以安装各种应用,如redis、mysql、nginx等。也就是说,在容器中的操作,如同在一个虚拟机(操作系统)中操作一样。


同虚拟机一样,容器创建后,会存储在宿主机上:linux上位于/var/lib/docker/containers下


Docker容器与虚拟机不同点


注意:容器并不是虚拟机,但它们有很多相似的地方


虚拟机的创建、启动和关闭都是基于一个完整的操作系统。一个虚拟机就是一个完整的操作系统。而容器直接运行在宿主机的内核上,其本质上以一系列进程的结合。


容器是轻量级的,虚拟机是重量级的。首先容器不需要额外的资源来管理(不需要Hypervisor、Guest OS),虚拟机额外更多的性能消耗;其次创建、启动或关闭容器,如同创建、启动或者关闭进程那么轻松,而创建、启动、关闭一个操作系统就没那么方便了。


也因此,意味着在给定的硬件上能运行更多数量的容器,甚至可以直接把Docker运行在虚拟机上。


              20190422235858960.png             20190422235909971.png


三、容器的生命周期



虚拟机的生命周期


2019042300001192.png


容器的生命周期


2019042300004423.png


四、容器的生命周期管理



容器创建 – 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等等


命令演示:


20190423000410333.png


容器启动 – docker start


作用:     将一个或多个处于创建状态或关闭状态的容器启动起来


命令格式:    


docker start [OPTIONS] CONTAINER [CONTAINER...]


命令参数(OPTIONS):    


-a, --attach        将当前shell的 STDOUT/STDERR 连接到容器上     
                                          -i, --interactive        将当前shell的 STDIN连接到容器上
命令演示:


20190423000529916.png20190423000539511.png


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):     无


命令演示:


20190423000729415.png


容器取消暂停 – docker unpause


作用:     取消一个或多个处于暂停状态的容器,恢复运行


命令格式:  

docker unpause CONTAINER [CONTAINER...]


命令参数(OPTIONS):     无


命令演示:


20190423000829892.png


容器关闭 – docker stop


作用:     关闭一个或多个处于暂停状态或者运行状态的容器


命令格式:    


docker stop [OPTIONS] CONTAINER [CONTAINER...]


命令参数(OPTIONS):  


-t, --time int           关闭前,等待的时间,单位秒(默认 10s)
命令演示:

20190423000938630.png


容器终止 – docker kill


作用:     强制并立即关闭一个或多个处于暂停状态或者运行状态的容器


命令格式:    


docker kill [OPTIONS] CONTAINER [CONTAINER...]


命令参数(OPTIONS):  


-s, --signal string       指定发送给容器的关闭信号 (默认“KILL”信号)


命令演示:


20190423001128705.png

目录
相关文章
|
7月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
780 51
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
7月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
836 6
|
7月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
754 6
|
7月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
677 2
|
7月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
1061 4
|
9月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1268 108
|
10月前
|
存储 监控 测试技术
如何将现有的应用程序迁移到Docker容器中?
如何将现有的应用程序迁移到Docker容器中?
742 57