docker核心概念

一: 容器介绍

简介

1.0 云计算三层架构:

IaaS:基础设施即服务(毛坯房)

  • 云厂商给虚拟机 / ECS 服务器。你自己装系统、搭环境、部署代码

PaaS:平台即服务(精装拎包入住,适合开发)

  • 底层硬件 + 操作系统 + 运行时全部托管。

    开发者只管业务代码。

    典型产品:云数据库 RDS、Redis、函数计算、Heroku、Cloud Foundry、K8s 平台

SaaS:软件即服务(酒店)

  • 直接使用成品软件,不用开发。

    例子:钉钉、腾讯文档、企业微信

2.0 容器的简介:PaaS理想状态

  • 容器是一种沙盒技术。沙盒类似于"集装箱",是把我们的应用装起来的技术;
  • 因此应用与应用之间有了边界就不会相互打扰;
  • 被集装箱装起来的应用也可以搬来搬去

docker介绍

1.0 docker简史:

  • 和虚拟机一样,容器技术也是一种资源隔离的虚拟化技术。

  • 爆发阶段:2013 年推出到现在为止最为流行和使用最广泛的容器 Docker(Docker 发布),相比其他早期的容器技术,Docker 引入了一整套容器管理的生态系统,包括分层的镜像模型,容器注册库,友好的 Rest API。

  • 2015年:OCI(Open Container Initiative)成立,制定了容器镜像标准(OCI Image Spec) 和容器运行时标准(OCI Runtime Spec),打破 Docker 的垄断,让容器技术走向标准化;同时 Kubernetes(K8s)发布,解决了容器的编排、调度、集群管理问题,成为容器集群的事实标准。

​ 注意:OCI是开放容器倡议,目标:镜像一次构建,任意符合 OCI 标准的工具都能运行,打破厂商锁定。

2.0 docker需求成因:

  • 平滑迁移:应用从集中式部署转向分布式部署;不同环境(虚拟机,公有云,私有云)里面的应用可能会随时迁移;docker的出现是让程序到哪里都可以运行,不用针对不同环境修改配置。
  • 类比于运输业:docker采用集装箱思想;Docker 可以将任何应用和他的依赖打包成一个轻量级、可移植、自包含的容器。容器可以运行在几乎所有的操作系统上。这样容器就可以跑在任何环境中,

3.0 docker和传统模式区别:

部署模式区别:

  • 传统:先安装,再配置,最后再运行

  • Docker部署模式:复制后直接运行

容器和虚拟机区别:

  • docker运行速度快:键盘回车多快,容器运行就有多快
  • 容器用宿主机内核,而虚拟机使用独立内核
  • 容器是一个进程,而虚拟机不是
  • 容器是进程之间的隔离(容器之间共用宿主机内核);虚拟机是所有资源的完全隔离;

4.0 容器应用场景:

  • 所有硬件:它能让你将运行环境和配置放在代码中然后部署,同一个Docker的配置可以在不同的环境中使用
  • 统一开发环境:Docker给应用提供了一个从开发到上线均一致的环境
  • 提高开发效率:开发者希望本地环境和线上一致,又希望环境好搭建。Docker 轻量化,低配电脑也能同时运行大量服务,兼顾环境一致性与资源开销问题。
  • 隔离应用
  • 快速部署

虚拟化和容器

背景:

  • 硬件辅助虚拟化(虚机)解决了性能和兼容问题,但 "重虚拟化" 的弊端逐渐显现:每个虚机的独立内核导致资源开销大、启动速度慢(分钟级)、镜像体积大(GB 级)、资源调度效率低。

  • 随着云计算、微服务、DevOps 的发展,企业对轻量、快速、高效、可移植的虚拟化需求激增,容器作为操作系统级虚拟化技术,应运而生并快速成为主流。

核心原理:

  • Docker通过内核的隔离特性(Linux 的 cgroups+namespaces,Windows 的 Hyper-V 隔离 / WSL)实现进程级的资源隔离与限制。
  • 所有容器共享宿主机的 OS 内核,容器本质是被隔离的、独立的进程组,虚拟化层(容器引擎)仅为容器分配独立的网络、进程、文件系统、用户等命名空间,并通过 cgroups 限制其 CPU、内存、磁盘、网络等资源的使用上限。

docker核心技术:

  • Namespaces(命名空间):实现隔离性,为每个容器创建独立的 "系统环境",容器内的进程无法看到宿主机和其他容器的资源,包括:PID(进程号)、NET(网络)、MNT(文件系统)、IPC(进程通信)、UTS(主机名)、USER(用户);
  • cgroups(控制组):实现资源限制,对容器的 CPU、内存、磁盘 IO、网络带宽等资源做精细化分配和限制,防止单个容器占用所有宿主机资源;
  • 联合文件系统(UnionFS):如 AUFS、Overlay2,实现容器镜像的分层存储,让容器镜像体积大幅减小(MB 级),并支持镜像的快速构建、推送和拉取;

二: Docker核心概念

docker系统

Docker系统有两个程序:Docker服务端和Docker客户端

服务端:

  • 是一个服务进程,管理着所有的容器。
  • docker engine

客户端:

  • 扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程

docker核心组件

1.0 docker仓库:

  • 用来保存镜像,有私有和公有区分

2.0 docker镜像:

  • Docker镜像是容器运行时的只读模版
  • 每一镜像由一系列层组成;Docker 使用 UnionFS 来将这些层联合到单独的镜像中;UnionFS 允许独立文件系统中的文件和文件夹(称之为分支)被透明覆盖,形成一个单独连贯的文件系统
  • 升级程序到新的版本,一个新的层会被创建,因此不需要重新建立镜像。层使得分发 Docker 镜像变得简单和快速
  • 每一个镜像都可能依赖于由一个或多个下层的组成的另一个镜像。下层那个镜像是上层镜像的父镜像

3.0 docker容器:

  • 每一个 Docker 容器都是从 Docker 镜像创建的
  • Docker 容器和文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的环境
  • 每一个 Docker 容器都是独立和安全的应用平台,Docker 容器是 Docker 的运行部分

4.0 镜像和容器的区别:

  • Docker容器是在镜像层上面加上了一个可写层;并且可写层有运行在cpu上面的进程,因此有运行态和退出态
  • 对容器的变更是写入到容器的文件系统的(可写层),而不是写入到Docker镜像中的
  • 我们可以用同一个镜像启动多个Docker容器,这些容器启动后都是活动的,彼此还是相互隔离的。我们对其中一个容器所做的变更只会局限于那个容器本身
  • 如果对容器的底层镜像进行修改,那么当前正在运行的容器是不受影响的,不会发生自动更新现象

5.0 名字空间:

namespace(名字空间)是 Linux 内核一个强大的特性。每个容器都有自己单独的名字空间,运行在其中的应用都像是在独立的操作系统中运行一样。名字空间保证了容器之间彼此互不影响。

  • 容器 = 进程 + 一组 Namespace + Cgroups
  • Namespace 的作用:实现容器之间的资源隔离
  • 让每个容器看起来像独立的操作系统,互不干扰

Linux Namespace 是实现容器资源隔离的核心技术,Docker 基于 LXC,依靠 6 种命名空间实现容器隔离,系统时钟无法被 Namespace 隔离

  1. pid 名字空间

    隔离进程 PID;不同命名空间可存在相同 PID,实现进程隔离,支持容器嵌套。

  2. net 名字空间

    隔离网络;拥有独立网卡、IP、路由表、/proc/net;Docker 默认使用 veth pair 连接容器与宿主机网桥 docker0。

  3. ipc 名字空间

    隔离进程间通信;容器内信号量、消息队列、共享内存、socket 等 IPC 资源拥有独立 ID,容器间 IPC 相互隔离。

  4. mnt 名字空间

    隔离文件系统挂载;各容器拥有独立目录视图,比 chroot 更强,独立挂载点列表。

  5. uts 名字空间

    隔离主机名与域名;容器可以设置独立 hostname,网络层面看起来是独立节点。

  6. user 名字空间

    隔离用户 / 组 ID;容器内用户 ID 和宿主机可以不一致,容器内可使用自身独立用户,不和宿主机用户混用。

相关推荐
weigangwin2 小时前
agent-workspace-linux 不是远程桌面:Linux AI 工作区的隔离边界验收
linux·xvfb·mcp·桌面隔离·权限边界·bubblewrap·agent-workspace
renhongxia12 小时前
世界模型,是“空中楼阁”还是AGI的“最后一块拼图”?
运维·服务器·数据库·人工智能·算法·agi
Dovis(誓平步青云)3 小时前
远程办公软件文件传输实测:6 款工具的速度、稳定性和办公体验对比
linux·运维·服务器·后端·生成对抗网络
专注_每天进步一点点3 小时前
SLB(绑定弹性公网ip)-gateway-业务pod,gateway上出现reset by peer,业务pod上没有reset by peer
服务器·tcp/ip·gateway
Java小白笔记4 小时前
Docker 安装配置完全指南:MacOS 、Windows、Linux环境下的安装、配置与验证
linux·macos·docker
csdn_aspnet4 小时前
GitHub Actions自动化运维实战,用CI/CD流水线实现测试、部署、安全扫描一体化
运维·安全·ci/cd·自动化·github
ACP广源盛139246256735 小时前
GSV6155@ACP# 搭配 AI 服务器、AI PC 完整适配方案
大数据·服务器·人工智能·分布式·单片机·嵌入式硬件
Inhand陈工5 小时前
数据中心UPS无功补偿与智能化监控方案:基于IG502的Modbus RTU转IEC61850实战
运维·人工智能·物联网·信息与通信
qetfw5 小时前
CentOS 7 搭建 LDAP 目录服务
linux·运维·centos