目录
1.什么是docker
docker可以分为镜像,容器和仓库。
镜像(Image):Docker 镜像是一个只读的模板,它包含了运行一个特定应用程序或服务所需的所有文件系统内容,包括操作系统、应用程序代码、依赖库和配置文件等。镜像是创建容器的基础。
容器(Container):容器是基于镜像创建的可运行实例,它是一个独立的、轻量级的运行环境,容器之间相互隔离,互不影响。每个容器都可以看作是一个独立的微型服务器,能够在不同的主机上运行。
仓库(Repository):Docker 仓库是存储和管理镜像的地方,可以将其类比为代码的版本控制系统中的代码仓库。开发者可以将自己创建的镜像推送到仓库中,也可以从仓库中拉取其他人共享的镜像。
2.什么是虚拟化和容器化
虚拟化:将一台计算机虚拟化为多台逻辑计算机,每台逻辑计算机上有自己操作系统,自己的内存,cpu资源等等,虚拟化技术虚拟的是硬件,让操作系统以为自己在一个完全独立的硬件上运行的。
容器化:容器化技术也是虚拟化技术的一种,容器化技术虚拟的是操作系统,通过将操作系统的基本目录结构和文件,应用程序,依赖库整合在一起,形成一个包含系统镜像文件,再通过命名空间技术将系统镜像隔离起来, 让应用程序以为自己在一个完全独立的操作系统中运行。
用这张图更好的理解虚拟化和容器技术
虚拟机:就是通过模拟硬件接口来欺骗操作系统。
容器:通过模拟系统的api接口来欺骗上层应用。
3.为什么要容器化
1.资源利用率高:将利用率较低的服务器资源进行整合,用更少硬件资源运行更多业务,降低IT支出和 运维管理成本。
2.环境标准化:容器中含有除了操作系统内核以外的所有运行环境,确保了环境的一致性,不会出现这段代码在我的主机上没问题啊?
3.沙箱安全:无论在容器里怎么折腾,影响的始终是这个容器,不会波及整个系统或者其他容器。
4.维护扩展更容易:因为有仓库和镜像的存在,docker应用重复的部分很容易。
5.资源的弹性伸缩:因为容器可以使用容器编排技术进行快速部署,所以才能有弹性伸缩的能力。
6.容器对比虚拟机更轻量,启动更快:虚拟机有自己的内核,docker直接运行在宿主的内核。
4.容器虚拟化的实现
4.1容器虚拟化的原理
通过namespace技术完成系统资源的隔离如进程隔离,文件系统隔离,网络隔离,用户隔离等等通过cgroups技术完成对系统资源的限制。
4.2容器虚拟化基础之NameSpace
NameSpace就是用来隔离系统资源的,相当于一班有个叫张三的同学,二班也有个叫张三的,但是这两个并不是一个人,班级就相当于命名空间。
4.2.1dd命令
dd
是 Unix 和 Linux 系统中的一个命令,主要用于复制和转换文件。它可以在不同的存储设备或文件系统之间进行数据的精确复制,也可以对数据进行格式转换等操作。dd [选项]... [输入文件] [输出文件]
常用选项
if=输入文件:指定输入文件,若未指定则默认从标准输入读取。
of=输出文件
:指定输出文件,若未指定则默认输出到标准输出。
bs=块大小
:设置输入和输出的块大小,单位可以是字节(默认)、K(千字节)、M(兆字节)等。例如,bs=1M
表示每个块的大小为 1 兆字节。
count=块数
:指定要复制的块数。
skip=块数
:在输入文件中跳过指定数量的块后再开始复制。
seek=块数
:在输出文件中从指定的块数位置开始写入。创建一个大小为100M的空文件
dd if=/dev/zero of=testdd bs=1M count=100;
4.2.2df命令
查看文件系统的使用情况
dd [选项]
常