原文:http://www.xueqing.tv/cms/article/247

Docker是最近炒得很火热的一门技术,在网上可以找到关于它的介绍文章,比如《Docker到底是什么?为什么它这么火!》《开发漫谈:千万别说你不了解Docker!》。但这些文章都是从IT开发人员的角度来介绍的,让我们这些搞数据分析的人摸不着头脑。

其实Docker技术也可以用在数据分析和数据产品的开发中,比如Harry Zhu写的打造数据产品的快速原型:Shiny的Docker之旅,以及肖楠在统计之都海外沙龙介绍的用docker技术和R做可重复研究的liftr包

个人觉得,Docker技术能给数据科学家带来的好处之一,是能够帮助我们快速搭建分析中所用到的环境,小到不同版本的R,大到hadoop、Spark集群

本系列文章其实就是想从数据科学家的角度,跟大家一起来探索Docker技术。第一篇讲的是在Windows下搭建Docker环境,后面将陆续讲解怎么用Docker搭建RStudio Server、Hadoop、Spark等环境

文章末尾还有配套的视频教程,里面有更多细节的演示。

下载安装Docker Toolbox

Docker Toolbox的官方网站是https://www.docker.com/products/docker-toolbox,选Windows版的下载,如果下载不了,可以点这里下载。

下载完之后,双击程序,开始安装,跟其他软件的安装一样,但有一点需要注意,当出现下面的画面时,要把 Install VirtualBox with NDIS5 driver[default NDIS6] 这个选项勾上

配置Git Bash

安装Docker Toolbox时安装的Docker Quickstart Terminal和Kitematic图形界面并没有用,我们就别折腾了,还是用Git Bash来启动Docker吧。在安装Docker Toolbox时也同时安装了Git for Windows,我们现在只会用到里面的Git Bash,它是类似Linux的命令行终端,在里面可以用很多Linux命令,比如ls、mv等,对Linux命令不熟的可以看看我们网站上的《Linux命令行入门》课程。在开始菜单里可以看到Git Bash的快捷方式

在使用Docker前,要先创建docker machine,它其实是台虚拟机,不过在使用它的时候,你可能根本察觉不出来它是虚拟的。默认情况下,docker machine的所有文件都会保存在用户的根目录下,一般是在C盘,如果就用默认的位置,C盘的空间会越来越小,所以最好还是换个地方。

我们要修改Bash的配置文件来修改默认的docker machine保存位置,打开Bash以后,执行notepad .bash_profile,会调用记事本打开配置文件.bash_profile,如果不存在该文件,就选择新建这个文件。(这里假设你不会用bash里的编辑器vim,如果你会用vim,就执行命令vim .bash_profile )

假设我想把docker machine保存在D:\docker,那么先新建这个目录,然后在.bash_profile里添加下面这行

export MACHINE_STORAGE_PATH='D:\docker'

创建docker machine

在使用docker的时候,会需要从docker的网站下载镜像文件,下载速度可能会很慢。还好阿里云为我们提供了加速器。登录阿里云的开发者平台,进入管理中心

点左侧导航栏的加速器,然后在右边选Windows

阿里云已经给我们提供了创建装有docker环境的linux虚拟机的语句,但是这条语句不能直接用,因为我们在前面已经修改了虚拟机默认的位置。需要在这条命令里加上 --storage-path,或者简写为-s,后面加上路径,像下面这样:

docker-machine -s "D:\docker" create --engine-registry-mirror=https://s5q5zo4h.mirror.aliyuncs.com -d virtualbox default

但是上面这条命令是我的账号生成的,你需要自己注册个阿里云账号,找到相应的命令

回到bash里执行上面的语句创建docker machine,发现因为功夫墙的阻拦,无法下载boot2docker.iso文件,程序中断。幸好在Docker Toolbox的安装目录下就包含了这个文件,把它复制到D:\docker\cache

再来创建docker machine就成功了

这台docker machine创建后就启动了,如果下次我们再打开电脑,想要启动docker machine,可以打开Git Bash,然后执行

docker-machine start

来启动docker machine。

进入docker环境

我们现在的Bash还在Windows里,接下来执行

docker-machine ssh default

如果看到下面的画面,那么恭喜你,你已经进入了docker的世界!

这其实是通过ssh登录到了VirtualBox虚拟机里的Linux系统。如果觉得Git Bash提供的终端太简陋,你也可以用Xshell、SecureCRT等SSH工具,在Git Bash里执行

docker-machine ip default

可以看到,docker machine的IP是192.168.99.100,用SSH工具登录它,用户名是docker,密码是tcuser

下一讲,我会跟大家一起探索利用Docker来搭建RStudio Server环境。

Docker学习资料

数据科学家Docker历险记(1):windows下环境搭建的更多相关文章

  1. Redis的简单介绍及在Windows下环境搭建

    简单介绍 1,Redis是什么 最直接的还是看官方的定义吧. Redis is an open source (BSD licensed), in-memory data structure stor ...

  2. redis cluster以及master-slave在windows下环境搭建

    一.redis cluster环境搭建: 1.了解Redis Cluster原理: 详细了解可参考:http://doc.redisfans.com/topic/cluster-tutorial.ht ...

  3. Nginx系列~概念与windows下环境搭建

    概述 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sys ...

  4. Android Studio JNI/NDK 编程(二) Windows 下环境搭建 demo 开发

    环境 windows 8  (注:其实 Linux 开发可能更方便) Android Studio 2.1; 一 . 下载 安装android-ndk开发包 地址:链接:http://pan.baid ...

  5. Elasticsearch、Kibana Windows下环境搭建

    Elasticsearch 簡介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是 ...

  6. pixhawk原生固件在Windows下环境搭建笔记

    首先参考了以下几篇博客 博客1:https://zhuanlan.zhihu.com/p/25198079 博客2:http://blog.csdn.net/oqqenvy12/article/det ...

  7. Google Web Toolkit(GWT) 在windows下环境搭建

    1.什么是GWT? Google Web Toolkit(简称GWT,读作/ˈɡwɪt/),是一个前端使用JavaScript,后端使用Java的AJAX framework,以Apache许可证2. ...

  8. Egret入门(二)--windows下环境搭建

    准备材料 安装Node.js TypeScript编辑器 HTTP服务器(可选) Chorme(可选) Egret 安装Node.js 打开www.nodejs.org 下载安装(全部next,全默认 ...

  9. Windows下快速搭建安卓开发环境android-studio

    Windows下快速搭建安卓开发环境android-studio 发布时间:2018-01-18 来源:网络 上传者:用户 关键字: 安卓 搭建 Android Windows 快速 环境 Studi ...

随机推荐

  1. php简单浏览目录内容

    <?php $dir = dirname(__FILE__); $open_dir = opendir($dir); echo "<table border=1 borderCo ...

  2. Html学习笔记3

    1表格的标题和表头: <table> <caption>成绩单</caption> <tr> <th>姓名</th> <t ...

  3. javascript:Array.prototype.slice.call(arguments)

    我们知道,Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组,除了IE下的节点集合(因为ie下的dom对象是以com对象的形式实现的,js ...

  4. DirectInfo.GetFiles返回数组的默认排序

    NTFS和CDFS下,是按照字母顺序,而FAT下,按照文件创建时间顺序 using System; using System.Collections; using System.IO; namespa ...

  5. C#编程(二十八)----------泛型类的功能

    泛型类的功能 在创建泛型类时,还需要一些其他的C#关键字.例如,不能把null赋予泛型类型.此时,可以使用default关键字.如果泛型类型不需要object类的功能,但需要调用泛型类上的某些特定方法 ...

  6. 多线程UI

    遇到过要在工作线程中去更新UI以让用户知道进度,而在多线程中直接调用UI控件操作是错误的做法. 最后解决方法是将操作UI的代码封装,通过Invoke / BeginInvoke 去委托调用. priv ...

  7. ios开发经常使用RGB色值

    iOS中RGB经常使用的色值,同一时候可将对颜色的设置定义成宏,方便开发应用,如: // RGB颜色转换(16进制->10进制) #define UIColorFromRGB(rgbValue) ...

  8. Linux进程ID号--Linux进程的管理与调度(三)

    转自:http://blog.csdn.net/gatieme/article/category/6225543 日期 内核版本 架构 作者 GitHub CSDN 2016-05-12 Linux- ...

  9. 一个exception

    今天调错,发生了一个错误:java.lang.IllegalStateException: ApplicationEventMulticaster not initialized [closed] 后 ...

  10. 每天一个linux命令-lsof -i :port命令

    使用lsof -i :port就能看见所指定端口运行的程序,同时还有当前连接. losf -i:port | wc -l,统计端口连接数