通过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高级用户。

Docker + VS

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.2gunicorn

要创建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 debugpydebugpy.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)

docker使用_使用Docker正确的姿势相关推荐

  1. docker初识_初识 docker 搭建自己的开发环境

    换了一台设备,程序猿嘛第一件事肯定是先把开发环境搭建起来,以前为了方便都是搞的集成环境,这次准备下载集成环境的时候,突然想起 docker 这个东西,在下虽然了解一些概念性的东西但一直为曾实践.人嘛, ...

  2. python docker实战_「docker实战篇」python的docker-docker镜像的创建使用dockerfile(3

    从上篇docker commit学习可以了解到,镜像的定制其实每一层添加的配置和文件,如果把每一层的修改配置,修改文件,都写入脚本,用这个脚本构建定制镜像,无法重复的问题,镜像构建透明性的问题,体积的 ...

  3. windows docker 卸载_安装Docker(Docker Toolbox)与Splash库

    想要安装Splash库,先安装Docker. 1.Docker安装 但是面对windows运行环境,大部分的情况来看,需要先安装Docker Toolbox才可以. 我是win10系统,安装了Dock ...

  4. ubuntu docker慢_基于docker搭建MulVAL攻击图

    拥抱docker,经常做了一些好玩的东西,想在别人的电脑上运行,都发现一堆问题,不是少一个依赖,就是缺一个环境变量,好不郁闷.于是,将目光锁定在了docker上,只要大家都有docker,自己本地能跑 ...

  5. 打docker镜像_使用docker构建自己的镜像

    在docker中,我们使用docker build构建一个新的镜像,构建镜像之前需要去编写Dockerfile这个文件才能否建一个新的镜像. 官方文档:https://docs.docker.com/ ...

  6. docker 网络_初探Docker的网络模式

    xiaohang 一个写不好代码的年轻人 钢铁侠的铁杆粉丝:I am Iron Man! 刚接触Docker的时候,你是否好奇容器之间是怎么通信的呢? 今天我们就一起来认识一下docker的网络吧~ ...

  7. centos7 docker端口_使用Docker部署Python应用

    0 引言 在linux系统部署Python应用需要安装较多依赖,在内网环境下十分繁琐,而且有时候还需要在其他服务器运行,则需要重复搭建环境和部署应用,因此本文介绍利用docker容器技术来部署.鉴于本 ...

  8. docker初识_初识Docker - 阮少爷的个人空间 - OSCHINA - 中文开源技术交流社区

    Docker是一种容器技术,类似于虚拟机,但是比虚拟机占用资源更少,更容易部署,安全性也有保障. docker基于go语言实现,诞生于2013年,目前来说,是一门新技术. 为什么要使用docker? ...

  9. docker安装_使用docker在带有SSL的Nginx反向代理后面部署Quarkus或任何基于Java的微服务...

    docker安装 已经有一段时间了,但是根据一位朋友的要求,我将向您展示如何使用docker在Nginx反向代理后面部署Quarkus微服务. 我们会做什么- 我将在centos 8主机上安装dock ...

最新文章

  1. js按位运算符及其妙用
  2. 一致性哈希算法与Java实现
  3. 如何简单区分web前后端与MVC框架
  4. WebService之Java原生态支持(二)
  5. 计算与推断思维 十二、为什么均值重要
  6. 某厂面试归来,发现自己落伍了!
  7. php中国天气api接口,免费天气预报API接口使用教程(信息来源权威及时)
  8. InstallSield更新包快速入门文档
  9. 05. 对定制的类型转换函数保持警觉
  10. java向flex传递 List
  11. JavaWeb:tomcat知识以及遇到的一些小问题
  12. 001_iBase4J学习之环境搭建
  13. STM32 学习周记
  14. 博科brocade SAN光纤交换机端口激活过程(转载)
  15. 扫描版模糊pdf优化方法
  16. 抖音上热门原来这么简单-抖音培训-抖音上热门教程
  17. bugku_PHP代码审计—md5加密相等绕过
  18. 明月应时而变 企业随需而变
  19. Video标签的属性
  20. 【绘制】HTML5 Canvas二次方贝塞尔曲线,实现复选框对勾对号,实现圆角三角形,圆角矩形(图文,示例)

热门文章

  1. TCP 协议面试灵魂 12 问 | 强势整理
  2. 每日一皮:当最棒的程序员遇见了 Bug ...
  3. 最详细的maven教程,可以收藏!
  4. 【译】Spring 官方教程:使用 Restdocs 创建 API 文档
  5. python 异常分类_python的异常处理
  6. 115网盘如何打开php文件格式,115网盘下载:因纽特语教材(初级+高级+音频)
  7. css订单导航栏横线动画,小程序 纯css 实现tab导航栏下划线跟随动画
  8. CountDownLatch 的使用小例
  9. selenium 获取href find_element_by_xpath
  10. cpp cu入门教程