深度神经网络模型部署——Docker学习

容器技术中有三个核心概念:容器(Container)、镜像(Image),以及镜像仓库(Registry)

请添加图片描述
从本质上来说,容器属于虚拟化技术的一种,和虚拟机(Virtual Machine)很类似,都能够分拆系统资源,隔离应用进程,但容器更加轻量级,运行效率更高,比虚拟机更适合云计算的需求。

镜像是容器的静态形式,它把应用程序连同依赖的操作系统、配置文件、环境变量等等都打包到了一起,因而能够在任何系统上运行,免除了很多部署运维和平台迁移的麻烦。镜像内部由多个层(Layer)组成,每一层都是一组文件,多个层会使用 Union FS 技术合并成一个文件系统供容器使用。这种细粒度结构的好处是相同的层可以共享、复用,节约磁盘存储和网络传输的成本,也让构建镜像的工作变得更加容易。

为了方便管理镜像,就出现了镜像仓库,它集中存放各种容器化的应用,用户可以任意上传下载,是分发镜像的最佳方式。

目前最知名的公开镜像仓库是 Docker Hub,其他的还有 quay.io、gcr.io,我们可以在这些网站上找到许多高质量镜像,集成到我们自己的应用系统中。

容器技术有很多具体的实现,Docker 是最初也是最流行的容器技术,它的主要形态是运行在 Linux 上的“Docker Engine”。我们日常使用的 docker 命令其实只是一个前端工具,它必须与后台服务“Docker daemon”通信才能实现各种功能。操作容器的常用命令有 docker ps、docker run、docker exec、docker stop 等;操作镜像的常用命令有 docker images、docker rmi、docker build、docker tag 等;操作镜像仓库的常用命令有 docker pull、docker push 等。

容器技术思维导图:

请添加图片描述
容器化 简化了应用的打包、分发和部署,简单的几条命令就可以完成之前需要编写大量脚本才能完成的任务,对于开发、运维来绝对爽的屁泡。

缺点:

  • 还是要手动运行一些命令来启动应用,然后再人工确认运行状态。
  • 运行多个容器组成的应用比较麻烦,需要人工干预(如检查 IP 地址)才能维护网络通信。
  • 现有的网络模式功能只适合单机,多台服务器上运行应用、负载均衡该怎么做?
  • 如果要增加应用数量该怎么办?

这时容器技术完全帮不上忙。

怎么办——

“容器编排”(Container Orchestration)

下一篇: Kubernetes

猜你喜欢

转载自blog.csdn.net/weixin_44659309/article/details/130607779