开发者可以使用Docker做什么???
Docker如今赢得了许多关注,很多人觉得盛名之下其实难副,因为他们仍然搞起不清 Docker 和普通开发者到底有什么关系。许多开发者觉得 Docker 里自己很远, Docker是生产环境中的工具,和自己无关,我也是花了很多时间猜想清楚作为不同开发人员如果在自己的开发中使用 Docker 。 坦率的说,我仍处于学习的过程中。这篇文章提供了一个Docker用例列表,我希望它能...
Docker如今赢得了许多关注,很多人觉得盛名之下其实难副,因为他们仍然搞起不清 Docker 和普通开发者到底有什么关系。许多开发者觉得 Docker 里自己很远, Docker是生产环境中的工具,和自己无关,我也是花了很多时间猜想清楚作为不同开发人员如果在自己的开发中使用 Docker 。 坦率的说,我仍处于学习的过程中。
这篇文章提供了一个Docker用例列表,我希望它能更好的帮助你理解 Docker 并引发你的思考。本文只是描述 Docker 在不同开发者日常的应用,并不提供完整的解决方案。
在介绍用例之前,我希望你能先记住这句话:“Docker 都提供了一个基础系统镜像作为运行应用时的举出系统。也就是说,只要是 Linux 系统上的应用都可以运行在 Docker 中”。
可以在 Docker 中运行数据库吗? YES,当然可以
可以在 Docker 中运行 Node.js 网站服务器吗? YES,当然可以
可以在 Docker 中运行API服务器吗? YES,当然可以
Docker 并不在乎你的应用程序尸什么、做什么,Docker 提供了一组应用打包、传输和部署的方法,以便你能更好地在容器内运行任何应用。
下面的例子我也常使用,当然,你也更好的案例也可以分享给我
尝试新软件
对开发者而言,每天会催生出的各式各样的新技术都需要尝试,然而开发者却不太可能为他们一一搭建好环境并测试。时间很宝贵,正是得益于 Docker 后台会自动获得环境镜像并且运行环境。
并不仅仅是新技术环境搭建用得到 Docker 。如果你想快熟在你的笔记本上运行一个 MySQL 数据库,或者一个 Redis 消息队列,那么使用 Docker 便可以非常容易地做到。例如 Docker 只需要一条命令便可以运行 MySQL 数据库:docker run -d -p 3306:3360 rurum/mysql。
注:虽然使用命令也能快速地安装 MySQL 数据,但是当用到最新的技术或者非常复杂的技术时,使用 Docker 便会是个非常好的选择,例如 GitLab,普通用户大概需要一天的时间去搭建 GitLab 平台, 而 Docker 则只需要一条命令。
进行演示
喜爱真乃我们经常需要把自己的开发成功对客户做一两个演示。搭建环境的过程非常麻烦。现在我发现 Docker 已经成为我演示这些工具的最合理的方式,同事,对于客户来说,我们可以直接将 Docker 镜像提供给他们,而不必续作任何环境配置的工作,工作的效果也会和在他们演示中所看到的一模一样,同事不必担心他们的环境配置会导致我们的产品无法运行。
避免“我的机器上可以运行”
无论是上一篇介绍的企业部署还是本文的个人 Docker 用例,都提到了这个情况。因为环境配置不同,很多人在开发中也会遇到这种情况,甚至开发的软件到了测试人员的机器上变不能运行,但这都不是重点。重点是,如果我们有一个可靠的、可分发的标准开发环境,那么我们的开发将不会像现在这么痛苦, Docker 便可以解决这个问题, Docker 镜像并不会因为环境的变换而不能运行,但不会在不同的电脑上有不同的运行结果。可以给测试人员提交含有应用的 Docker 镜像,这样便不会再发生类似于 “在我的机器上可以运行” 的这种事情,很大程度上减轻了开发人员测试人员互相检查机器环境设置带来的时间成本。
另一个 Docker 可以发挥用处的地方是培训班。除了 Docker和使用虚拟机一样简单,但是 Docker 要更方便、更轻量级。同事,我们也可以告诉学员:“在培训的同时,我们还讲需到当下最流行的而技术——Docker”,这种双赢的结果,何乐而不为勒。
学习 Linux 脚本
当然这个原因看起来可能比较奇怪,但是对不不熟悉 Linux 操作系统和Shell脚本的人来说,缺失是一个好机会。及时本文并不是再讲 Liunx ,但是 Liunx 的重要度仍然不言而喻,如果你用的是 Windows ,那么给你个建议:从云主机提供商那里租用一台云主机:我推荐使用 CoreOS系统的云主机。虽然这样并不会让你成为专业的Linux运维,但是可以让你快速地学到 Liunx 基础知识,爱上命令行操作,并且,慢慢开始熟悉和欣赏 Liunx。
更好的利用资源
徐牛基的粒度是 “虚拟出的机器” ,而 Docker 的粒度则是 “被限制的应用” ,相比较而言 Docker 的内存占用更少,更加轻量级。
对我来说这是 Docker 的一个优势: 因为我经常在自己电脑中运行多个 Docker 应用,使用 Docker 比使用虚拟机更加简单,方便,粒度更细,也能持续地跟踪容器状态。
为微服务定制
如果你一直在关注科技新闻的话,那么你应该听说过 “微服务(Microservices)” 的概念。Docker 可以更好的和微服务结合起来,从概念上来说,一个微服务便是一个提供一整套应用程序的部分功能, Docker 便可以在开发、测试和部署过程中一直充当微服务的容器,甚至生产环境也可以在 Docker 中部署微服务。
在云服务提供商之间移植
大多数的云主机商已经全部支持 Docker 。对于开发人员来说,这表示你可以很方便地切换云服务提供商,当然也可以很方便地将你本地的开发移动到云主机上,不需要本地配置一次运行环境,在云主机上再次配置一次运行环境。全面部署 Docker 最为标准运行环境可以极大地减轻应用上线时的工作量和生产 BUG。
API 应用
API 是应用之间的粘合剂,一个合格开发者肯定使用过别人提供的 REST API ,或者自己开发过 REST API 。需要指出的是,无论是客户端还是 API 提供端,在开发之前都需要先定义一组公共的 API 接口,学成文档,然后才能进行编码。如果服务端和客户端是共同开发的话,那么服务端通常会先实现能返回固定字符串的 API 接口,在以后的快发中再慢慢去实现 API 的功能。
虽然有些人会认为在这里 Docker 被滥用了,完全可以用 sample.json 这种文件去实现虚拟 API,但是下面有个实例可以更好地解决前后端分离开发时的 API 问题。
为了更好的理解我的意思,给大姐提供一个实例:JSON Server ,一个用于提供JSON 提供数据的 REST API 。使用过这个容器的人就是知道,既然有那么好用的 Docker JSON Server ,我们没有理由不用 Docker。
注:
- 运行实例的 JSON Server,同时使用示例中提供的 JSON 文件,只需执行一条命令便可以创建一个服务端的 API 应用。
- 使用 curl http://127.0.0.1:80/posts示例文件汇总的 posts 段,这样在后端没有开发完 API 的时候,前端一样可以进行协同开发
技术创新
这点应该算不上是用例,但是我还是来写一下。Docker正在楷书发展工具也在不断更新,没有人能遇见未来 Docker 会是什么样子的。你在复杂的系统中 Docker 使用的越多,越是可能会发现技术上的空白和未来技术发展的方向。现在还处于 Docker 的发展期,任何你使用 Docker 创建的工具都有可能成为社区关注的热点,这是 Docker 的机会,也是成就你自己的未来。
你的用例
最后一条便不再是我的用例了,而是 Docker 在你手中能发挥出多大的作用,我也很希望看到你能提供跟你更多 Docker 的方式,欢迎留言
其他:
还有,两个技巧可以分享给你们。在学习 Docker 的过程中因为有了这两个的帮助,才能不断地提升自己。
一:Docker Hub Registry。这是 Docker 的官方的景象仓库,除了托管着 Docker 官方的镜像外,和 Github 一样,你可以在上面上传自己的镜像,也可以在上面收拾其他有用的镜像面积大地节省自己的时间。例如 Oracle-XE-11g 镜像,所有的一切都是现成的,完全不需要自己去下载 Oracle XE 11g 安装。这样为你个团队节约了大量的时间成本。
如果不太确定的话,可以去 Docker Hub 上搜一下有没有自己用得到的镜像。大部分你所需要的镜像在 Docker Hub 上都已经有人构建了。
二:多参考 laaS供应商的新闻,虽然我们不能向他们会议室那样完全了解他们的公司动态,但是仍然可以从新闻中可以了解到 Docker 最新的发展方向和技术趋势。可以肯定的是,容器话技术是未来的热点,我们不仅可以在本机运行 Docker ,不仅仅在一家云服务商的主机上运行 Docker,未来所有的云服务提供商都会支持 Docker。
Docker 前景很明确,采用了 Docker 只会让开发变得更简单。
原文链接:Docker Use Cases(翻译:大舒)
更多推荐
所有评论(0)