作为数据科学家的一个重要问题是正确配置数据科学环境。有时这意味着安装了很多软件包,等待软件包编译,处理模糊的错误,设置一切正常工作......大多数时候,这是一个痛苦。但是,正确配置环境对于重现分析并与他人共享工作是必要的。
出于这些原因,我在我的数据科学工作流程中介绍了Docker。
Docker是一种简化软件工程师安装过程的工具。为了以一种非常简单的方式解释(对不起,Docker大师,对于这个定义),Docker创建了一个超轻量级虚拟机,可以在几毫秒内运行,并包含以正确方式运行环境所需的全部内容。
如果你想了解更多, 这是Docker官方网站。
这篇文章的目标是创建一个运行非常简单的Jupyter笔记本的环境。
首先,我们需要为正确的平台安装Docker。
现在,我们可以开始创建我们的环境。真的,我们可以为此提供一个即用型容器。在Docker Hub上,有很多可以使用的图像。例如:
但我的目标是从头开始创建自己的环境!
打开您喜欢的文本编辑器并开始创建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'"]
现在,是时候编写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》
译者:February
不代表云加社区观点,更多详情请查看原文链接
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。