资讯详情

资讯详情

镜像 Image|容器 Container|安装启动Docker

一、镜像 Image注意镜像这个词在计算机领域有两个完全不同的大场景1操作系统镜像ISO 系统镜像装机镜像2容器镜像Docker 镜像前面讲的此外还有端口镜像等。底层本质思想一致对一套数据 / 环境完整复制打包形成一个只读的副本文件但是底层原理不一样。1、镜像Image镜像Image就是把磁盘、分区、文件系统里所有数据完整打包生成的一个文件。这个文件保存了原数据在磁盘上的完整结构与全部内容相当于原磁盘 / 环境的 “快照副本”。核心特点镜像文件本身是静态文件放在硬盘上存储镜像本身不能直接运行需要被 “加载”挂载 / 解压 / 实例化之后才能使用里面的内容绝大多数镜像默认只读防止原始打包内容被篡改保证分发一致性。2、操作系统镜像2.1 定义把整个操作系统分区引导文件、系统内核、驱动、系统目录、所有文件打包成一个单独文件常见后缀.iso、.gho、.img。 比如 Windows ISO、Ubuntu ISO。2.2原理操作系统存放在磁盘上磁盘是按扇区组织数据。制作镜像时 程序会按扇区读取磁盘 / 分区的全部内容包括文件、文件夹结构、分区表、引导信息把所有内容连续打包到一个文件中不只是复制可见文件。普通复制文件只复制看得见的文件会丢失引导扇区、分区信息。制作镜像连磁盘底层的引导、分区信息一起打包。ISO 镜像文件内部是一个完整的只读文件系统。 使用时刻录到 U 盘 / 光盘 → U 盘就变成启动盘可以给电脑安装系统直接挂载Windows 资源管理器双击、Linux mount就像插入了一张虚拟光盘可以读取里面所有文件。2.3 用途操作系统安装最常见。官网下载的 Windows、Linux 安装包就是 ISO 镜像用来做系统安装盘。系统备份与还原Ghost 镜像电脑系统装好、配置完毕后打包成 gho 镜像。系统崩了直接用镜像还原几分钟恢复整套系统不用重装软件。虚拟机磁盘镜像.vhd .vdi .qcow2VMware、KVM 虚拟机的硬盘文件。虚拟机的硬盘并不是真实物理硬盘而是宿主机上一个镜像文件虚拟机读写磁盘本质读写这个镜像文件。文件分发光盘资料打包成 ISO方便网络传输不会丢失目录结构。2.4 特点✅ 打包完整操作系统内核✅ 包含引导程序可以独立开机启动 ✅ 文件体积大几个 GB 很常见3、Docker 镜像3.1定义镜像即“数据的完全复制副本”。官方定义是对某一目标数据文件、磁盘、系统等进行完整、精确的复制后形成的文件或载体核心是“1:1复刻”——不仅复制可见内容还包括隐藏文件、分区信息、权限设置、数据结构等所有细节。镜像是只读、静态的文件包。里面打包了应用程序、代码、依赖库、配置文件、环境变量、运行时、基础操作系统文件。不包含操作系统内核复用宿主机 Linux 内核。镜像不能运行只能被实例化。镜像采用分层文件系统每一次修改生成一层多层叠加只读。3.2特点①完整性普通复制可选择性复制文件镜像必须复刻所有数据哪怕是占空间的隐藏文件也不会遗漏②不可修改性镜像文件通常是“只读”的不能直接编辑内容避免误改导致副本失效需特殊工具挂载后才能操作③可恢复性镜像不仅是“副本”还自带恢复逻辑比如系统镜像可直接用于重装普通复制的系统文件无法直接恢复成可运行的系统。3.3作用作为创建容器的模板用来启动容器统一软件运行环境开发、测试、生产环境完全一致存储和分发可以上传到镜像仓库Docker Hub别人拉取同样镜像直接使用3.3.4好处环境一致性“本地能跑服务器也一定能跑”解决经典的 “在我电脑上是好的” 环境问题。分层存储节省空间多个镜像共享基础层不需要重复拷贝完整系统。版本管理镜像可以打标签tag像 Git 一样保留不同版本方便回滚。可移植打包好镜像任何装了 Docker 的机器拉取镜像即可部署不用手动装依赖。只读不可篡改镜像本身只读保证分发出去的环境不会被意外修改。4、端口镜像4.1定义将网络设备上指定源的收发报文复制一份送到目的端口并通过目的端口将复制的报文发送给网络分析设备从而可以对该报文进行分析。4.2端口镜像的组成一个完整的镜像系统包括网络设备、镜像源、目的端口和网络分析设备。01、网络设备网络设备可以是交换机、路由器、防火墙等等。02、镜像源镜像源可以是端口、报文流、VLAN以及MAC地址。因此按照镜像源的不同镜像可分为端口镜像、流镜像、VLAN镜像以及MAC镜像。4种镜像源不同但镜像系统组成类似我们以端口镜像为例介绍。当网络设备启用端口镜像后镜像源端口可以是1个或多个源端口也称为镜像端口。03、目的端口目的端口是指定的1个接收“复制”报文的端口目的端口也称为观察端口。按照镜像的目的端口所在位置不同可以分为本地镜像和远程镜像。04、网络分析设备网络分析设备连接目的端口可以是安装了抓包分析软件的计算机也可以是专用的监控分析仪器。二、容器 Container1、定义容器是镜像运行后的动态实例。 Docker 基于 Linux 内核技术Namespace Cgroups把宿主机资源隔离形成一个独立的轻量运行环境。基于镜像创建镜像只读容器会在镜像之上增加一层可读写层一个镜像可以启动多个容器互相隔离容器是进程本质就是宿主机上一组被隔离的进程不是完整虚拟机Namespace隔离资源PID、网络、文件系统、用户等Cgroups限制资源CPU、内存2、作用运行应用程序真正承载业务代码对外提供服务Web 服务、数据库等资源隔离容器内程序看不到宿主机其他容器的进程、文件资源配额限制容器最多占用多少 CPU / 内存防止单个程序耗尽整机资源3、好处轻量对比虚拟机。虚拟机需要完整操作系统内核GB 级别启动分钟级容器共享宿主机内核MB 级别秒级启动。隔离性容器之间互不干扰。A 容器崩溃一般不会影响 B 容器和宿主机。快速启停秒级创建、销毁非常适合 CI/CD、弹性扩缩容。一次性可丢弃容器删除时容器读写层的数据默认一起删掉。环境脏了直接删掉重建一个新容器环境永远干净。资源利用率高不需要模拟硬件没有虚拟化损耗。三、安装启动Docker安装 Docker Desktop去官网下最新版安装后启动它。Apple Silicon Mac 必须开启 RosettaDocker Desktop → Settings齿轮图标→ General → 勾选Use Rosetta for x86_64/amd64 emulation。确保磁盘空间充足这个镜像解压后可能占几十 GB先确认 Mac 空间够。将 Docker 路径添加到环境变量现代 Mac 系统默认使用的是zsh终端因此我们需要修改~/.zshrc配置文件。使用以下命令打开或创建配置文件这里以nano编辑器为例你也可以使用vimnano ~/.zshrc在文件的末尾添加以下环境变量配置export PATH/Applications/Docker.app/Contents/Resources/bin:$PATH保存并退出在nano中按Ctrl O保存按Enter确认再按Ctrl X退出。第三步使配置生效并验证运行以下命令让刚才的修改立即生效source ~/.zshrc验证 Docker 是否配置成功docker --version
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →