考虑将Docker引入您的数据科学工作流程

作为数据科学家的一个重要问题是正确配置数据科学环境。有时这意味着安装了很多软件包,等待软件包编译,处理模糊的错误,设置一切正常工作......大多数时候,这是一个痛苦。但是,正确配置环境对于重现分析并与他人共享工作是必要的。

出于这些原因,我在我的数据科学工作流程中介绍了Docker。

什么是Docker?

Docker是一种简化软件工程师安装过程的工具。为了以一种非常简单的方式解释(对不起,Docker大师,对于这个定义),Docker创建了一个超轻量级虚拟机,可以在几毫秒内运行,并包含以正确方式运行环境所需的全部内容。

如果你想了解更多, 这是Docker官方网站

这篇文章的目标是创建一个运行非常简单的Jupyter笔记本的环境。

首先,我们需要为正确的平台安装Docker。

现在,我们可以开始创建我们的环境。真的,我们可以为此提供一个即用型容器。在Docker Hub上,有很多可以使用的图像。例如:

  • dataquestio / python3 - 起动机
  • dataquestio / python2 - 起动机

但我的目标是从头开始创建自己的环境!

打开您喜欢的文本编辑器并开始创建Dockerfile。Dockerfile是一个描述容器构建方式的文件:

# base image
FROM python:3.6
# updating repository
RUN apt-get update
# copying requirements.txt file
COPY requirements.txt requirements.txt
# pip install
RUN pip install --no-cache -r requirements.txt
# exposing port 8888
EXPOSE 8888
# Running jupyter notebook
# --NotebookApp.token='mynotebook' is the passsword
CMD ["jupyter","notebook","--no-browser","--ip=0.0.0.0","--allow-root","--NotebookApp.token='mynotebook'"]
  1. 从一个基于Debian的简单python3映像开始。
  2. 然后更新最新版本的所有包。
  3. 复制requirements.txt,它描述了我们的数据科学环境所需的所有Python包。
  4. 运行所有包的安装。
  5. 公开Jupyter的端口。
  6. 运行该命令以启动Jupyter笔记本。

现在,是时候编写requirements.txt了。此文件描述了我们需要的所有Python包,pip将使用它来正确安装所有包。

bleach==1.5.0
certifi==2016.2.28
cycler==0.10.0
decorator==4.1.2
entrypoints==0.2.3
html5lib==0.9999999
ipykernel==4.6.1
ipython==6.2.1
ipython-genutils==0.2.0
ipywidgets==7.0.3
jedi==0.11.0
Jinja2==2.9.6
jsonschema==2.6.0
jupyter==1.0.0
jupyter-client==5.1.0
jupyter-console==5.2.0
jupyter-core==4.3.0
Markdown==2.6.9
MarkupSafe==1.0
matplotlib==2.1.0
mistune==0.7.4
nbconvert==5.3.1
nbformat==4.4.0
networkx==2.0
notebook==5.2.0
numpy==1.13.3
olefile==0.44
opencv-python==3.3.0.10
pandocfilters==1.4.2
parso==0.1.0
pexpect==4.2.1
pickleshare==0.7.4
Pillow==4.3.0
prompt-toolkit==1.0.15
protobuf==3.4.0
ptyprocess==0.5.2
Pygments==2.2.0
pyparsing==2.2.0
python-dateutil==2.6.1
pytz==2017.2
PyWavelets==0.5.2
pyzmq==16.0.2
qtconsole==4.3.1
scikit-image==0.13.1
scikit-learn==0.19.1
scipy==0.19.1
simplegeneric==0.8.1
six==1.11.0
terminado==0.6
testpath==0.3.1
tornado==4.5.2
traitlets==4.3.2
wcwidth==0.1.7
Werkzeug==0.12.2
widgetsnbextension==3.0.6
pandas>=0.22.0

好的,我们已经准备好编译我们的容器了。命令是:

docker build -t your_container_name。

使用-t选项,我们可以标记容器; 例如:

docker build -t mydatascience_env。

构建过程完成后,我们可以运行我们的容器:

docker run -p 8887:8888 -v /path_your_machine/notebook_folder/:/Documents -it datascience_env

使用-v选项,/ path_your_machine / notebook_folder /将被挂载到/ Documents路径的Docker容器中。

这对于将工作和环境与笔记本分开保存很有用。我更喜欢这种方式来组织我的工作,而不是创建一个包含环境和笔记本的Docker容器。

当容器启动时,我们可以打开Jupyter Web界面:

http://127.0.0.1:8007

当我们要求令牌时,我们会将“mynotebook”或您设置的任何内容放入您的dockerfile中,就是这样!现在我们可以进入新的数据科学环境。

点击我们拥有所有笔记本的文件!

注意:当容器停止时,将保存每个更改。

为了测试这个环境,我使用了在sk-learn网站上创建的DBSCAN的例子。这是链接

当我们的工作完成后,我们可以使用以下命令停止容器:

docker  stop datascience_env

我认为Docker是每个开发人员和每个数据科学家部署和共享工作的非常重要的工具。从我的角度来看,引入的最重要的创新Docker是一种描述如何正确地重建我的代码可以运行的环境的方法(使用Dockerfile)。通过这种方式,我每次都可以重现我在开发过程中使用的确切环境,并且可以与每个人共享构建的容器。

原文标题《Consider Introducing Docker to Your Data Science Workflow》

作者:Claudio Masolo

译者:February

不代表云加社区观点,更多详情请查看原文链接

原文链接:https://dzone.com/articles/consider-to-introduce-docker-to-your-data-science

原文作者:Claudio Masolo

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算爱好者

简单介绍Docker的架构特性与局限

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是...

2636
来自专栏Rainbond开源「容器云平台」

如何正确理解Docker生态

1463
来自专栏BestSDK

Kubernetes发布1.10版本:开发者可自己定义API

Container存储介面(Container Storage Interface,CSI)能让使用者像安装Pod一样,轻松安装Volume插件,而这使得第三方...

42911
来自专栏云计算与大数据

阅读:美团容器平台架构及容器技术实践

原文地址:https://note.youdao.com/share/?id=08d7c57b04dda159c53155b00cbbe5cb&type=not...

18011
来自专栏程序员同行者

docker学习笔记

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。简言之,docker就是用go开发的一种轻量级虚拟化容器。

1102
来自专栏CSDN技术头条

Docker将会在Windows和MAC平台本地化

对Linux用户来说,Docker一直是一个本地化的应用程序,但是对于Windows和MAC来说并不是。好消息是,Docker马上将要发布两个新的测试版本:Do...

2447
来自专栏安恒信息

漏洞预警 | FFmpeg组件处理播放列表文件可能导致信息泄露

FFmpeg是一个免费的可以执行音讯和视讯多种格式的录影、转档、串流功能的软件,广泛的应用于各大视频网站上。 FFmpeg处理HLS播放列表文件的方式存在安全漏...

2937
来自专栏西安-晁州

Docker学习之基本概念

Docker学习之基本概念 作为一个后端noder,不了解docker有点说不过去,这节开始,学习一些docker层面的东西。 什么是docker Docker...

33512
来自专栏搜云库

Docker-17.06.2 环境搭建

Docker 简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在...

2077
来自专栏谭伟华的专栏

使用 Docker 部署前端自动化测试的尝试(一)

自动化测试是一个老生常谈的话题,往往应为界面变化太快,测试脚本更新跟不上需求变化而作罢。所以打算引入能自动生成测试脚本的 uirecorder 这一开源工具。并...

1.1K1

扫码关注云+社区

领取腾讯云代金券