你可能遇到这样的场景:开发软件时,需要像数据库(mysql,mongodb)、消息系统(rabbitmq)、缓存服务(redis)等其它依赖服务。当然我们可以找台机器,一步步安装依赖,然后把所有依赖的服务都安装好,这就是一台测试机。

为了避免重复的劳动,vm层面的解决方案就是把这个测试机做成镜像,以后申请的时候,就可以用之前测试机的镜像作为模板,启动一台虚拟机。这是一种解决方案,不过你可能需要更加灵活的解决方案,更加快速的启动一个开发环境,更加自由的组合和扩展开发时候依赖的服务组件,那好,it comes to Docker。

Dock基于Docker实现了快速搭建开发环境,是一个更加灵活便利的可行性方案,可以短时间内启动所有开发环境所需要的服务。

Dock Github:https://github.com/bripkens/dock

安装步骤:

1.首先确保我们安装了docker engine,然后接下来就是安装dock,当然如果在mac系统上,也可以通过虚拟化的解决方案boot2docker来安装docker,这样整个开发环境就可以都在mac机器上

2.代码clone下来,然后执行以下命令以及初始化工作,可以把dock放到环境变量中

chmod +x /path/to/dock   # Make dock executable
dock -u # Initialise dock

之后你就可以运行以下命令快速的启动需要的组件了,dock这个项目比较简单,很快就可以把代码看完,因为就是在docker之上封装了一层sh脚本,在formula里头可以根据项目需求,自行添加服务组件

$ dock redis jenkins mongodb rabbitmq

这样在开发机上就已经有如下服务了

root@docker-stable-ubuntu:~# docker ps
CONTAINER ID IMAGE COMMAND PORTS NAMES
63142f5e4ad2 tutum/rabbitmq /run.sh 0.0.0.0:5672->5672/tcp, 0.0.0.0:15672->15672/tcp rabbitmq
29c3a381ba55 dockerfile/mongodb:latest mongod 28017/tcp, 0.0.0.0:27017->27017/tcp mongodb
0b356f508ed6 jenkins:latest /usr/local/bin/jenki 50000/tcp, 0.0.0.0:8472->8080/tcp jenkins
2cf88d0aea8f dockerfile/redis:latest redis-server /etc/re 0.0.0.0:6379->6379/tcp redis

接下来,开发者就可以根据ip+port等信息,使用刚刚所启动的服务组件了

扩展:

也许我们可以提供这样的服务

1.开发者需要一个redis实例,mongodb实例等等

2.我们可以做一个这样的服务,搭建一个docker集群,然后写一个网页,接收用户的请求,请求到后台docker集群运行起来一个实例,成功后返回ip+port+admin+password

3.开发者通过网页就可以管理申请实例的生命周期

4.管理员在平台中方便的添加新的服务,只要package所需服务的docker image

加上服务发现和管理,这样就是一个简单私有云的服务分发平台

Docker搭建便捷的开发者环境的更多相关文章

  1. 如何通过Docker搭建一个swoft开发环境

    本篇文章给大家分享的内容是关于如何通过Docker搭建一个swoft开发环境 ,内容很详细,有需要的朋友可以参考一下,希望可以帮助到你们. Swoft首个基于 Swoole 原生协程的新时代 PHP ...

  2. Docker搭建wordpress博客环境(Centos7)

    Docker搭建wordpress博客环境(Centos7) 升级系统 yum -y update 设置docker库 sudo yum install -y yum-utils sudo yum-c ...

  3. 用 Docker 搭建 ORACLE 数据库开发环境

    用 Docker 搭建 ORACLE 数据库开发环境 需要安装 ORACLE 数据库做开发,直接安装的话因为各类平台的限制,非常复杂,会遇到很多问题. 还好,现在有 Docker 化的部署方式,省去很 ...

  4. 用docker搭建selenium grid分布式环境实践之路

    最近需要测试zoom视频会议,同时模拟100个人加入会议.经过了解,zoom提供了直接通过url链接加入会议的方式(只能通过chrome浏览器或者FireFox浏览器,因为用的协议是webrtc). ...

  5. 使用docker搭建selenium grid 分布式环境

    本文章只做docker搭建selenium grid 分布式环境步骤说明,对于selenium grid中的参数.流程.原理等不做说明.selenium grid的详细情况可查看官方文档https:/ ...

  6. Docker搭建Java Web运行环境

    1. 前提条件 安装了Docker的64位Linux 操作系统 Linux操作系统镜像 Linux版本的JDK压缩包 Linux版本的Tomcat压缩包 2. 启动容器 容器是在镜像的基础上来运行的, ...

  7. 使用 Docker 搭建 Java Web 运行环境

    黄勇的博客 Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种“轻量级”容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公司开始逐 ...

  8. 转:使用 Docker 搭建 Java Web 运行环境

    原文来自于:http://www.codeceo.com/article/docker-java-web-runtime.html Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都 ...

  9. 使用 Docker 搭建 Java Web 运行环境(转)

    原文 http://www.importnew.com/21798.html Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种“轻量级”容器技术,它几 ...

随机推荐

  1. [Android] Android5.1系统自带的应用启动次数统计

    reference to : http://blog.csdn.net/elder_sword/article/details/50508257 前段时间要做一个统计手机中激活量的东东,这个统计不是单 ...

  2. 安装jdk源码

    step1:打开选择Window->Preference step2:选择Java->Installed JREs step3:选中你所安装的jre,点击Edit,进入Edit JRE,如 ...

  3. 绿色通道(codevs 3342)

    题目描述 Description <思远高考绿色通道>(Green Passage, GP)是唐山一中常用的练习册之一,其题量之大深受lsz等许多oiers的痛恨,其中又以数学绿色通道为最 ...

  4. python基础——使用模块

    python基础——使用模块 Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用. 我们以内建的sys模块为例,编写一个hello的模块: #!/usr/bin/env ...

  5. Mysql之INFORMATION_SCHEMA解析1

    INFORMATION_SCHEMA库是Mysql提供的一个系统库,保存了数据库的原数据,方便用户监控与管理Msyql. 现在单说与INNODB相关的库:INNODB_SYS_TABLES,INNOD ...

  6. C语言扩展Python模块

    1. 先创建一个PythonDemo.cpp文件: //c/c++中调用python脚本,配置步骤参见上一篇:C/C++与python交互 \  C/C++中调用python文件. #include ...

  7. Ionic环境搭建

    stepts npm install -g ionic@beta Make sure you have NodeJS installed. Download the installer here or ...

  8. CSS3–1.css3 新增选择器

    1.后代级别选择器 2.同辈级别选择器 3.伪类选择器 4.属性选择器 5.UI伪类选择器 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 T ...

  9. 使用Timer和ScheduledThreadPoolExecutor执行定时任务

    Java使用Timer和ScheduledThreadPoolExecutor执行定时任务 定时任务是在指定时间执行程序,或周期性执行计划任务.Java中实现定时任务的方法有很多,主要JDK自带的一些 ...

  10. MyBatis传入参数与parameterType

    参考:http://openwares.net/database/mybatis_parametertype.html Mybatis的Mapper文件中的select.insert.update.d ...