模型部署docker和其他(docker训练模型)

模型部署docker和其他(docker训练模型)Docker 是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中 然后发布到任何流行的 Linux 机器上 也可以实现虚拟化 容器完全使用沙盒机制 相互之间不会存在任何接口 几乎没有性能开销 可以很容易的在机器和数据中心运行 最重要的是 他们不依赖于任何语言 框架或者包装系统 Docker 是 dotCloud 公司开源的一个基于 LXC 的高级容器引擎



Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙盒机制,相互之间不会存在任何接口。几乎没有性能开销,可以很容易的在机器和数据中心运行。最重要的是,他们不依赖于任何语言、框架或者包装系统。

Docker是dotCloud公司开源的一个基于LXC的高级容器引擎,源码托管在Github上,基于go语言并且遵从Apache2.0协议开源。

Docker 为提供了一整套的解决方案,不仅解决了容器化问题,而且解决了分发问题,很快被各大厂商选择变成了云基础设施,厂商围绕 Docker 也开始了生态建设。

物理机:实际的服务器或者计算机。相对于虚拟机而言的对实体计算机的称呼。物理机提供给虚拟机以硬件环境,有时也称为“寄主”或“宿主”。

虚拟化:是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

容器化:容器化是一种虚拟化技术,又称操作系统层虚拟化(Operating system level virtualization),这种技术将操作系统内核虚拟化,可以允许用户空间软件实例 instances)被分割成几个独立的单元,在内核中行,而不是只有一个单一实例运行。这个软件实例,也被称为是一个容器(containers)。对每个实例的拥有者与用户来说,他们使用的服务器程序,看起来就像是自己专用的。容器技术是虚拟化的一种。docker 是现今容器技术的事实标准。

其实虚拟化和容器化最主要的目的就是为了资源隔离,随着资源隔离的实现也带来了更大的利益。

  • 容器对比虚拟机更轻量,启动更快
    传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
    这是因为docker不需要加载内核了,所以启动更快。
  • 资源利用率高
    将利用率较低的服务器进行整合,用更少的硬件资源运行更多的业务,降低IT支出和运维管理成本。
  • 环境标准化
    一次构建,随处执行。 实现执行环境的标准化发布,部署和运维。开发过程中一个常
    见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些
    bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,
    确保了应用运行环境一致性,从而不会再出现 「这段代码在我机器上没问题啊」 这类
    问题。
    在这里插入图片描述
 

关键参数

  • -a:列出本地所有的镜像(含中间印象层、默认情况下过滤掉中间镜像层)
  • –digests:显示镜像的摘要信息
  • -f:显示满足条件的镜像
  • –format:指定返回值的模版文件
  • –no-trunc:显示完整的镜像信息
  • -q:显示出镜像ID
  • 拉取出需要的镜像

dockerfile是一个文本文件,其中包含了一条条的指令,用于构建镜像。

 
 

什么是docker compose?
docker-compose是Docker官方的开源项目,使用python编写,实现上调用了Docker服务的API进行容器管理和编排,其官方定义和运行多个docker容器的应用。

dockere-compose有2个很重要的概念:

  • 服务:一个应用的服务,实际上可以包含若干运行相同镜像的实例
  • 项目:由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml中定义,整个docker-compose.yml定义一个项目。

Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。

在这里插入图片描述

有了上面最基本的认识后,我来介绍一下我的项目及如何进行项目部署。
在我的项目中,有7个业务子服务

  • 入口网关子服务
  • 用户管理子服务
  • 好友管理子服务
  • 消息转发子服务
  • 消息存储子服务
  • 文件管理子服务
  • 语言转化子服务

每一个子服务都需要打包成一个镜像,要知道每个服务都需要链接很多库,这时候有2种方式

  • 手动将库一一拷贝到指定目录下
  • 用shell脚本来拷贝到指定目录下(我采取的方式)

下列是文件子服务需要链接的库:
在这里插入图片描述
这里我用wak命令将连接的库给提取了出来

 

在这里插入图片描述

然后我们需要将库给拷贝到指定的路径下

 

其中nc命令可以作为客户端发起TCP和UDP连接,用于测试主机端口是否开放,还可以用来监听端口等。 这里不详细解释了

此时我们就完成了依赖库的指定,我们就可以来创建dockerfile了。
这里我是ubuntu22.04版本
在这里插入图片描述

 

但是,有7个子服务,如果一个一个创建容器,还是太麻烦了,所以有了docker-compose来编排容器。 当我们写完docker-compose后,只需要使用docker-compose up就可以将容器创建出来。

 

现在我已经通过docker pull将需要用到的中间件镜像给拉取了下来。
在这里插入图片描述
此时进行docker-compose up -d 将容器启动起来。
在这里插入图片描述
在这里插入图片描述

此时我们所有的子服务都打包成了一个镜像,并且已经启动(通过docker container ls -a可以查看)。
在这里插入图片描述
在这里插入图片描述

此时所有子服务就在docker中启动起来了,就可以直接来提供服务,不需要自己来解决库依赖问题以及Linux版本问题。

最后我们只需要将运行程序和其依赖的库打包,就可以在任何服务器上运行。只需要简单的拉取和运行,这就是为什么docker风靡全球的原因。

编程小号
上一篇 2025-04-02 12:01
下一篇 2025-03-18 12:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/35371.html