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

相关文章
|
1月前
|
Kubernetes 调度 Docker
深入探讨容器编排技术:从Docker到Kubernetes
容器编排在现代IT中日益关键,从Docker到Kubernetes,助力应用的自动化部署和扩展。Docker提供容器技术,打包应用及环境为镜像,通过引擎、镜像、容器、网络和存储组件实现隔离运行。Kubernetes作为高级容器编排平台,管理Pod(多容器集合),其核心包括API服务器、控制器管理器、调度器和Kubelet。Kubernetes集群由Master和Worker节点构成,实现Pod的高效调度和运行。
185 6
|
1月前
|
持续交付 开发者 Docker
深入了解 Docker:革命性的容器化技术
Docker,自2013年起,革新了软件开发和部署,解决了环境差异问题。这个轻量级容器技术基于Linux容器(LXC),提供应用程序隔离和环境一致性。Docker通过容器化实现快速部署、CI/CD集成和微服务架构。相比虚拟机,Docker更轻便,不需模拟完整操作系统。它简化流程,提升效率,促进了容器化技术的普及。
110 0
|
1月前
|
Java Go 开发者
Docker容器技术简介及其与Go语言的结合点
【2月更文挑战第23天】本文首先概述了Docker容器技术的核心概念和优势,接着探讨了Go语言与Docker容器技术的结合点。通过阐述Docker的轻量级、可移植性和版本控制等特性,以及Go语言在容器化应用中的优势,本文旨在说明两者结合能够实现更高效、灵活的应用开发和部署。
|
1月前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
8天前
|
存储 测试技术 Linux
Docker技术仓库
本文详细介绍了Docker中数据卷的作用、特点、管理方式,包括bindmounts和volumes挂载、Dockerfile中的数据卷使用、Docker仓库(公有与私有)以及DockerCompose在多容器应用中的应用。
|
17天前
|
运维 Ubuntu Docker
深入理解容器化技术:Docker的应用与实践
在这个数字化转型迅速推进的时代,容器化技术为软件开发和部署提供了新的路径。本文将深入探讨Docker技术的基本原理、应用场景以及实际操作,旨在帮助读者全面理解并掌握这一关键技术。
111 2
|
19天前
|
运维 Kubernetes 持续交付
Docker与Kubernetes:容器化技术的黄金搭档
【6月更文挑战第10天】Docker和Kubernetes是容器化技术的黄金组合,Docker提供轻量级、可移植的容器引擎,简化应用部署,而Kubernetes作为容器编排系统,实现自动化部署、扩展和管理,确保高可用性和可扩展性。两者的协作使得容器化应用更高效、可靠,共同推动软件开发和运维的创新。
|
3天前
|
Docker 容器
技术经验分享:Docker安装及更换源
技术经验分享:Docker安装及更换源
26 0
|
8天前
|
应用服务中间件 Go 数据库
Docker核心技术(二)
Docker核心功能包括`docker container inspect`用于检查容器详情,`docker logs`显示容器日志,`docker attach`连接容器。容器与镜像是独立的,镜像是静态的执行环境,容器是动态实例。Docker提供多种网络模式,如默认的bridge、host、none、overlay和macvlan。管理网络的命令有`docker network ls`(列出网络)、`docker network create`(创建网络)、`docker network rm`(删除网络)和`docker network inspect`(检查网络详情)。
|
1月前
|
存储 Linux 调度
Ubantu docker学习笔记(五)容器底层技术
Ubantu docker学习笔记(五)容器底层技术