无锡网站推广优化公司,网站建设120,网站被篡改怎样做,做网站需要懂哪些技能服务器部署docker docker简介## 可以把docker是一个容器#xff0c;可以让开发者将自己的项目部署到这个容器中#xff0c;最常用的场景是将自己的后端项目部署到服务器的时候会将其打入docker镜像中#xff0c;可以理解为一个开销更小的虚拟机。 docker好处## 可以轻易地让…
服务器部署docker docker简介## 可以把docker是一个容器可以让开发者将自己的项目部署到这个容器中最常用的场景是将自己的后端项目部署到服务器的时候会将其打入docker镜像中可以理解为一个开销更小的虚拟机。 docker好处## 可以轻易地让几十个服务在docker中跑起来没有谁敢说能在自己的电脑上跑几十个虚拟机吧docker可以让开发者更加贴近生产环境即便于测试而且同一个镜像可以利用在正式和测试环境节约资源docker可以将每个应用隔离起来可以运行多个业务。docker的安全性极具保障。 docker在阿里云部署## 言归正传这个博客本身就是用来将docker部署在阿里云的服务器上。 1拥有一台阿里云学生机穷 2这边推荐系统是CentOS 7.3 3首先登陆root账号这个正常人应该都会sudo su root 4接下来是输入命令 yum install docker 5你可以尝试docker -v来判断你是否下完 docker基本命令 6因为我是一个后端人员所以我偏向于用IDEA来远程docker这边就需要涉及到开端口的问题了docker在阿里云这边得默认端口是2375这是个大坑如果没踩过这辈子都连不上这边推荐一个博客Linux的方面就不再赘述。 7因为阿里云方面是默认防火墙不打开2375所以你在开端口同时需要把防火墙关掉因为学生机也不是很怕被爆破所以我就默认全开了。 8接下来是IDEA的部分了一般的IDEA都会集成docker首先是配置docker 接下来尝试连接是否成功应该能够看到以下画面 这样初步就完成了docker的部署。 当然要把自己的项目部署上去还是要一个dockerfile脚本和部分配置由于我忙着写lajiruangong只能以后再分享了## 这是我个人的兴趣做出的分享说错得地方请私聊我以上关于docker的见解也是我自己的理解说错请指正。预告下次分享应该是docker部署mysql。部署项目还等下下次吧 p我们通过tensorflow或者pytorch一些深度学习框架可以训练我们自己的模型然而在生产部署中不可能让程序运行在一个server上(比如简单的包装一个tornado或者django框架实现服务的可用)就行了。为了保证服务的高可用一般通过docker部署模型之后通过k8s实现集群的管理和docker镜像的管理。/p文章会首先介绍Docker的概念Docker的基本语法和用法以及和Docker相关的几个工具的介绍。
Docker是什么 容器与Docker Docker是一种常用的容器化技术。这里的容器化和虚拟化是对应的概念即Docker和VirtualBox等等虚拟机的效果有类似之处但容器是更轻量化的一套隔离环境不会额外虚拟硬件很多资源和进程都是由宿主机直接执行因此省了很多资源消耗速度要比虚拟机快很多特别适合机器学习等AI之类的计算密集型的程序隔离需求。 Docker的容器概念与Spring Boot的容器概念完全不同后者是指Java代码的一种组织形式。这两种不同容器都与微服务有关。
为什么学Docker 首先给大家举个很常见的情景。某公司新人小王去办公室报道公司老鸟老李吩咐小王先去把工作用到的开发环境部署好再叫他。但是小王是个萌新程序员下载这些开发库的地址都不知道。冗长的环境安装手册看的小王头昏脑涨更不用说里面还有些错误和没写清楚的细节。这个场景是不是很多公司都经常在上演其实我在很久之前就不停的想都程序员了为什么还要看技术手册自己安装难道就没有一个可靠的技术帮我一键部署好吗 ? 答案是当然有你差的就是Docker有了他小王只需要下载好前辈写好的Dockerfile只要网络OK就可以一键运行演示程序。有没有很简单下面我就来拿一个Github项目来告诉你怎么样做到。
Docker部署实例 下面先来看如何部署一个最简单的图片分类服务的Demo程序要求图片分类模型用深度学习框架Keras来实现并通过flask发布模型的预测功能。下面我们就来看在Docker下的一键部署的过程。 首先我们需要从Github上clone一份代码进入这个文件夹。 git clone https://github.com/mtobeiyf/keras-flask-deploy-webapp.git
cd keras-flask-deploy-webapp 在进入到这个文件夹后我们不妨看一下都有什么文件 经过之前的学习我们可以了解requirements.txt中管理了项目依赖。其他的文件中Dockerfile是本次文章最核心的一个文件有了他Docker才能在本地进行镜像的构建。这里我们可以把Dockerfile中的RUN pip install一行替换为RUN pip install -r /requirements.txt -i https://mirrors.aliyun.com/pypi/simple/通过国内镜像来加速安装过程。我们可以输入下面的指令自己构建一个测试镜像 docker build -t keras_flask_test . docker build就是Docker容器的镜像构建命令。这条命令执行后会需要等待一段时间主要是下载和安装时间取决于机器配置和网络环境情况。如下图所示在这个项目的dockerfile里定义了7步构建。我这里因为提前构建了一次这次构建会直接从缓存中读取所以省略了耗时的部分。 只要看到上图最后的Successfully built XXX和Successfully tagged XXX就说明已经构建成功。docker build命令的作用是让Docker根据当前文件夹的Dockerfile内容自动去构建名叫keras_flask_test的镜像。我们可以来确认下是否有这个镜像 docker images |grep -i keras
keras_flask_test latest af52f1dd1fbb 1 days ago 917MB docker images是显示出当前系统中存在的所有镜像后续加grep来搜索指定关键词的镜像。这里因为正好之前构建了下所以是一天前的。读者朋友如果刚刚构建好镜像的创建时间应该是最近。有了镜像我们就可以实际运行这个模型服务了 docker run -it --rm -p 5000:5000 keras_flask_test 这里docker run就是Docker从镜像产生一个容器了。因为Keras自动调用了tensorflow运行后的命令会显示tensorflow的信息。同时Keras也会自动下载一个mobilenetv2的轻量模型。等到一切就绪后会提示Model loaded. Check http://127.0.0.1:5000/的信息。到这里模型部署就已经完成了是不是很6的感觉。我们的模型服务地址就是本机端口号是5000
Docker镜像与Docker容器的关系如同程序与进程一样镜像是静态的基础而容器是动态的实例。
这时候在浏览器中打开http://127.0.0.1:5000应该能看到下图的界面了。我们可以往中间的地方上传一张图片模型会返回当前图片的类别。大家可以玩玩不过不要太为难这个小模型了。 Docker常用命令 上面的例子很简单我们回头总结和扩展相关的知识。先总结下Docker容器化的普遍的流程。
Docker化程序的一般流程 对于使用者在得到Docker化程序的代码后首先通过docker build找到Dockerfile构建镜像。然后docker run从镜像产生一个容器的实例。 而对于开发者一般在AI模型的Docker化之前先由开发者在自己的非容器环境中开发调试好后才开始。然后开发者把自己环境的安装配置过程完整的移植到Dockerfile中。一般来说Dockerfile中的命令要能复现自己的整个配置过程才算真正完整的Docker化程序开发。开发者一般需要自己重复使用者的步骤以确保整个过程是真正能在新环境中重现。 简单来说顺序是编写Dockerfile→build→run三部曲。下面介绍这个流程相关的命令。由于Dockerfile的内容相对较多所以暂时放在后面来说。我们先从build开始。
构建镜像 构建Docker镜像的命令是docker build这条命令的基础是Dockerfile文件。命令的形式为 docker build [OPTIONS] PATH | URL | - 其中具体的选项有很多建议参考帮助来学习docker build --help。我们着重介绍一些最常见的
作用参数备注名称标记-t格式为-t xxx/yyy:zzz。xxxyyy和zzz分别是用户名镜像名和标签版本Dockerfile位置-f如果Dockerfile不在当前目录或者需要构建的源文件文件名不是Dockerfile则需要指定目标文件。环境变量--build-arg构建时需要的环境变量。例如设置代理解决构建时的网络问题--build-arg http_proxyhttp://xxx:port 一个简单的命令实例是 docker build -t test . 这条命令就是根据当前目录的Dockerfile内容构建名为test的镜像命令中最后的.表示构建的目录路径。
运行容器 运行Docker容器的命令是docker run这条命令的基础是引用的镜像必须已经构建好。Docker也为运行命令准备了非常多的选项具体可以参考帮助docker run --help这里先列出一部分比较常用的选项 相关参数可以自行百度 镜像构建可以通过上一步的docker build自己来完成本地的构建。大多情况下也可以直接使用别人构建好并上传到Dockerhub等Docker镜像托管网站的镜像。例如下面一条命令 docker run -d -p 8080:80 --rm --name mynginx nginx 这条命令是后台运行一个名为mynginx的nginx服务把容器中的80端口映射为主机的8080容器在停止时会自动删除。假设当前系统没有运行过这条命令Docker会显示出以下信息 第一条信息表示Docker没有找到本地的nginx;latest镜像第二条信息显示从library/nginx上拉取最新的镜像。后面都是镜像拉取的分层进度最后一行表示容器运行成功后返回的容器ID。
从这里我们可以发现docker run的逻辑先搜索本地是否有构建过这个镜像找不到时会从远端服务器中的仓库拉取最新镜像回来。这个过程非常类似Github上拉取代码也可以看作一种分布式。
编写DockerfileDockerfile为镜像构建提供了具体步骤我们来看下今天介绍的项目中的Dockerfile内容 FROM python:3.6-slim-stretchADD requirements.txt / RUN pip install -r /requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ ADD . /app WORKDIR /app
EXPOSE 5000 CMD [ “python” , “app.py”] 其中第一行的FROM python:3.6-slim-stretch中的FROM定义了基础镜像这句表示该镜像基于python:3.6-slim-stretch构建新镜像会包含基础镜像的所有文件。后面的EXPOSE表示镜像的容器对外暴露什么端口这与docker run -p xxxx:yyyy中的yyyy对应。CMD表示镜像的容器运行后自动执行的一条命令类似于容器的入口命令。而剩下中间的许多行则是构建镜像中需要的具体指令。 完结. 分类: NLP, 云计算 虚拟化 容器