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 的专家不仅可以帮助你进行本地开发, 而且可以在与数据科学家团队合作时节省大量的时间, 金钱和精力.
以上为译文.
来源: https://yq.aliyun.com/articles/637292