Docker的基础原理


image-20240902140327101

image-20240903140807385

image-20240903140931651

SaaS
提供给客户的服务是运营商运行在云计算基础设施上的应用程序,用户可以在各种设备上通过过客户端界面访问,如浏览器。消费者不需要管理或控制任何云计算基础设施,包括网络、服务器、操作系统、存储等等;平时使用的邮件服务器,即属于SaaS服务。

PaaS
提供给消费者的服务是把客户采用提供的开发语言和工具(例如:JAVA,python,.net)开发的或收购的应用程序部署到供应商的云计算基础设施上去,客户不需要管理或控制底层的云基础设施,包括网络、服务器、操作系统、存储等,但客户能控制部署的应用程序,也可能控制运行应用程序的托管环境配置,更适合提供给开发人员使用,在这里也可以使用docker容器技术实现。

IaaS
提供给消费者的服务是对所有云计算基础设施的利用,包括处理CPU、内存、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序。消费者不管理或控制任何云计算基础设施,但能控制操作系统的选择、存储空间、部署的应用,也有可能获得有限制的网络组件(例如:路由器,防火墙,负载均衡器等)的控制。更适合提供给运维人员使用。
### 关于编排工具的介绍
VMware Workstation:虚拟化工具,启动虚拟机的 	编排工具:Vcenter Server
KVM:			  虚拟化工具,启动虚拟机的 	   编排工具:OpenStack
Docker:			   容器化工具,容器运行时      编排工具:Docker-swarm、mesos、
Kubernetes

https://www.cnblogs.com/goodcook/p/6433751.html

虚拟化和容器化的对比

image-20240902140528335

image-20240902140542109


容器化产品理念

# Container Runtime:容器运行时
	- docker
	- CRI-O
	- containerd

## 内核技术
Namespace:名称空间,命名空间(资源隔离)https://man7.org/linux/man-pages/man7/namespaces.7.html
Cgroup:资源控制、资源计算 https://man7.org/linux/man-pages/man7/cgroups.7.html
	资源限制:例如设定任务指定内存
	优先级分配:比如跟任务分配的CPU时间,片数,磁盘IO,带宽大小来控制任务的优先级
	资源统计:统计CPU,内存,IO等资源使用时长,该功能比较适合用于计费
	任务控制:cgroup可以对任务进行 运行,挂起,恢复等操作

Docker的三个重要概念

镜像(image)
Docker镜像可以看做是一个特殊的文件系统,除了提供容器运行时所需要的程序、库、资源、配置文件以外,
还包含了一些为运行时,准备的配置参数(匿名卷,环境变量,用户等),镜像是不可更改的

# Docker容器存储方式:overlayFS
	upper
	lower
	merge
容器(Container)
容器的定义和镜像,几乎是一模一样,唯一区别在于容器的最上面那一层是可读可写的。
暂时理解:一个容器,就是一台虚拟机
仓库(Repository)
上传镜像,存放镜像
仓库是Docker用来存放镜像的地方,类似于我们之前常用的代码仓库。
通常一个仓库会包含,同一个软件,不同版本的镜像
我们可以通过<仓库名>:<标签>格式来指定具体使用哪个版本的镜像,如果不给标签,那么默认以Latest作为默认标签
	docker pull nginx
	docker pull nginx:latest
	docker pull centos:8


## Harbor图形化仓库
## Registry命令行仓库

Docker的组成

Docker是C/S结构的服务
docker client 和 docker server
Docker客户端:
	- 命令行 docker
	- 图形化 dashboard
用户 -> Docker客户端 -> 调用Docker API -> Docker Server -> 内核 Namespace 、 Cgroup

image-20240902141041658


部署Docker

# 1.清楚docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

#2.更管docker源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo

sudo sed -i 's+download.docker.com+mirrors.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

#3. 安装docker
yum install -y docker-ce docker-ce-cli containerd.io

# 4.启动docker
systemctl start docker
systemctl enable docker

/var/lib/docker ## Docker的存储目录(工作目录)
#### 给docker配置源
[root@docker01 ~]# cat /etc/docker/daemon.json 
{
        "registry-mirrors": ["https://docker.1panel.live", "https://hub.rat.dev/", "https://docker.chenby.cn", "https://docker.m.daocloud.io"]
}