前言
数据科学开发环境配置起来让人头疼,会碰到包版本不一致、错误信息不熟悉和编译时间漫长等问题。这很容易让人垂头丧气,也使得迈入数据科学的这第一步十分艰难。而且这也是一个完全不常见的准入门槛。
还好,过去几年中出现了能够通过搭建孤立的环境来解决这个问题的技术。本文中我们就要介绍的这种技术名叫Docker。Docker能让开发者简单、快速地搭建数据科学开发环境,并支持使用例如Jupyter notebooks等工具进行数据探索。
简介
Docker 最初 dotCloud 公司内部的一个业余项目
Docker 基于 Go 语言
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案
Docker 的基础是 Linux 容器(LXC)等技术
Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多
Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器
下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。
容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。
主要优势为:
更快速的交付和部署 - 容器成为了最小单位
更高效的虚拟化 - 内核级虚拟化
更轻松的迁移和拓展
更简单的管理
基本概念
主要是三个:
镜像(Image)
一个只读的模板,镜像可以用来创建 Docker 容器
可以简单创建或更新现有镜像,或者直接下载使用其他人的
容器(Container)
容器是从镜像创建的运行实例,在启动的时候创建一层可写层作为最上层(因为镜像是只读的)
可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序
仓库(Repository)
集中存放镜像文件的场所
最大的公开仓库是 Docker Hub
国内的公开仓库包括 Docker Pool 等
当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了
Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务
安装
官方网站提供了 Mac, Linux 和 Windows 版本的安装教程。因为我打算使用虚拟机进行安装测试,所以这里主要走 Linux 的安装教程,不过其他的应该大同小异。我的 ubuntu 版本是 14.04 LTS, trusty
新闻热点
疑难解答