每当您开始一个新的数据项目或有一个很棒的数据处理想法时,您可能需要一个初步的概念证明才能开始。您当然不想,甚至可能没有时间在不了解数据本身的情况下设置一个全新的数据环境。在下一篇文章中,您将了解Docker如何帮助您建立可重现的数据环境,而无需一遍又一遍地浪费时间。什么是码头工人?为什么要尝试呢?Docker是在指定环境(称为容器)中创建、部署和运行所需应用程序的最简单、最灵活的方法之一。当然,你问自己什么是容器?非技术解释:如上图所示,在我们的例子中,您的本地机器是一个已经在生产东西的岛屿。为了改善这一点,您需要其他工具,这些工具(如Docker徽标)装在小容器中。一旦设置并运行,它们就可以使用了。技术说明:容器是一个标准的软件单元,它将代码及其所有依赖项打包在一起,以便应用程序可以从一个计算环境快速运行到另一个计算环境。Docker容器镜像是一个轻量级、独立的、可执行的软件包,其中包含运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。其他重要术语:图像:只是容器的快照。Dockerfile:这是一个构建镜像的Yaml文件。在本课程结束时,您将拥有一个模板yaml文件,可用于您自己的容器规范。DockerHub:在这里你可以推送和拉取Docker镜像,并根据你自己的需要使用它们。基本上,GitHub仅适用于Docker。为什么要使用Docker?让我概述一下我喜欢使用Docker的主要原因:对于作为数据科学家或数据分析师的你来说,Docker意味着你可以专注于探索、转换和建模你的数据,而不必首先考虑你的数据环境运行的系统.通过使用准备在Docker容器中运行的数千个应用程序之一,您不必担心单独安装和连接它们。Docker允许您在需要时在几秒钟内部署您选择的工作环境。假设您不是项目的唯一工作者,但您的团队成员也需要掌握代码。现在的一个选择是,每个队友都可以在具有不同架构、不同库和不同版本应用程序的环境中运行代码。docker选项是每个成员都可以访问相同的容器映像,并使用docker启动该映像并准备就绪。Docker为您团队中的每个人提供了一个可重复的数据环境,因此您可以立即开始协作。Docker当然还有其他一些好处,特别是如果您使用的是企业版。绝对值得探索,不仅会让您作为数据科学家受益。安装和运行Docker您可以立即安装DockerDesktop,这是您入门所需要的:在此处访问DockerHub,选择适用于Mac或Windows的Docker版本,然后进行安装。在本地机器上启动Docker后,您可以在顶部导航栏上看到这只可爱的小鲸鱼——做得好。您可以通过单击Docker徽标来查看Docker是否正在运行。另一种选择是打开命令行并键入“dockerinfo”,以便您可以查看正在运行的内容。下面是一些基本的Docker命令:dockerlogin#登录到Dockerregistrydockerrun#Createanewcontainerandstartdockerstart#Startanexistingcontainerdockerstop#Stoparunningcontainerdockerps[-a]#DisplayAllcontainersdockerrm#按名称或ID删除容器dockerrmi$(dockerimages-q)#Removeallimages你可以从一个简单的例子开始,试试Jupyternotebook。您所要做的就是在DockerHub中找到映像,打开终端并运行docker。在下面的示例中,您可以找到在localhost:8888上运行的Jupyter——简单!dockerrun-p8888:8888jupyter/scipy-notebook:2c80cf3537ca虽然我们现在可以在容器中试用我们的应用程序,但它并不是高级数据科学家正在寻找的完整数据环境。您可能希望使用更高级的工具,如Nifi进行数据摄取和处理,Kafka进行数据流处理,以及SQL或NonSQL数据库在两者之间存储一些表。我们还能使用Docker吗?答:是的,当然-Docker在这里为您管理所有工作。DockerCompose:将它们放在一起要设置所需的数据环境,您可能希望在我们的本地机器上运行多个容器。这就是我们使用DockerCompose的原因。Compose是一个用于定义和运行多容器Docker应用程序的工具。虽然单独连接每个容器可能很耗时,但dockercompose允许多个容器的集合通过其自己的网络以非常直接的方式进行交互。使用compose时,首先使用yaml文件配置应用程序的服务,然后使用单个命令(dockercomposeup)创建并启动所有先前定义的服务。*在下文中,您可以找到开始的主要步骤:使用Dockerfile定义您的应用程序环境以便于复制在docker-compose.yml中指定构成数据环境的所有服务在您所在的文件夹中打开一个终端保存yaml文件,然后运行??docker-composeupdocker-compose.yml可能如下所示。虽然您绝对可以使用以下内容作为模板,但您绝对应该自己配置一次:version:'3'services:zookeeper:hostname:zookeepercontainer_name:zookeeper_dataenvimage:'bitnami/zookeeper:latest'environment:-ALLOW_ANONYMOUS_LOGIN=yesnifi:图片:mkobit/nificontainer_name:nifi_dataenvports:-8080:8080-8081:8081environment:-NIFI_WEB_HTTP_PORT=8080-NIFI_ZK_CONNECT_STRING=zookeeper:2181minimal-jupyter-notebook:image:jupyter/minimal-notebook:latestports:-8888:888data_88environment:-MONGO_DATA_DIR=/data/db-MONGO_LOG_DIR=/dev/nullports:-27017:27017grafana:image:bitnami/grafana:latestcontainer_name:grafana_dataenvports:-3000:3000db:image:'postgres:9.6.3-alpine_name'容器:psql_dataenvports:-5432:5432environment:POSTGRES_DB:psql_data_environmentPOSTGRES_USER:psql_userPOSTGRES_PASSWORD:psqlPGDATA:/opt/psql_datarestart:"no"就是这样!花更少的时间设置和更多的时间生产。请注意,还有许多其他容器软件选项。我只是喜欢使用Docker并想与您分享我的经验
