動手實踐:使用Docker設置數據科學環境

每當您開始一個新的數據項目或有一個很好的數據處理想法時,可能都需要初步的概念證明來啟動。 您當然不想要,並且可能甚至沒有時間花時間來建立全新的數據環境,而無需瞭解數據本身。 在下一篇文章中,您將學習Docker如何在不浪費時間一遍又一遍的情況下幫助您設置可複製的數據環境。

動手實踐:使用Docker設置數據科學環境

什麼是Docker?為什麼要嘗試一下?

Docker是在指定環境(稱為容器)中創建,部署和運行所需應用程序的最簡單,最靈活的方法之一。 當然,你問自己什麼是容器?

非技術性的解釋:就像上圖所示,在我們的情況下,您的本地機器是一個已經在生產東西的島。 為了改善這一點,您需要其他工具,這些工具(就像Docker徽標一樣)裝在小容器中。 一旦設置好並運行它們,它們就可以使用了。

技術說明:容器是打包代碼及其所有依賴項的軟件的標準單元,因此應用程序可以從一個計算環境快速運行到另一個計算環境。 Docker容器映像是一個輕量級的,獨立的,可執行的軟件軟件包,其中包含運行應用程序所需的一切:代碼,運行時,系統工具,系統庫和設置。 其他重要術語:

· 圖片:只是容器的快照。

· Dockerfile:這是一個Yaml文件,用於構建您的映像。 在本課程的最後,您將擁有一個yaml文件模板,並將其用於您自己的容器規範。

· DockerHub:在這裡您可以推拉Docker映像並將其用於您自己的需求。 基本上,GitHub僅用於Docker。

為什麼要使用Docker?

動手實踐:使用Docker設置數據科學環境

讓我向您概述我喜歡使用Docker的主要原因:

· 對於您作為數據科學家或數據分析師而言,泊塢窗意味著您可以專注於探索,轉換和建模數據,而無需首先考慮您的數據環境所運行的系統。 通過使用準備在Docker容器中運行的數千種應用程序之一,您不必擔心分別安裝和連接它們。 Docker允許您在需要時在幾秒鐘內部署所選的工作環境。

· 假設您不是項目中唯一的工作人員,但是您的團隊成員也需要掌握代碼。 現在,一個選擇是,每個隊友都可以在具有不同體系結構,不同庫和不同版本應用程序的環境中運行代碼。 docker選項是每個成員都可以訪問相同的容器映像,並使用docker啟動該映像並準備就緒。 Docker為團隊中的每個人提供了可重複的數據環境,因此您可以立即開始進行協作。

Docker當然還有其他幾個好處,特別是如果您使用的是Enterprise版本。 絕對值得探索,不僅會使您作為數據科學家受益。

安裝和運行Docker

您可以立即安裝Docker桌面,這是您入門所需的內容:在此處訪問Docker Hub,為Mac或Windows選擇Docker版本並進行安裝。 在您的本地機器上啟動Docker之後,您就可以在頂部導航欄上看到這隻可愛的小鯨魚-做得很好。

動手實踐:使用Docker設置數據科學環境

通過單擊Docker徽標,您可以查看Docker是否正在運行。 另一種選擇是打開命令行並輸入" docker info",以便您看到正在運行的內容。 以下是一些基本的Docker命令:

  • docker login#登錄Docker註冊表
  • docker run#創建一個新容器並啟動
  • docker start #啟動一個現有的容器
  • docker stop #停止一個正在運行的容器
  • docker ps [-a] #顯示所有容器
  • docker rm #按名稱或ID刪除容器
  • docker rmi $(docker images -q)#刪除所有鏡像

您可以從一個簡單的示例開始,嘗試使用Jupyter筆記本。 您要做的就是在Docker Hub中查找映像,打開終端並運行docker。 在下面的示例中,您可以找到在localhost:8888上運行的Jupyter —簡單!

docker run -p 8888:8888 jupyter/scipy-notebook:2c80cf3537ca

動手實踐:使用Docker設置數據科學環境

雖然我們現在可以在容器中試用我們的應用程序,但它並不是高級數據科學家正在尋找的完整數據環境。 您可能想要使用更高級的工具,例如Nifi進行數據攝取和處理,Kafka進行數據流傳輸,以及使用SQL或NonSQL數據庫在兩者之間存儲一些表。 我們還能使用Docker嗎? 答案:是的,當然可以-Docker在這裡為您管理所有工作。

Docker Compose:將它們組合在一起

動手實踐:使用Docker設置數據科學環境

要設置所需的數據環境,您可能希望在我們的本地計算機上運行多個容器。 這就是為什麼我們使用Docker Compose。 Compose是用於定義和運行多容器Docker應用程序的工具。 雖然單獨連接每個容器可能很耗時,但docker compose允許多個容器的集合以非常直接的方式通過其自己的網絡進行交互。 使用compose時,您首先使用yaml文件配置應用程序的服務,然後使用單個命令(docker compose up)來創建並啟動先前定義的所有服務。*

在下面的內容中,您可以找到入門的主要步驟:

  • · 使用Dockerfile定義您的應用環境,以便輕鬆複製
  • · 在docker-compose.yml中指定構成數據環境的所有服務
  • · 在保存yaml文件的文件夾中打開終端,然後運行docker-compose up

docker-compose.yml可能類似於以下內容。 並且儘管您可以肯定使用以下內容作為模板,但絕對應該為自己配置一次:

<code>

version:

'3'

services:

zookeeper:

hostname:

zookeeper

container_name:

zookeeper_dataenv

image:

'bitnami/zookeeper:latest'

environment:

-

ALLOW_ANONYMOUS_LOGIN=yes

nifi:

image:

mkobit/nifi

container_name:

nifi_dataenv

ports:

-

8080

:8080

-

8081

:8081

environment:

-

NIFI_WEB_HTTP_PORT=8080

-

NIFI_ZK_CONNECT_STRING=zookeeper:2181

minimal-jupyter-notebook:

image:

jupyter/minimal-notebook:latest

ports:

-

8888

:8888

mongodb:

image:

mongo:latest

container_name:

mongodb_dataenv

environment:

-

MONGO_DATA_DIR=/data/db

-

MONGO_LOG_DIR=/dev/null

ports:

-

27017

:27017

grafana:

image:

bitnami/grafana:latest

container_name:

grafana_dataenv

ports:

-

3000

:3000

db:

image:

'postgres:9.6.3-alpine'

container_name:

psql_dataenv

ports:

-

5432

:5432

environment:

POSTGRES_DB:

psql_data_environment

POSTGRES_USER:

psql_user

POSTGRES_PASSWORD:

psql

PGDATA:

/opt/psql_data

restart:

"no"

/<code>

而已! 您剛剛瞭解瞭如何在幾秒鐘內隨時隨地部署自己的數據環境的基礎知識,這意味著浪費更少的時間進行設置,而將更多的時間用於生產。

請注意,還有許多其他容器軟件選項。 我只是喜歡與Docker合作,並想與您分享我的經驗

(本文翻譯自flo.tausend的文章《Hands-on: Setup Your Data Science Environment With Docker》,參考:https://towardsdatascience.com/hands-on-setup-your-data-environment-with-docker-dca629607148)


分享到:


相關文章: