推荐:使用NSDT场景编辑器快速搭建3D应用场景
为什么选择 Docker for Data Science?
作为一名数据科学家,拥有一个标准化的便携式分析和建模环境至关重要。Docker 提供了一种创建可重用和可共享的数据科学环境的绝佳方法。在本文中,我们将逐步介绍使用 Docker 设置基本数据科学环境的步骤。
为什么我们会考虑使用 Docker?Docker 允许数据科学家为他们的工作创建隔离且可重现的环境。使用 Docker 的一些主要优势包括:
- 一致性 - 可以在不同的计算机上复制相同的环境。不再有“它适用于我的机器”的问题。
- 可移植性 - Docker 环境可以轻松地跨多个平台共享和部署。
- 隔离 - 容器隔离不同项目所需的依赖项和库。不再有冲突!
- 可扩展性 - 通过启动更多容器,可以轻松扩展 Docker 内部构建的应用程序。
- 协作 - Docker 通过允许团队共享开发环境来实现协作。
步骤 1:创建 Dockerfile
任何 Docker 环境的起点都是 Dockerfile。此文本文件包含有关生成 Docker 映像的说明。
让我们为 Python 数据科学环境创建一个基本的 Dockerfile,并将其保存为不带扩展名的“Dockerfile”。
# Use official Python image FROM python:3.9-slim-buster # Set environment variable ENV PYTHONUNBUFFERED 1 # Install Python libraries RUN pip install numpy pandas matplotlib scikit-learn jupyter # Run Jupyter by default CMD ["jupyter", "lab", "--ip='0.0.0.0'", "--allow-root"]
这个Dockerfile使用官方的Python镜像,并在其上安装了一些流行的数据科学库。最后一行定义了在启动容器时运行 Jupyter Lab 的默认命令。
步骤 2:构建 Docker 镜像
现在我们可以使用以下命令构建映像:docker build
docker build -t ds-python .
这将创建一个基于我们的 Dockerfile 标记的图像。ds-python
生成映像可能需要几分钟时间,因为所有依赖项都已安装。完成后,我们可以使用 .docker images
步骤 3:运行容器
构建映像后,我们现在可以启动一个容器:
docker run -p 8888:8888 ds-python
这将启动 Jupyter Lab 实例,并将主机上的端口 8888 映射到容器中的 8888。
现在,我们可以在浏览器中导航到 Jupyter 并开始运行笔记本!localhost:8888
步骤 4:共享和部署映像
Docker 的一个关键优势是能够跨环境共享和部署映像。
要将图像保存到 tar 存档,请运行:
docker save -o ds-python.tar ds-python
然后,可以通过以下方式将此压缩包加载到安装了Docker的任何其他系统上:
docker load -i ds-python.tar
我们还可以将映像推送到 Docker 注册表(如 Docker Hub),以便在组织内公开或私下与其他人共享。
若要将映像推送到 Docker 中心,请执行以下操作:
- 创建一个 Docker 中心帐户(如果还没有)
- 使用 从命令行登录到 Docker Hub
docker login
- 使用您的 Docker Hub 用户名标记映像:
docker tag ds-python yourusername/ds-python
- 推送镜像:
docker push yourusername/ds-python
映像现在托管在 Docker Hub 上。其他用户可以通过运行以下命令拉取映像:ds-python
docker pull yourusername/ds-python
对于私有仓库,您可以创建组织并添加用户。这允许您在团队中安全地共享 Docker 映像。
步骤 5:加载和运行映像
要在另一个系统上加载并运行 Docker 映像,请执行以下操作:
- 将文件复制到新系统
ds-python.tar
- 使用 加载图像
docker load -i ds-python.tar
- 使用 启动容器
docker run -p 8888:8888 ds-python
- 访问 Jupyter 实验室
localhost:8888
就是这样!ds-python 映像现在可以在新系统上使用了。
结语
这为您提供了使用 Docker 设置可重现的数据科学环境的快速入门知识。需要考虑的一些其他最佳做法:
- 使用较小的基础映像(如 Python slim)来优化映像大小
- 利用 Docker 卷实现数据持久性和共享
- 遵循安全原则,例如避免以根用户身份运行容器
- 使用 Docker Compose 定义和运行多容器应用程序
我希望这个介绍对您有所帮助。Docker为简化和扩展数据科学工作流程提供了大量可能性。
由3D建模学习工作室 整理翻译,转载请注明出处!