当前位置:网站首页 > 云计算与后端部署 > 正文

模型部署docker和其他(docker引擎发展的几种模型结构)



了解Docker架构前,需要先知道Docker中几个重要的概念:

镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。

比如之前讲过的MySQL镜像,它里面就有各种各样所需要的依赖,这些东西最终落地到硬盘,其实就是硬盘中的文件,例如下图有MySQL写数据的data目录文件、还有logs日志文件、bin里的可执行文件,还有就是MySQL所需要的各种各样的函数库了。所以也就是说,镜像就是硬盘中的文件。

image-20241031171645854

一切应用最终都是代码组成,都是硬盘中的一个个的字节形成的文件。只有运行时,才会加载到内存,形成进程。

镜像 就是把一个应用在硬盘上的文件、及其运行环境、部分系统函数库文件一起打包形成的文件包。这个文件包是只读的。

而容器就是将这些文件中编写的程序、函数加载到内存中形成进程,只不过要隔离起来。因此一个镜像可以启动多次,形成多个容器进程。

例如你下载了一个,如果我们将在磁盘上的运行文件及其运行的操作系统依赖打包,形成镜像。然后你可以启动多次,双开、甚至三开,跟多个妹子聊天。


容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器进程做隔离,对外不可见。

可以理解成:MySQL的应用给它跑起来,形成的进程就是容器,只不过在Docker里面,容器还需要做隔离。容器可以看做下图里面的小盒子,这个盒子里面将来会利用Linux手段给它形成隔离空间,里面会有自己的独立的cpu资源、内存资源甚至于还有独立的文件系统。那一次在这个容器内运行的这个进程,它就会以为自己是这台计算机上唯一的进程了,从而起到一种隔离的效果。将来我们MySQL镜像不管是启动成一个容器还是启动成多个容器,它们之间都是相互隔离的。

那么当容器运行中,必然会出现数据读写操作。比如MySQL将来需要存数据,需要存到data目录,那些盒子能不能把自己的数据写到镜像的data目录里面呢,显然不能,因为如果它们这么做了,不就等于对镜像产生了污染吗,所以镜像都是只读的。

image-20240319133632326

也就是 容器 在运行的过程中,不能往镜像里写东西,可以基于镜像去创建容器,而容器可以从里面去读数据,但是不能写。

那将来MySQL容器往哪写数据呢?很简单,将镜像中的文件拷贝一份到自己的独立文件系统当中,在写数据的时候写到自己的容器里面,并不会对别人的容器产生影响,也不会对镜像产生影响。只有这样,我们的镜像才可以放心大胆的交给别人去使用,因为镜像不会被干扰,也不会被影响。

image-20210731153059464

那问题来了,我们怎样将镜像共享给别人使用呢?


开源应用程序非常多,打包这些应用往往是重复的劳动。为了避免这些重复劳动,人们就会将自己打包的应用镜像,例如Redis、MySQL镜像放到网络上,共享使用,就像GitHub的代码共享一样,GitHub是做代码托管的,而DockerHub是做镜像托管的。

  • DockerHub:DockerHub是一个官方的Docker镜像的托管平台。这样的平台称为Docker Registry(镜像服务器)。

    程序员可以利用我们的Docker提供的一些命令去完成镜像的构建:MySQL、Redis等各种各样的镜像,然后把这些镜像上传到DockerHub这样的服务器上面去。当然Docker官方也写了很多很多优良的镜像,把它都放到了DockerHub这样的服务器上。

  • 国内也有类似于DockerHub 的公开服务,比如 网易云镜像服务、阿里云镜像库等。

    但是如果你觉得这些服务器在外网公开太危险,公司内部的东西不想公开,我们将来也可以搭建私有云服务器,这些都叫Dcker Registry(镜像服务器)。

我们一方面可以将自己的镜像共享到DockerHub,另一方面也可以从DockerHub拉取镜像:

image-20210731153743354

那么我们该怎么利用Docker完成镜像构建,或者从远端拉取镜像呢?又该怎么样去运行容器呢?

这就需要去了解Docker架构了。


我们要使用Docker来操作镜像、容器,就必须要安装Docker。

Docker是一个CS架构的程序,由两部分组成:

  • S:服务端(server):Docker守护进程,负责接收处理Docker指令,管理镜像、容器等,例如构建镜像、从远端拉取镜像、运行容器等
  • C:客户端(client):通过命令或RestAPI向Docker服务端发送指令,或者发送restAPI的请求。可以在本地(使用命令)或远程(RestAPI)向服务端发送指令。

例如使用的命令,这个命令到达DockerServer以后,会被Docker的守护进程Docker deamon接收和处理,它会利用你提供的这些数据给它构建成一个镜像。

除了这种构建镜像的方式以外,我们还可以去Docker Registry拉取镜像,因为Docker Registry里会有Docker官方提供的各种优质镜像,拉取的时候可以通过 的命令, 也会把请求发送到DockerServer端,而docker daemon守护进程就回去registry里拉取指定的镜像了。然后就会通过 指令运行镜像创建容器,然后守护进程就会帮助我们完成容器的创建,然后部署就完成了。

一般情况下,nginx、MySQL、redis等等这样的一些应用,建议大家直接使用官方的镜像就可以了,没必要自己构建。只有一些自己的微服务,或者需要去做一些深度定制才需要构建。所以我们一般使用Docker,主要就是像DockerServer发命令,想办法得到镜像,然后再把镜像创建成容器运行,然后完成部署就行了。

image-20210731154257653


镜像:

  • 将应用程序及其依赖、环境、配置打包在一起

容器:

  • 镜像运行起来就是容器,一个镜像可以运行多个容器,将来形成集群。只不过容器需要形成隔离空间,里面有自己独立的cpu、内存、文件系统,避免容器去修改镜像、污染镜像。

Docker结构:

  • 服务端(S):接收命令或远程请求,操作镜像或容器
  • 客户端(C):发送命令或者请求到Docker服务端

DockerHub:

  • 一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为DockerRegistry(镜像服务器)
到此这篇模型部署docker和其他(docker引擎发展的几种模型结构)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 二级域名解析到端口怎么解决(二级域名解析是什么意思)2025-06-29 22:45:05
  • 连接redis的客户端(rediscli连接)2025-06-29 22:45:05
  • 发送验证码(发送验证码过于频繁,请稍后再试怎么办)2025-06-29 22:45:05
  • 换ip地址有什么后果(换ip地址有什么后果吗)2025-06-29 22:45:05
  • redis查看客户端(redis查看客户端连接ip)2025-06-29 22:45:05
  • 服务器的部署(服务器的部署方法)2025-06-29 22:45:05
  • 鸿蒙软件后缀是啥(鸿蒙软件后缀名)2025-06-29 22:45:05
  • springboot搭建服务器(springboot在服务器上部署)2025-06-29 22:45:05
  • 模型部署工程师招聘(模型制作工程师招聘)2025-06-29 22:45:05
  • 鸿蒙软件后缀是啥(鸿蒙软件后缀是啥啊)2025-06-29 22:45:05
  • 全屏图片