您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

使用Docker正确的姿势

时间:2020-07-01 18:14:54  来源:  作者:

通过VS Code和Docker扩展成为Docker高级用户。

使用Docker正确的姿势

> Photo by Michał Parzuchowski on Unsplash

 

您可以使用选择的语言来实施服务。 现在,您想将其容器化并在本地对其进行测试,然后再将其部署到生产环境中。 第一步是编写Dockerfile,构建映像,运行容器并检查日志。 对?

使用Docker正确的姿势

> 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自动完成功能。 此外,您还将获得常见命令的语法帮助。

使用Docker正确的姿势

> IntelliSense and syntax help for Docker on VS Code

 

· 生成Dockerfile:您可以使用Docker生成Dockerfile并将其添加到工作区:从命令面板中将Docker Files添加到Workspace命令。 该命令将生成Dockerfile和.dockerignore文件,并将它们添加到您的工作区中。 您还可以使用此命令来生成添加的Docker Compose文件。 在调试时,这将很方便。

使用Docker正确的姿势

> Generate Dockerfiles for a simple flask App

 

· 探索:Docker扩展为VS Code贡献了Docker视图。 Docker视图使您可以检查和管理Docker资产:容器,映像,卷,网络和容器注册表。 一切都只需右键单击即可。

使用Docker正确的姿势

> Docker view in VS Code

 

· 执行Docker命令:许多最常见的Docker命令都内置在命令面板中。 您可以运行Docker命令来管理映像,网络,卷,映像注册表和Docker Compose。 另外,Docker:Prune System命令将删除停止的容器,悬空的映像以及未使用的网络和卷。

使用Docker正确的姿势

> 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…。将打开一个终端,您的映像将在几秒钟内准备就绪。

使用Docker正确的姿势

> Build your image using Docker extension for VS Code

 

要运行该应用程序,请从左侧面板中选择Docker图标,在"图像"部分中找到您的图像,右键单击它,然后选择"运行"。 这么简单。

使用Docker正确的姿势

 

 

在"容器"部分中,找到正在运行的容器,右键单击它,然后选择"查看日志"。 此命令将在终端中显示您的容器的日志。 获取它正在侦听的端点(应为http://0.0.0.0:5000)。 要获取Python服务的结果,请运行curl http://0.0.0.0:5000。

使用Docker正确的姿势

> 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)



Tags:Docker   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、前因闲来没事,想着升级下树莓派中的应用,没曾想,全是最新的,害我以为被黑客眷顾,帮我升级了。多方查证,才知道,是上次搭建的photoprism搞的鬼,不过也不全是它的锅,只是它的yml文...【详细内容】
2021-12-28  Tags: Docker  点击:(2)  评论:(0)  加入收藏
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  Tags: Docker  点击:(12)  评论:(0)  加入收藏
在网页中渲染公式一直是泛学术工具绕不开的一个功能,最近更新产品功能,正巧遇到了这个需求,于是使用容器方式简单实现了一个相对靠谱的公式渲染服务。分享出来,希望能够帮到有类...【详细内容】
2021-12-01  Tags: Docker  点击:(11)  评论:(0)  加入收藏
1.1 docker命令直接部署1.1.1 拉取镜像docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka1.1.2 启动zookeeper容器docker run -d --name myzookeeper -p 2...【详细内容】
2021-11-15  Tags: Docker  点击:(48)  评论:(0)  加入收藏
01 前言 顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述我们在docker中使用浏览器进行自动化测试如果可以...【详细内容】
2021-10-29  Tags: Docker  点击:(42)  评论:(0)  加入收藏
因为你懂得的原因,下载docker镜像速度非常喜感,故收集几个国内常用的docker镜像。Docker中国区官方镜像地址:https://registry.docker-cn.com网易163的镜像http://hub-mirror.c...【详细内容】
2021-10-28  Tags: Docker  点击:(48)  评论:(0)  加入收藏
我们在很多场景下都需要做笔记,来对抗遗忘,一份好的笔记不仅能在需要的时候供我们查阅,也能帮助我们归纳整理知识提高做事效率。 目前市面上有很多云笔记软件,体验上各有不同,但...【详细内容】
2021-10-11  Tags: Docker  点击:(62)  评论:(0)  加入收藏
1. Nacos官网Nacos Docker 快速开始2. Clone 项目git clone https://github.com/nacos-group/nacos-docker.git3. cd 到nacos-docker 路径下 直接启动即可cd nacos-dockerdo...【详细内容】
2021-09-16  Tags: Docker  点击:(109)  评论:(0)  加入收藏
今天不做保姆级教程,分享奶爸常用、好用的Docker应用。有了这些Docker,Nas的可玩性会大幅提高,有时候奶爸也在想,刨去官方套件不考虑的话,Nas真的是差不多。如果小伙伴们有需要,后...【详细内容】
2021-09-03  Tags: Docker  点击:(168)  评论:(0)  加入收藏
环境要求 ubuntu系统:20.04 docker版本:20.10.7 redis版本:6.0.6步骤由于我这里已经有相应的redis镜像,这里就不记录了,关于docker一些基础知识可以看我以前的笔记开启3台re...【详细内容】
2021-07-26  Tags: Docker  点击:(117)  评论:(0)  加入收藏
▌简易百科推荐
一、前因闲来没事,想着升级下树莓派中的应用,没曾想,全是最新的,害我以为被黑客眷顾,帮我升级了。多方查证,才知道,是上次搭建的photoprism搞的鬼,不过也不全是它的锅,只是它的yml文...【详细内容】
2021-12-28  闲余悟道    Tags:Docker   点击:(2)  评论:(0)  加入收藏
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  实战Java    Tags:Docker   点击:(12)  评论:(0)  加入收藏
在网页中渲染公式一直是泛学术工具绕不开的一个功能,最近更新产品功能,正巧遇到了这个需求,于是使用容器方式简单实现了一个相对靠谱的公式渲染服务。分享出来,希望能够帮到有类...【详细内容】
2021-12-01  编程菌zfn    Tags:Docker   点击:(11)  评论:(0)  加入收藏
1.1 docker命令直接部署1.1.1 拉取镜像docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka1.1.2 启动zookeeper容器docker run -d --name myzookeeper -p 2...【详细内容】
2021-11-15  无    Tags:docker   点击:(48)  评论:(0)  加入收藏
01 前言 顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述我们在docker中使用浏览器进行自动化测试如果可以...【详细内容】
2021-10-29  小码哥聊软件测试    Tags:Docker   点击:(42)  评论:(0)  加入收藏
因为你懂得的原因,下载docker镜像速度非常喜感,故收集几个国内常用的docker镜像。Docker中国区官方镜像地址:https://registry.docker-cn.com网易163的镜像http://hub-mirror.c...【详细内容】
2021-10-28  抓蛙程序猿    Tags:docker   点击:(48)  评论:(0)  加入收藏
环境:Spring5.3.10通常,应用程序开发人员不需要对ApplicationContext实现类进行子类化。相反,SpringIOC容器可以通过插入特殊集成接口的实现来扩展。使用BeanPostProcessor自定...【详细内容】
2021-10-26  Java网络研发架构师    Tags:Spring   点击:(34)  评论:(0)  加入收藏
我们在很多场景下都需要做笔记,来对抗遗忘,一份好的笔记不仅能在需要的时候供我们查阅,也能帮助我们归纳整理知识提高做事效率。 目前市面上有很多云笔记软件,体验上各有不同,但...【详细内容】
2021-10-11  运维贼船    Tags:docker   点击:(62)  评论:(0)  加入收藏
1. Nacos官网Nacos Docker 快速开始2. Clone 项目git clone https://github.com/nacos-group/nacos-docker.git3. cd 到nacos-docker 路径下 直接启动即可cd nacos-dockerdo...【详细内容】
2021-09-16  程序狗爱化妆    Tags:Nacos   点击:(109)  评论:(0)  加入收藏
今天不做保姆级教程,分享奶爸常用、好用的Docker应用。有了这些Docker,Nas的可玩性会大幅提高,有时候奶爸也在想,刨去官方套件不考虑的话,Nas真的是差不多。如果小伙伴们有需要,后...【详细内容】
2021-09-03  晋升奶爸的垃圾佬    Tags:Docker   点击:(168)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条