docker

简介: Docker是基于Go语言的开源容器技术,实现“一次镜像,处处运行”。它通过容器化隔离应用,对比传统虚拟机更轻量、启动更快。核心组件包括镜像、容器和仓库,利用宿主机内核高效运行,广泛应用于开发、部署与运维全流程。

01-Docker概述

Docker简介
Docker是基于Go语言实现的云开源项目。

Docker的主要目标是:Build, Ship and Run Any App, Anywhere,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP及其运行环境能做到一次镜像,处处运行。

传统虚拟机和容器

传统虚拟机(virtual machine):
传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统(如VirtualBox、VMware等),创建虚拟机(虚拟出各种硬件),在虚拟机上安装从操作系统,在从操作系统中安装部署各种应用。
缺点:资源占用多、冗余步骤多、启动慢

Linux容器(Linux Container,简称LXC):
Linux容器是与系统其他部分分隔开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。

Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一的运行。

ISOLATE SYSTEMS

ISOLATE APPLICATIONS

APP #1

APP #3

APP #2

BINS/LIBS

BINS/LIBS

BINS/LIBS

GUEST OS

GUEST OS

GUEST OS

APP #2

APP #1

APP #3

BINS / LIBS

BINS / LIBS

BINS/LIBS

DOCKER DAEMON

HYPERVISOR

HOST OPERATING SYSTEM

HOST OPERATING SYSTEM

INFRASTRUCTURE

INFRASTRUCTURE

VIRTUALMACHINES

DOCKER CONTAINERS



对比:

特性

容器

虚拟机

启动

秒级

分钟级

大小

一般为Mb

一般为Gb

速度

接近原生

比较慢

系统支持数量

单机支持上千个容器

一般几十个


Docker运行速度快的原因

Docker有比虚拟机更少的抽象层:
由于Docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在CPU、内存利用率上docker有明显优势。

Docker利用的是宿主机的内核,而不需要加载操作系统OS内核:
当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较耗时耗资源的过程。当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而Docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。

Docker容器的本质就是一个进程。
Docker软件
Docker并非一个通用的容器工具,它依赖于已经存在并运行的Linux内核环境。(在Windows上安装Docker时需要依赖WLS,也即Windows下的Linux子系统)。

Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的Linux主机。

Docker的基本组成部分:
镜像(image)
容器(container)
仓库(repository)

Docker镜像

Docker镜像就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建多个容器。

Docker容器

Docker利用容器独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。

Docker仓库

Docker仓库是集中存放镜像文件的场所。
仓库分为公开仓库和私有仓库两种。
最大的公开仓库是Docker官方的Docker Hub:https://hub.docker.com/
Docker架构
Docker是一个 C/S(Client-Server) 结构的系统,后端是一个松耦合架构,众多模块各司其职。

Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从容器接收命令并管理运行在主机上的容器。




Docker运行的基本流程为:
1用户是使用Docker Client 与 Docker Daemon 建立通信,并发送请求给后者
2Docker Daemon 作为 Docker 架构的主体部分,首先提供 Docker Server 的功能使其可以接收 Docker Client 的请求
3Docker Engine 执行 Docker 内部的一系列工作,每一项工作都是以一个 Job 的形式存在
4Job 的运行过程中,当需要容器镜像时,则从 Docker Registry 中下载镜像,并通过镜像管理驱动 Graph Driver 将下载镜像以 Graph 的形式存储
5当需要为 Docker 创建网络环境时,通过网络管理驱动 Network driver 创建并配置 Docker 容器网络环境
6当需要限制 Docker 容器运行资源或执行用户指令等操作时,则通过 Exec driver 来完成
7Libcontainer 是一项独立的容器管理包,Network driver 以及 Exec driver 都是通过 Libcontainer 来实现具体对容器进行的操作


相关文章
|
2月前
|
缓存 前端开发 JavaScript
Nginx性能优化
本课程深入讲解Nginx性能优化三大核心:动静分离、客户端缓存与Gzip压缩,涵盖反向代理配置、负载均衡实现及日志分析技巧,结合Shell命令与GoAccess工具进行实战统计,助力掌握企业级Web服务优化方案。
226 35
Nginx性能优化
|
3月前
|
人工智能 前端开发 算法
大厂CIO独家分享:AI如何重塑开发者未来十年
在 AI 时代,若你还在紧盯代码量、执着于全栈工程师的招聘,或者仅凭技术贡献率来评判价值,执着于业务提效的比例而忽略产研价值,你很可能已经被所谓的“常识”困住了脚步。
1855 89
大厂CIO独家分享:AI如何重塑开发者未来十年
|
2月前
|
边缘计算 运维 前端开发
阿里云 ESA “函数和Pages”全面开放|打通开发者“最后一公里”!
随着云计算技术的不断下沉,从中心云到边缘云的演进已成为不可逆转的趋势。为了满足开发者对更低延迟、更灵活部署以及更低运维成本的极致追求,阿里云 ESA 正式推出了备受期待的「函数和Pages」功能。这一发布标志着阿里云迈出了关键一步——让计算触手可及,让部署快如闪电。
阿里云 ESA “函数和Pages”全面开放|打通开发者“最后一公里”!
|
2月前
|
关系型数据库 MySQL 数据库
基于python的电子商城购物系统
本研究基于Flask与Vue.js构建前后端分离的电商管理系统,结合MySQL实现高效数据管理。系统具备商品管理、订单处理、用户交互等功能,提升运营效率与用户体验,具有良好的扩展性与维护性,助力电商企业应对激烈市场竞争,推动智能化发展。
|
达摩院 语音技术 开发工具
达摩院FunASR离线文件转写SDK发布,完成工业落地“最后一公里”
达摩院FunASR离线文件转写SDK发布,完成工业落地“最后一公里”
1641 0
|
2月前
|
Cloud Native Ubuntu Linux
云原生
Docker是一个基于Go语言的开源容器化平台,实现“一次镜像,处处运行”。它通过容器技术将应用及其依赖打包,实现高效、轻量的部署与隔离,相比传统虚拟机启动更快、资源占用更少。
156 1
云原生
|
2月前
|
Java 关系型数据库 MySQL
基于springboot的二手物品交易系统
本研究聚焦二手交易平台的网络化转型,探讨其在社会经济快速发展背景下的必要性与意义。结合SpringBoot、Java、MySQL等技术,分析系统设计与实现路径,旨在提升平台管理效率、降低成本,推动二手交易向规范化、信息化发展,助力现代化服务体系建设。
|
运维 算法 调度
系统授权license方案
软件系统设计关于授权时的一点见解
|
前端开发 小程序 API
2025最新社区论坛小程序前端uin后端ThinkPHP打造同城社交论坛行业圈子交流模式
定位本地化实名社交,融合LBS同城生活与行业兴趣圈子。支持发帖、私信、智能推荐,涵盖本地资讯与垂直交流,构建城市邻里与职业人脉双生态,助力用户发现身边事、拓展同行圈。
1066 0
2025最新社区论坛小程序前端uin后端ThinkPHP打造同城社交论坛行业圈子交流模式
|
4月前
|
弹性计算 运维 安全
阿里云轻量应用服务器38元1年和云服务器99元1年怎么选?二者性能区别及选择参考
在阿里云当下的活动中,38元/年的轻量应用服务器与99元/年的云服务器ECS成为众多新用户的关注焦点。但是有部分用户并不是很清楚二者之间的区别,因此就不知道应该如何选择。接下来,笔者将为您详细剖析ECS云服务器与轻量应用服务器的差异,以供您参考和选择。
497 4
阿里云轻量应用服务器38元1年和云服务器99元1年怎么选?二者性能区别及选择参考