Docker核心技术(一)

简介: 本文介绍了Docker的核心技术——容器,包括容器的定义、与虚拟机的区别,以及容器的生命周期阶段(创建、运行、暂停、停止和删除)。同时详细讲解了容器的网络管理和Docker提供的五种网络驱动模式。

Docker核心技术容器


容器(Container):容器是一种轻量级、可移植、并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行。


  • Docker将镜像文件运行起来后,产生的对象就是容器。
  • 容器具备一定的生命周期。        


容器与虚拟机


  • 容器和虚拟机一样,都会对物理硬件资源进行共享使用。
  • 容器和虚拟机的生命周期比较相似(创建、运行、暂停、关闭等等)。
  • 容器中或虚拟机中都可以安装各种应用如redis、mysql等。


Docker容器与虚拟机不同点:


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


容器的生命周期


容器的生命周期包括创建、运行、暂停、停止和删除等阶段


首先,在创建阶段,Docker引擎会读取Dockerfile中的指令构建镜像,然后使用该镜像创建一个新的容器,并在主机文件系统中生成一个独特的文件系统层。


接着,在运行阶段,容器中的应用开始执行,处理请求并与Docker引擎进行交互。此阶段中,可以进行网络设置和端口映射,确保容器可以与外界通信。


此外,在暂停阶段,容器内的所有进程都将被暂停,但可以在之后继续运行。而在停止阶段,容器将不再接受新的请求,并且其资源及状态可以被保留以便未来重启。最后,在删除阶段,将移除容器及其所有相关数据,包括主机文件系统中的文件系统层。



容器创建 – docker create


利用镜像创建出一个Created 状态的待启动容器:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]


-t, --tty                   分配一个伪TTY,也就是分配虚拟终端


-i, --interactive        即使没有连接,也要保持STDIN打开


--name                  为容器起名,如果没有指定将会随机产生一个名称



容器启动 – docker start


将一个或多个处于创建状态或关闭状态的容器启动起来:docker start [OPTIONS] CONTAINER [CONTAINER...]


-a, --attach        将当前shell的 STDOUT/STDERR 连接到容器上  


-i, --interactive        将当前shell的 STDIN连接到容器上    


容器创建并启动 – docker run


利用镜像创建并启动一个容器,docker run [OPTIONS] IMAGE [COMMAND] [ARG...]


-t, --tty                   分配一个伪TTY,也就是分配虚拟终端          


-i, --interactive        即使没有连接,也要保持STDIN打开


-d, --detach        在后台运行容器并打印出容器ID


--rm            当容器退出运行后,自动删除容器


容器暂停 – docker pause


暂停一个或多个处于运行状态的容器 :docker pause CONTAINER [CONTAINER...]


容器取消暂停 – docker unpause


docker unpause CONTAINER [CONTAINER...]


容器关闭 – docker stop


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


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



-t, --time int           关闭前,等待的时间,单位秒  


容器终止 – docker kill


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


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


-s,--signal string       指定发送给容器的关闭信号


docker stop和docker kill的区别:


  • Docker stop:该命令首先向容器发送SIGTERM信号,允许容器内的进程捕获此信号并执行一系列结束前的清理工作,如保存当前状态、完成正在处理的请求或释放占用的资源。如果在默认的宽限期(通常为10秒)内,容器内的主进程没有响应SIGTERM信号并优雅地停止,Docker将随后发送SIGKILL信号,以确保容器被终止。
  • Docker kill:该命令直接向容器发送SIGKILL信号,这是一个不能被捕获或忽略的信号,会立即终止容器中的所有进程。这种停止方式不允许进行任何清理或保存状态的操作,因此被认为是一种“硬”终止方式。




Docker核心技术(二)+https://developer.aliyun.com/article/1544302?spm=a2c6h.13148508.setting.17.1fa24f0eHs4uWw

相关文章
|
16天前
|
运维 持续交付 Docker
深入理解Docker容器化技术
深入理解Docker容器化技术
|
1月前
|
运维 网络安全 持续交付
IDEA+Docker 远程一键部署项目:技术干货分享
【10月更文挑战第4天】在现代软件开发中,快速、可靠、自动化的部署流程是提升开发效率和运维质量的关键。IDEA(IntelliJ IDEA)作为Java开发者首选的IDE,结合Docker这一轻量级容器化技术,能够实现远程一键部署项目,极大地简化了开发到生产的流程。今天,我将和大家分享这一组合在工作学习中的实际应用和技术干货。
248 3
|
20天前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
280 11
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
3天前
|
持续交付 开发者 Docker
探索容器化技术Docker及其在现代软件开发中的应用
探索容器化技术Docker及其在现代软件开发中的应用
|
8天前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
12天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
16天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
29天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
42 3
|
11天前
|
Kubernetes Docker 容器
掌握Docker容器化技术:从入门到实战
掌握Docker容器化技术:从入门到实战
18 0
|
1月前
|
存储 应用服务中间件 云计算
深入解析:云计算中的容器化技术——Docker实战指南
【10月更文挑战第14天】深入解析:云计算中的容器化技术——Docker实战指南
59 1
下一篇
无影云桌面