如何在IDE中使用Docker

简介: 本文讲的是如何在IDE中使用Docker,【编者的话】这是一个新颖的想法,在码农的IDE环境中,若是可以很方便地使用Docker,真是一件很有意思的事:对Dockerfile或者Compose YML文件进行语法高亮、自动补全、语法验证,甚至还可以直接在IDE中启动这个Docker容器来进行更深入的测试或者开发。
本文讲的是如何在IDE中使用Docker 【编者的话】这是一个新颖的想法,在码农的IDE环境中,若是可以很方便地使用Docker,真是一件很有意思的事:对Dockerfile或者Compose YML文件进行语法高亮、自动补全、语法验证,甚至还可以直接在IDE中启动这个Docker容器来进行更深入的测试或者开发。让懒惰的程序员们可以更高效地利用时间,专注于解决应用本身的问题。有兴趣的小伙伴,可以搜搜有没有更好的可以分享分享,或者帮助社区写另一个优秀的工具出来。

这个博客帖子是关于如何集成Docker到我们的IDE中。让我们有机会介绍一个Eclipse插件 doclipser ,可以在IDE中编辑、构建和运行Docker容器。
domeide-color-light.png

Docker的开发环境

在深入Docker和IDE集成细节之前,让我们看看,为什么得要把Docker放进必需的开发工具列表中。

构建系统

首先,Docker能够使我们的构建环境具有便携、可重复以及隔离的特性。举个例子:你需要使用5.1版本的gcc工具构建一个C文件。 所需要做的就是运行以下命令(当然,这里假定你已经安装了Docker):
docker run gcc:5.1 gcc -o helloworld helloword.c

神奇的是,你可以在任何地方运行它,你不需要考虑库文件、冲突或者gcc的安装。只要它能在你的笔记本上跑起来,也就可以在集成服务器上运行了。

运行环境

同样适用于运行环境。如果你只想在tomcat 8上运行Java Web应用程序,可以只使用:
docker run tomcat:8 -v HelloWorld.war:/usr/local/tomcat/webapps/Helloworld.war

同样,你不用担心依赖性、平台配置或Linux发行版的差异,这些Docker都能搞定。

Docker和IDE

好吧,上面已经非常清楚地说明了,Docker对开发如此有用的原因。就像我们描述的,你可以使用喜欢的shell来执行这些命令。 问题是,开发者都是懒惰的。这意味着,如果我们在最喜欢的IDE中码字,就不希望跑到IDE外面来使用Docker。我们想直接从IDE中运行容器。

不幸的是,现在主要的IDE都不支持Docker。

所以,你是不是很想看到IDE中集成了Docker?

你想要在容器中运行IDE?
docker run eclipse

汗,这不是容器的使用方式。在容器里面运行图形化应用程序,还是太过复杂也缺少可移植性。

你想要从IDE中运行容器?

是哦!我们希望能看到支持Dockerfile和Compose YML文件,希望IDE构建系统和运行环境能在容器内跑。让我们来看看详细的需求:

Dockerfile的支持

Dockerfile支持应该带有语法高亮显示,自动补全(当按下Ctrl+SPACE键,dockerfile指令会自动弹出来)和语法验证(在执行 docker build 之前,IDE要能指出语法错误)
docker_img_syntax.jpg

Compose YML文件的支持

更有意思的是对Compose YML文件的支持。这将允许定义容器间的关系,如Link和Volume,也可以从你的编辑器一次启动多个容器。真的很酷!
compose.png

IDE构建系统

当然,你需要得到IDE中运行容器的支持。具体地,容器可以构建你的源文件。如果利用Docker多种语言特性,这可能变得更容易。
buildsystems.png

IDE运行环境

我们期待IDE的最后一项功能,应该是能够在Docker容器内部启动运行环境。
runenv.png

doclipser简介

根据上述四个功能,我们构建了doclipser,编辑Eclipse插件、构建和运行Docker容器。

doclipser支持Dockerfile:语法高亮显示,自动补全和语法验证。虽仍没有支持Docker Compose YML文件,但已经可以执行一些Docker的命令,来构建源文件或启动运行环境。

doclipser不是唯一的Docker Eclipse插件。这儿有一个非常好的 Eclipse Docker工具集 (以下简称:EDT),由JBoss维护并且和Eclipse的Linux工具包一起分发。 即使它们都能使大家在IDE中使用Docker,doclipser和EDT还是两种不同的方法:
  • doclipser通过对Dockerfiles的支持,专注于编辑和运行容器,在未来的版本中,将提供对Docker Compose YML文件的支持。
  • EDT对Docker镜像和容器拥有更高级的管理方式,但缺乏对Dockerfiles的支持。


domeide.github.io

Doclipser并不是将Docker集成到IDE的唯一的工具。我们正在建设一个GitHub的页面,收集所有已存在的工具: http://domeide.github.io
这里已包括:
  1. Sublime Docker
  2. IntelliJ IDEA 14.1
  3. Eclipse JBoss Tools
  4. Visual Studio 2015 RC Tools for Docker预览版

这篇博文是我在dotScale 2015大会上的演讲稿。

原文链接:Docker meets the IDE(翻译:黄帅 校对:魏小红)

===================================
译者介绍
Henry Huang,目前供职于趋势科技 Trend Micro(南京),负责集群运维的工作。

原文发布时间为:2015-06-24 
本文作者:henrysher
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:如何在IDE中使用Docker
目录
相关文章
|
安全 文件存储 iOS开发
告别痕迹:远程桌面连接历史和凭据的清零指南
【8月更文挑战第18天】使用远程桌面后,为保障安全隐私,需清除连接历史及凭据。在Windows中,可通过注册表编辑器删除HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default下的MRU键值来清除历史记录;macOS下则需移步至“~/Library/Application Support/Apple/Remote Desktop”删除“Clients.plist”。清除凭据方面,Windows用户应访问“控制面板”中的“凭据管理器”删除相应条目;macOS用户需利用“钥匙串访问”应用找出并移除相关条目。
3761 3
|
弹性计算 前端开发 JavaScript
PHP的未来在哪里??
PHP的未来在哪里??
139 2
|
机器学习/深度学习 Ubuntu Linux
openpose原理及安装教程(姿态识别)
openpose原理及安装教程(姿态识别)
|
存储 XML 缓存
关于云平台虚拟机核心组件 libvirt 热迁移流程及关键参数介绍 | 龙蜥技术
一键了解libvirt虚拟机热迁移整体流程,迁移方式及关键迁移参数作用及影响。
|
JavaScript API
如何判断元素是否在可视区域内
如何判断元素是否在可视区域内
|
存储 数据处理 C++
相见恨晚的Matlab编程小技巧(4)-程序运行太慢了咋解决——合理使用循环语句(2)
        上一篇博客介绍了通过向量化运算、预分配空间两种常用的方式提高代码的运行效率。实际上,matlab还有几种内置函数来避免循环语句的使用,分别为arrayfun、cellfun以及structfun函数。由于这几种函数需要用到匿名函数以及函数句柄的概念,很多人可能不太清楚,所以我才单独写一篇博客进行介绍。
|
前端开发 JavaScript
带你读《现代Javascript高级教程》二十七、实现符合Promise/A+规范的Promise(2)
带你读《现代Javascript高级教程》二十七、实现符合Promise/A+规范的Promise(2)
148 0
|
安全 编译器 C语言
【C++】IO流
【C++】IO流
138 0
Linux screen 常用命令(超好用)
Linux screen 常用命令(超好用)
|
Cloud Native Prometheus Java
实操 | 如何通过 SOFALookout & Prometheus 监控 SpringBoot 项目
SOFA (Scalable Open Financial Architecture ) 是蚂蚁金服自主研发的金融级分布式中间件,包含了构建金融级云原生架构所需的各个组件,在蚂蚁金服内部经过了将近 10 年的实践以及发展。
1158 0