通过VS Code和Docker扩展成为Docker高级用户。
> Photo by Michał Parzuchowski on Unsplash
您可以使用选择的语言来实施服务。 现在,您想将其容器化并在本地对其进行测试,然后再将其部署到生产环境中。 第一步是编写Dockerfile,构建映像,运行容器并检查日志。 对?
> Illustration by Laurel Duermaël
好吧,不完全是。 尽管此过程是完全可以接受的,但是有一种更好的方法:一种工具可以为您编写Dockerfile,如果您要编辑它并提供图形用户界面来与Docker引擎交互,则可以协助您完成自动完成。
如果有一个工具可以为您编写Dockerfile,协助您自动完成并提供图形用户界面以与Docker引擎进行交互,该怎么办?
用于Visual Studio Code的Docker扩展不仅仅是另一个IDE扩展。 它具有升级您使用Docker的方式的能力。 在这个故事中,我们深入研究了Visual Studio Code的Docker扩展可以做什么以及如何使用它成为Docker高级用户。
VS Code的Docker扩展使从Visual Studio Code轻松构建,运行,管理和部署容器化应用程序变得容易。 要开始使用它,请确保下载Visual Studio Code市场的扩展。 此外,这是一个开源项目,因此您可以检查其代码,安装过程非常简单,因此无需在其他部分中进行介绍。
在本节中,我们将介绍Docker扩展的主要功能。 稍后,我们将在一个简单示例中使用其中的许多内容。
· 编辑Dockerfile:编辑Dockerfile和docker-compose.yml文件时,可以使用IntelliSense自动完成功能。 此外,您还将获得常见命令的语法帮助。
> IntelliSense and syntax help for Docker on VS Code
· 生成Dockerfile:您可以使用Docker生成Dockerfile并将其添加到工作区:从命令面板中将Docker Files添加到Workspace命令。 该命令将生成Dockerfile和.dockerignore文件,并将它们添加到您的工作区中。 您还可以使用此命令来生成添加的Docker Compose文件。 在调试时,这将很方便。
> Generate Dockerfiles for a simple flask App
· 探索:Docker扩展为VS Code贡献了Docker视图。 Docker视图使您可以检查和管理Docker资产:容器,映像,卷,网络和容器注册表。 一切都只需右键单击即可。
> Docker view in VS Code
· 执行Docker命令:许多最常见的Docker命令都内置在命令面板中。 您可以运行Docker命令来管理映像,网络,卷,映像注册表和Docker Compose。 另外,Docker:Prune System命令将删除停止的容器,悬空的映像以及未使用的网络和卷。
> Common Docker commands integrated into the palette
· 调试容器:使用Docker扩展,我们可以调试在容器中运行的使用Node.js,Python或.NET(C#)构建的服务。
还有许多其他功能,例如注册表连接和上下文管理,但是仅使用这些关键产品就可以走很长一段路。 接下来,我们实现一个简单的Python Flask应用程序,对其进行泊坞化并部署,而无需费心Docker CLI。
在本节中,我们将构建一个简单的" Hello World" Flask应用程序,并使用Docker扩展对其进行部署。 一,代码:
如果您熟悉Flask,您会发现这是您可以实现的最简单的应用程序。 只要您点击根端点,它就会返回" Hello World"。 接下来,我们需要一个requirements.txt文件来保存依赖项,我们可以开始了:
Flask==1.1.2
gunicorn
要创建Dockerfile以及您需要执行的其他所有操作,只需运行Docker:在命令面板(windows中为ctlr + shift + p)中将Docker Files添加到Workspace。
选择第一个问题的Python:Flask选项,然后,扩展将询问您是否要包括可选的Docker compose文件。 选择是; 这样,您以后便可以调试在容器内运行的应用程序。 最后,选择包含Flask应用程序的python文件(上面提供的代码)和要公开的端口(默认为5000)。 你准备好了!
现在,要构建映像,请右键单击生成的Dockerfile并选择Build Image…。将打开一个终端,您的映像将在几秒钟内准备就绪。
> Build your image using Docker extension for VS Code
要运行该应用程序,请从左侧面板中选择Docker图标,在"图像"部分中找到您的图像,右键单击它,然后选择"运行"。 这么简单。
在"容器"部分中,找到正在运行的容器,右键单击它,然后选择"查看日志"。 此命令将在终端中显示您的容器的日志。 获取它正在侦听的端点(应为http://0.0.0.0:5000)。 要获取Python服务的结果,请运行curl http://0.0.0.0:5000。
> View the logs using Docker extension for VS Code
而已! VS Code的Docker扩展简化了整个过程,您可以节省时间专注于代码。
要使用Gunicorn配置调试,我们还需要更多。 自动创建的Docker:Python-Flask启动配置将使用Python调试器覆盖容器的Gunicorn入口点。 要调试使用Gunicorn运行的应用程序,我们应遵循以下步骤:
1.将debugpy添加到您的requirements.txt文件。
2.将以下代码片段添加到要调试的文件中:
import debugpy
debugpy.listen(("0.0.0.0", 5678))
debugpy.wait_for_client()
3.在.vscode文件夹中的launch.json中添加一个Python:Remote Attach配置。 JSON文件现在应如下所示:
4.通过将5678:5678添加到端口部分,修改docker-compose.yml文件以暴露调试器端口。 现在,该文件应如下图所示:
5.右键单击docker-compose.yml文件并选择Compose Up,以启动容器。
6.在所选文件中设置一个断点,导航至"运行并调试",然后选择" Python:Remote Attach"启动配置。
7.按F5或按播放按钮以连接调试器。
调试愉快!
在这个故事中,我们探讨了VS Code的Docker扩展,以及它如何帮助我们编写Dockerfile,构建映像和部署它。 要深入研究,请查看Visual Studio Code文档站点上的"使用容器"主题以开始使用。
我叫Dimitris Poulopoulos,我是BigDataStack的机器学习研究员。 我也是希腊比雷埃夫斯大学的博士研究生。 我曾为欧洲委员会,欧盟统计局,IMF,欧洲中央银行,经合组织和宜家等主要客户设计和实施AI和软件解决方案。
如果您有兴趣阅读有关机器学习,深度学习,数据科学和DataOps的更多帖子,请在Medium,LinkedIn或Twitter上的@ james2pl上关注我。
(本文翻译自Dimitris Poulopoulos的文章《Docker: You Are Doing it Wrong》,参考:https://towardsdatascience.com/docker-you-are-doing-it-wrong-e703075dd67b)