摘要: Docker容器那么强大?可以应用道数据科学领域?看来学习一下!
Docker容器是通过虚拟化开发和部署应用程序的一种越来越流行的方式,它对数据科学家有用吗?当然,本指南就会向你介绍它的作用,并手把手教你快速入门。
介绍
Docker是一种越来越流行的,使在容器中开发、部署和运行应用程序变得更容易的工具。因为它们允许开发人员将应用程序与它所需的所有部分(如库和其他依赖项)打包,并将其作为一个包打包,这样就可以帮助开发人员更简单的使用。你肯定会有这样的疑问:这是软件工程师常用的工具,但是数据科学家如何使用这个强大的工具呢?鉴于你有类似的疑问,我们就先来讨论一下想在数据科学中使用Docker的一些原因。
为什么选择Docker?
1、再现性
Docker对于数据科学家或者是软件工程师最大的吸引力就是它的可再现性。除了能够共享Docker镜像本身之外,理论上还可以通过共享python脚本与他人共享Docker内部的数据。简单来说,你的同时可以运行这个脚本来查看Docker镜像中的内容。
2、时间成本
Docker不必安装单独的软件包,因为它们都被包含在Docker镜像本身中,所以很节省时间。此外,Docker容器的启动时间约为50ms,比运行传统的虚拟机快得多。
3、灵活性
它是一个非常灵活的工具,因为在Docker库中可以快速创建并运行任何Docker映像的软件。
4、自带测试环境
Docker在将软件环境托管到活动服务器之前对其进行测试是非常有用,可以将Docker容器配置为与服务器环境相同,这可以让测试变得更简单。
5、分布式
数据科学家可以花费一些时间准备他们的机器来适应一个特定的框架。例如,Docker提供了30多种独特的方法供用户设置Caffe环境,Docker提供了一个一致的平台来共享这些工具,减少了搜索操作系统特定安装程序和库所花的时间。
6、可访问性
Docker生态系统—Docker compose和Docker machine —可以让任何人轻松的访问它。这意味着一些不熟悉代码的公司成员仍然可以运行它。甚至你可以向销售团队成员,或更高的管理人员展示你正在构建的新数据科学应用程序!
开始
我们已经介绍了使用Docker的好处,那么我们就可以开始学习Docker。首先,转到Docker站点安装软件版本。为了确保正确安装,打开命令行并输入docker版本。应该显示如下:
花费一些时间,现在我们已经安装了Docker,接下来研究一个相对直接的,常见的例子,执行下面的代码:
对于Docker的新手来说,直接上手来进行实战这有点望而却步,为了方便大家理解,将这个例子分解一下:
docker run:这个命令的作用是查找镜像(在本例中是jupyter notebook),加载一个容器,然后在该容器中运行一个命令。
-p 8000:8000:' p '关键字代表端口,因此命令的这一部分是打开主机和容器之间的端口,格式为-p<主机端口>:<容器端口>。
jupyter/notebook:要加载的镜像,对于Jupyter notebook,你可以在Docker官方库中浏览上千种最流行的软件工具。运行该命令并导航到http://localhost:8000/之后,会看到以下内容:
这个过程应该很简单,当你想要下载Python运行库和Jupyter包时,通过Docker运行它是非常有效的。现在已经开始运行了,接下来开始在主机和容器之间共享Jupyter notebook。首先,我们需要在主机上创建一个目录来存储notebook,我们将其命名为/jupyter-notebook。在运行Docker命令时共享目录操作和端口的工作方式相似,我们需要添加以下内容:
因此,现在对<主机端口>:<容器端口>进行映射:(例如主机上的~/jupyter-notebook,容器上的/home/joyvan)。来自Jupyter Docker文档的容器目录将作为这类映像的指定工作目录。结合这一点和我们之前运行的内容,完整的命令应该是这样的:
现在简单地加载本地主机服务器,创建一个新的notebook,并将它重命名为“Example Notebook”。最后,检查本地主机~/jupyter-notebook目录,可以看到:Example Notebook.ipynb。
Dockerfile
Dockerfile是一个文本文档,其中包含可以用来自动创建Docker映像的命令,这是保存Docker命令并通过Docker build /path/to/dockerfile命令连续执行它们的有效方法。上面提到的Jupyter notebook示例的Dockerfile如下所示:
现在对每个部分进行讲解:
FROM Ubuntu : latest
这指的是对于新映像,Docker应该以什么为基础,在本例中是ubuntu。Latest:简单调用最新的版本。如果要测试旧版本,需要输入版本号。
RUN apt-get update && apt-get install -y python3 \ python3-pip
这一行确保系统是最新的,然后安装python3和pip3。
RUN pip3 install jupyter
然后安装Jupyter。
WORKDIR /home/jupyter
COPY /src/jupyter ./
在Docker映像容器上设置工作目录,然后从本地主机复制需要的文件。
EXPOSE 8000
与-p以前的工作方式类似,将端口8000暴露给了主机。
ENTRYPOINT ["jupyter", "notebook", "--ip=*"]
开始 Jupyter notebook。
Dockerfile非常有用,因为它允许你团队内的其他团队成员轻松地运行Docker容器。
结论
就像你看到的那样,我们成功地为Docker提供了一个工作用例,并且运行得非常快。我们仅仅触及了你所能做的表面,但是Docker真的算是一个神奇的库,它存在无限的可能性。成为Docker的专家不仅可以帮助你进行本地开发,而且可以在与数据科学家团队合作时节省大量的时间、金钱和精力。
本文作者:【方向】
阅读原文
本文为云栖社区原创内容,未经允许不得转载。