开发者社区> 轩墨> 正文

Moving to Docker(一)为什么选择Docker

简介: 本文讲的是Moving to Docker(一)为什么选择Docker,【编者的话】本文是《Moving to Docker》系列的第一篇文章,这个系列的文章讲述了创业公司如何把基础服务迁移到Docker上,以及迁移过程中的经验教训。
+关注继续查看
本文讲的是Moving to Docker(一)为什么选择Docker【编者的话】本文是《Moving to Docker》系列的第一篇文章,这个系列的文章讲述了创业公司如何把基础服务迁移到Docker上,以及迁移过程中的经验教训。本文主要介绍了Touchware为什么要从Heroku迁移到Dokku,以及为什么最后又投靠了Docker。

本文是迁移至Docker系列的第一篇,这个系列介绍了我所在的公司是怎么把基础设施从PaaS迁移到Docker上的。如果你对基础已经很了解了,可以直接看本文底部的几个技术专题。

上个月,我一直在折腾开发环境。这是我个人的经验和故事,关于如何在Docker上简化Rails项目的部署工作。

当我开始创建Touchware的时候,我还是个独立开发者。项目比较小,也不复杂,也不需要维护,甚至不需要部署到很多机器。经过去年一年的发展,我们成长为了有10名员工的公司,同样在发展的还有我们的服务端程序和API的范围和规模。

Step1 Heroku

虽然我们还是个小公司,但我们还是需要让事情尽可能的便捷。当我们在寻找解决方案时,我们希望找到可以帮助我们减轻对硬件依赖负担的工具。由于我们主要开发RoR项目,而Heroku不仅对RoR有很好的支持,而且还提供常用的数据库(Postgres/Mongo/Redis等),于是我们就明智的使用了它。

Heroku有很好的技术支持和文档说明,这使得部署工作非常轻松。唯一的问题是,当你的公司还处于发展阶段时,支出会有很多,而使用Heroku也不是很划算。

Step2 Dokku

为了尝试并降低成本,我们决定试试Dokku,引用GitHub上的一句话来说,Dokku是迷你版本的Heroku。
Docker powered mini-Heroku in around 100 lines of Bash
我们在DigitalOcean上购买了很多台机器,都预装了Dokku。Dokku大多时候跟Heroku很像,但是当有的项目需要调整配置参数或者需要特殊的依赖时,它就无能为力了。我们有一个应用,它需要对图片进行多次转换,这导致我们找不到一个适合版本的imagemagick在安装了Dokku的Docker容器内运行。尽管我们还有很多应用在Dokku上运行,但我们还是不得不迁移一些到Heroku。

Step3 Docker

几个月前,由于开发环境和生产环境的问题,几个项目需要重新调整,我决定使用Docker。Docker简单来说就是用于容器化应用,简化部署工作。由于一个Docker容器已经包含项目运行所需要的所有依赖,只要它能在你的笔记本上运行,就能在任何一个别的远程服务器的生产环境上运行,包括Amazon的EC2和DigitalOcean上的VPS。

Docker IMHO特别有意思的原因是:
  • 它促进了模块化和关注点的分离:你只需要去考虑应用的逻辑部分(负载均衡:1个容器;数据库:1个容器;web服务器:1个容器)
  • 在部署的配置上比较灵活:容器可以被部署在大量的HW上,也可以很容易地被重新部署在不同的服务器或者服务提供者上。
  • 它允许非常细粒度的优化应用的运行环境:由于你可以为你的容器自己创建镜像,就可以自己去配置环境。

它也有一些缺点:
  • 它的学习曲线非常的陡峭(这是从一个软件开发者的角度来看,而不是经验丰富的专业人员)。
  • 搭建这些环境并不简单,尤其是还需要自己搭建一个私有的Registry。

在接下来的几篇文章中,将会介绍如何搭建一个半自动化的Docker部署系统。
  • 搭建一个私有Registry(翻译中)
  • 配置Rails项目的半自动化部署方案(翻译中)

原文链接:Moving to Docker(翻译:陈杰 审校:李颖杰)

===========================

译者介绍

陈杰,北京理工大学计算机学院在读博士,研究方向是自然语言处理在企业网络信誉评价方面的应用,平时也乐于去实现一些突发的想法。在疲于配置系统环境时发现了Docker,跟大家一起学习、使用和研究Docker。

原文发布时间为:2015-01-30
本文作者:Sonyfe25cp 
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:Moving to Docker(一)为什么选择Docker

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Moving to Docker(三)基于Docker的Rails自动化部署
本文讲的是Moving to Docker(三)基于Docker的Rails自动化部署,【编者的话】本文是《Moving to Docker》系列的最后一篇,整个系列讲述了创业公司如何把基础服务迁移到Docker上,以及迁移过程中的经验教训。
1899 0
Moving to Docker(二)搭建一个私有registry服务
本文讲的是Moving to Docker(二)搭建一个私有registry服务,【编者的话】本文是《Moving to Docker》系列的第二篇,这个系列的文章讲述了创业公司如何把基础服务迁移到Docker上,以及迁移过程中的经验教训。
2128 0
Docker镜像操作、容器操作、数据卷及挂载数据卷
Docker镜像操作、容器操作、数据卷及挂载数据卷
6 0
云原生之容器编排实践-Docker使用JDK-Alpine镜像的时区问题导致定时任务不执行
云原生之容器编排实践-Docker使用JDK-Alpine镜像的时区问题导致定时任务不执行
15 0
云原生之容器编排实践-SpringBoot应用Docker化
云原生之容器编排实践-SpringBoot应用Docker化
8 0
云原生之容器编排实践-通过IDEA连接Docker服务
云原生之容器编排实践-通过IDEA连接Docker服务
13 0
Docker Review - 使用docker volume数据卷实现容器内的数据与宿主机同步
Docker Review - 使用docker volume数据卷实现容器内的数据与宿主机同步
7 0
Docker Review - docker 容器 常用命令(下)
Docker Review - docker 容器 常用命令(下)
11 0
Docker Review - docker 容器 常用命令(上)
Docker Review - docker 容器 常用命令(上)
13 0
Docker基础 & 镜像、容器
Docker的入门篇, docker的基本命令应该了解一下的
43 0
+关注
轩墨
文章
问答
视频
文章排行榜
最热
最新
相关课程
更多
相关电子书
更多
Docker@Alibaba——超大规模Docker化的实战经验
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关镜像