文章目录
- 0 痛点分析
- 1 Docker简介
- 1.1 了解概念
- 1.2 Docker的定义
- 2 Docker安装方法
- 3 Docker基本命令
- 4 Docker封装Python程序
写在前面:使用Docker封装Java应用还是很简单的,但是现在是一个神经网络项目使用Pyhon编写的,所以部署项目还是遇到了一点问题~!
0 痛点分析
- 当我们的代码拿到别人的电脑运行时,总会报错。为什么?
因为所安装的依赖环境不一样 - 比如你安装的是tensorflow2.1.0,他安装的是tensorflow1.14,我
则没有安装tensorflow。你的python版本是3.7, 他的版本2.7,
我则没有安装python。 - 依赖环境不匹配是很麻烦的问题,软件开发商背锅
- 虚拟机可以解决,但是效率低
- 所以,以 Docker 为代表的容器的概念慢慢被发展起来。(Docker就是为了解决虚拟机效率低下的问题)
从上图可以看出,Docker比虚拟机要更加方便。
注意:Docker不是容器,而是管理容器的引擎!
1 Docker简介
Docker的前身是名为dotCloud的小公司,主要提供的是基于 PaaS(Platform as a Service,平台及服务)平台为开发者或开发商提供技术服务,并提供的开发工具和技术框架。
因为其为初创的公司,又生于IT行业,dotCloud受到了IBM,亚马逊,google等公司的挤压,发展举步维艰。
于是,在2013年dotCloud 的创始人,年仅28岁的Solomon Hykes做了一个艰难的决定:将dotCloud的核心引擎开源!
然而一旦这个基于 LXC(Linux Container)技术的核心管理引擎开源,dotCloud公司融资9000万,一夜成名!
1.1 了解概念
镜像(image):Docker 镜像就是一个只读的模板,镜像可以用来创建 Docker 容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。镜像是一种文件结构。
Dockerfile
中的每条命令都会在文件系统中创建一个新的层次结构,文件系统在这些层次上构建起来,镜像就构建于这些联合的文件系统之上。Docker官方网站专门有一个页面来存储所有可用的镜像,网址是:index.docker.io。容器( Container):容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境,Docker 利用容器来运行应用。
仓库:仓库是集中存放镜像文件的场所,仓库注册服务器(Registry)上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。目前,最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。
1.2 Docker的定义
- Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。
- Docker是一个重新定义了程序开发测试、交付和部署过程的开放平台,Docker则可以称为构建一次,到处运行,这就是Docker提出的"Build once,Run anywhere"
- Docker仓库用来保存的images,当我们创建了自己的image之后我们就可以使用push命令将它上传到公有或者私有仓库,这样下次要在另外一台机器上使用这个image时候,只需要从仓库上pull下来就可以了。注意:Docker不是容器,而是管理容器的引擎!
- Docker是为应用打包、部署的平台,而非单纯的虚拟化技术。
2 Docker安装方法
3 Docker基本命令
指定运行环境一般是Python3.6 、 Python3.7
4 Docker封装Python程序
- 举例:水果分类器