首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Docker官方文档翻译2

容器

准备工作

安装Docker,版本为1.13或者1.13之上。

阅读第一篇文章的内容

给你的Docker环境一个快速的测试,确保所有的工作准备就绪:

docker run hello-world

介绍

是时候以Docker的方式开始构建一个应用程序了。我们从这个层次结构的底部开始,即它是一个容器,这是我们在这个界面上介绍的。在这个层次(容器?)之上是一个服务,它定义了容器在生产环境中的表现行为,在下一篇文章中我们会进行探讨。最后,在顶层是堆栈,定义了第5篇文章中介绍的所有服务的交互。

堆栈(第五篇文章介绍)

服务(第三篇文章介绍)

容器(这篇文章介绍,you are here)

你的新的开发环境

在过去,如果你写一个pyhton的应用,你的第一步是在你的机器上安装python的开发环境。但是需要你的机器上的运行环境与应用程序完美适合,并且也需要匹配生产环境。

利用docker,你能移植一个便捷的python的运行库作为镜像,无需安装。然后,通过构建包含python运行环境和你的应用代码一起的镜像,能够确保你的代码和运行环境完美结合并运行。

这些便捷的镜像通过被称作DockeFile的文件定义。

通过Dockerfile定义一个镜像

dockerfile定义了在容器内部跑什么运行环境。访问网络接口和磁盘驱动器等资源是在此环境中虚拟化的,与系统其余部分隔离,因此你需要将端口映射到外部世界,并明确要将哪些文件“复制”到 运行的环境。 然而,在完成这些之后,你可以预期,在此Dockerfile中定义的应用程序的构建在运行时的行为完全相同。

Dockerfile

创建一个空的文件夹。通过cd命令进入到新创建的文件夹,创建一个文件取名Dockerfile,复制以下内容到文件中,并保存。

这个Dockerfile关联了2个我们还没有创建的文件,,即app.py和requirements.txt。下面我们来创建。

应用程序部分

创建2个文件,requirements.txt和app.py,并且将它们放到和Dockerfile放进同一个文件夹中。这就完成了我们的应用,你可以发现用创建应用很简单。当上面的Dockerfile构建成镜像,app.py和requirements.txt通过Add命令加入到镜像去了,Expose命令能够暴露端口,可以通过http访问。

requirements.txt

app.py

现在我们看到pip install -r requirements.txt为Python安装Flask和Redis库,并且该应用程序打印环境变量NAME以及调用socket.gethostname()的输出。 最后,因为Redis没有运行(因为我们只安装了Python库,而不是Redis本身),所以我们应该期望在这里尝试使用它会失败并产生错误消息。

那正是要点! 您的系统上不需要Python或任何requirements.txt文件,也不需要在您的系统上安装或运行此映像。看起来你并没有真正用Python和Flask建立一个环境,但是你已经拥有了。

构建应用

我们已经为构建应用做好了准备。确保你对新建的文件与最高的权限。下面是通过ls命令,应该显示以下内容:

现在运行构建命令。创建一个Docker镜像,通过-t标记,从而使镜像有一个友好的名字。

你构建的镜像在哪里?在你的机器的本地Docker镜像注册库“

运行应用

运行应用程序,使用-p将机器的端口4000映射到容器的已发布端口80:

你应该在http://0.0.0.0:80看到一条消息,Python正在为你的应用程序提供服务。 但是该消息来自容器内部,它不知道将该容器的端口80映射到4000,

在浏览器中http://localhost:4000 可以查看网页上显示的显示内容。

你也可以通过curl命令查看相同的内容:

这个4000:80的端口重映射是为了演示Dockerfile中的EXPOSE与使用docker run -p发布的内容之间的区别。 在后面的步骤中,我们只需将主机上的端口80映射到容器中的端口80并使用http:// localhost。

按CTRL+C结束进程。

现在可以让应用程序在后端进程中运行,用detached 模式。

你可以获取应用的容器ID,通过容器ID将应用程序停止。 容器正在后台运行。 可以使用docker container ls命令查看缩写的容器ID:

现在用docker containner stop 命令结束进程,需要用到 container id,如下:

分享你的镜像:

为了演示我们刚才创建的容器具有可移植性,我们上传我们构建的映像并可以在其他的任何地方运行。 毕竟,当你想要将容器部署到生产环境时,弄需要知道如何推送注册仓库。

注册仓库是存储库的集合,而存储库是图像的集合 - 有点像GitHub存储库,但代码已经创建。 注册仓库上的帐户可以创建许多存储库。 docker CLI默认使用Docker的公共注册库。

登录dokcer Id

登录到本地计算机上的Docker公共注册库。

标记镜像

将本地映像与注册库中的存储库相关联的命令是username / repository:tag。 该标签是可选的,但建议使用,因为它是注册管理机构用于为Docker镜像提供版本的机制。 为该上下文提供存储库并标记有意义的名称,例如get-started:part2。 这将图像放入启动存储库并将其标记为part2。

现在,把它放在一起来标记图像。使用你的用户名,存储库和标签名称运行码头标签图像,以便将图像上传到您想要的目的地。 该命令的语法是:

比如:

运行 docker image ls 命令去查看你的新的标记的镜像。

推送镜像

上传你的标记的镜像去仓库

完成后,此上传的结果将公开发布。 如果你登录到Docker Hub,则可以通过其pull命令在那里看到新映像。

从远程仓库获取并运行镜像

从现在起,你可以使用docker run并使用此命令在任何机器上运行你的应用程序:

如果镜像在本地机器没有,docker 从仓库中拉取。

无论docker run在哪里执行,它都会将你的镜像以及Python和requirements.txt中的所有依赖关系一起提取出来,并运行你的代码。 它们都在一个整洁的小包中,并且您不需要在主机上安装任何Docker。

总结

这就是这个页面的内容。 在下一节中,我们将学习如何通过在服务中运行此容器来扩展我们的应用程序。

命令复习

这里列出了这个页面的基本Docker命令,以及一些相关的命令,如果你想在继续之前探索一下。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180501G0VSY100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券