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

时间: 2024-08-24 02:35:49

Moving to Docker(一)为什么选择Docker的相关文章

Docker基础之一: Docker架构

Docker的架构 Docker使用的是 C-S架构.Docker的客户端同Docker Daemon进行交互,其中主要的工作是通过 daemon来完成,包括拉取镜像,编译镜像,运行容器,发布容器等.Docker client和daemon可以运行在同一个系统上,也可以通过远程方式进行访问.Docker client和daemon之间是在 socket 上通过RESTful API来进行交互的.  Docker Daemon 如上图所示,Docker daemon运行在一个主机之上,用户并不是直

你真的了解Docker吗?——Docker插件机制详解

云栖TechDay活动第十八期中,阿里云容器服务团队的核心成员陈萌辉带来了题为<Docker插件机制详解>的分享,分享中,他结合阿里云容器服务实践介绍了Docker插件的基本原理.实现方法以及插件机制未来的演进. 幻灯片下载地址:https://yq.aliyun.com/attachment/download/?filename=bdefe06ba7a14d7604af5a63a4bcc4f3.pdf 以下为现场分享观点整理. 为什么需要Docker插件?   Docker之所以这么火并且有

《循序渐进学Docker》——第3章 Ubuntu下使用Docker 3.1 Docker的运行平台

第3章 Ubuntu下使用Docker 第2章我们介绍了在Windows下如何搭建一个Docker运行环境.这一章我们要切换环境,在Ubuntu系统下使用Docker.为什么要切换到Ubuntu下呢,还要从Docker的运行平台说起. 3.1 Docker的运行平台 首先,我们需要知道Docker可以在哪些操作系统下运行.截止到2016年3月底,几乎所有的Linux系统(如Red Hat Enterprise Linux(RHEL)/Centos.Debian/Ubuntu.gentoo.arc

《循序渐进学Docker》——第一部分 Part 1 基础篇 第1章 全面认识Docker 1.1 Docker是什么

第一部分 Part 1 基 础 篇 第1章 全面认识Docker 第2章 初步体验Docker 第3章 Ubuntu下使用Docker 第4章 Docker的基础知识 第1章 全面认识Docker 欢迎来到Docker的世界. Docker,Golang社区杀手级的应用,是Github上最活跃的项目之一,也是开源社区最受欢迎的项目. Docker,号称要成为所有云应用的基石,并把互联网升级到下一代. 开发.测试.运维人员看到Docker,都激动地说:"太好了,这正是我所需要的!" Do

前端也应该了解点 docker 知识:docker 架构(上)

上一篇文章 前端也应该了解点 docker 知识:docker 的理念与场景 介绍了 docker 的一些理念,以及在前端方面可能的应用场景,本篇我们梳理一下 docker 的架构. 话说,我们团队的小明同学看了上篇文章之后,很是激动,迫不及待的想尝试下 docker ,然后按照网上一些教程跑出来了一个 "Hello world" ,激动的差点把鼠标给扔了.如果小明的故事到这里,那就不是我们团队的小明了,他是位爱动脑筋,对细节刨根问底的同学,他没有沉浸在跑出来 "Hello

Docker -- 2 -- 利用docker部署网站和数据库

在Docker – 系统整洁之道 – 1中已经对Docker的一些命令和Docker镜像的使用及操作做了记录. 这次就利用docker进行一次真正的实例使用,使用docker搭建一个简单的答题系统,这个系统是当时做来给网络安全周做手机答题的系统,很简单,代码风格很差. 这篇主要记录了三种docker使用的方式. 用supervisor方式运行一个多进程的docker实例 创建一个ngnix和php运行的环境 创建一个ngnix,php,mysql集合运行的环境,使用docker-compose构

openstack 启动docker实例,docker实例中运行手写的发包程序,docker实例无法启动

问题描述 各位好,小弟最近遇到了一个问题,已经搞了好多天了.背景:就是我想用openstack启动docker实例(docker镜像里面有个http请求客户端),让docker实例启动之后,请求默认的HTTP服务器.我在openstackKilo版本,(controller+network+compute1(kvm)+compute2(docker)),装了novadockerdriver.可以用openstack启动docker实例,但是只能启动两个指定的镜像(类似于ubuntu-sshd这种

Docker 周报:Docker 已扎根新一代 PaaS

新闻 1.<CoreOS收购Quay.io,提供企业级的Docker Registry>:CoreOS近来势头正劲,继上个月宣布完成800万美元的A轮融资后,近日又宣布收购私有Docker仓库服务商Quay.io.此次收购的具体细节目前尚未披露,不过基于Quay.io的CoreOS企业版Registry已经上线.和GitHub企业版一样,CoreOS企业版搭建在企业本地网络中,并且包含了Quay.io的所有东西,比如UI.访问控制.团队协作. 2.<CenturyLink发布Docker

Docker基础之六: Docker基础命令

容器相关的命令 (对Docker感兴趣的朋友可以加我的微信ghostcloud2016,然后我把你加到我们的一个Docker爱好者群组里面.) 在上例中,我们用3种方式运行了容器,在上节中我们学习了: docker ps : 查看容器列表 docker logs:查看容器的日志 docker stop:停止容器 在本节中,我们将通过事例来熟悉一些其他的docker命令,并学习docker client. 1 Docker Client Docker Client和Docker Daemon实际使