Tento článek bude pokračovat v sérii článků souvisejících s Dockerem a ukáže, jak vytvořit kontejner Docker založený na Ubuntu 20.04 LTS pro strojové učení. Nainstalujeme do prostředí:Python 3, Jupyter, Keras, Tensorflow, TensorBoard, Pandas, Sklearn, Matplotlib, Seaborn, pyyaml, h5py. Připravte si své osobní prostředí ML za 3 minuty, kromě doby vytváření obrazu Docker!
Aktualizace 2020
Aktualizoval jsem kontejner na základ Ubuntu 20.04 LTS a urychlil jsem proces sestavování Dockeru. Nyní nevytváříme OpenCV ze zdroje, ale instalujeme jej z apt
.
Nastavení prostředí je běžnou otázkou, když se začnete učit strojové učení (ML). V tomto článku vám ukážu, jak vytvořit svůj vlastní kontejner Docker, včetně následujících frameworků pro pohodlný začátek:
- Python 3
- Jupyter
- Keras
- Tensorflow
- TensorBoard
- Pandy
- Sklearn
- Matplotlib
- Seaborn
- pyyaml
- h5py
Toto je TOP 10 nejrozšířenějších frameworků Python pro Data Science a většinu z nich najdete v každém článku s návody na internetu. V příštím článku (Jak vytvořit kontejner Python Data Science Docker založený na Anacondě) ukážu, jak vytvořit stejný obrázek nad distribucí Anaconda.
Požadavky
Vše, co potřebujete, je mít v systému nainstalovaný Docker a textový editor.
Struktura projektu
Zde je konečná struktura projektu:
$ tree -a python_data_science_container
$ python_data_science_container
├── Dockerfile
├── conf
│ └── .jupyter
│ └── jupyter_notebook_config.py
└── run_jupyter.sh
2 directories, 3 files
Dockerfile
Vše, co musíte udělat, je vytvořit složku projektu a název souboru Dockerfile
uvnitř:
$ mkdir python_data_science_container
$ cd python_data_science_container
$ vim Dockerfile
Poté vložte následující obsah do Dockerfile
:
FROM ubuntu:20.04
MAINTAINER "Andrei Maksimov"
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y \
libopencv-dev \
python3-pip \
python3-opencv && \
rm -rf /var/lib/apt/lists/*
RUN pip3 install tensorflow && \
pip3 install numpy \
pandas \
sklearn \
matplotlib \
seaborn \
jupyter \
pyyaml \
h5py && \
pip3 install keras --no-deps && \
pip3 install opencv-python && \
pip3 install imutils
RUN ["mkdir", "notebooks"]
COPY conf/.jupyter /root/.jupyter
COPY run_jupyter.sh /
# Jupyter and Tensorboard ports
EXPOSE 8888 6006
# Store notebooks in this mounted directory
VOLUME /notebooks
CMD ["/run_jupyter.sh"]
Na GitHubu můžete vždy najít aktuální příklady mého vlastního souboru Dockerfile, který používám k vytvoření svého osobního prostředí kontejneru Data Science (je také k dispozici zdarma na Docker Hub).
Konfigurace Jupyter
Jakmile deklarujeme náš kontejner a jeho komponenty, je čas připravit konfiguraci pro Jupyter. Vytvořte soubor jupyter_notebook_config.py s následujícím obsahem:
# get the config object
c = get_config()
# in-line figure when using Matplotlib
c.IPKernelApp.pylab = 'inline'
c.NotebookApp.ip = '*'
c.NotebookApp.allow_remote_access = True
# do not open a browser window by default when using notebooks
c.NotebookApp.open_browser = False
# No token. Always use jupyter over ssh tunnel
c.NotebookApp.token = ''
c.NotebookApp.notebook_dir = '/notebooks'
# Allow to run Jupyter from root user inside Docker container
c.NotebookApp.allow_root = True
Jak můžete uhodnout z Dockerfile
, vložíme jej do /root/.jupyter/
složky během procesu sestavení kontejneru.
Vytváření spouštěcího skriptu
Poslední věc, kterou musíme udělat, je vytvořit skript run_jupyter.sh
, která spustí server Jupiter uvnitř našeho kontejneru během procesu spouštění. Vytvořte soubor s následujícím obsahem:
#!/usr/bin/env bash
jupyter notebook "$@"
A udělejte tento soubor spustitelným:
$ chmod +x run_jupyter.sh
Tento soubor se ve výchozím nastavení spustí ve vašem kontejneru pokaždé, když spustíte nový.
Vytváření obrázku kontejneru
Poslední fáze – vytvoření kontejneru. Stačí spustit následující příkaz k vytvoření kontejneru Docker z adresáře projektu:
$ docker build -f Dockerfile -t python_data_science_container .
Docker nainstaluje všechny potřebné knihovny a rámce do obrazu kontejneru během procesu sestavování a zpřístupní jej k použití.
Spuštěný kontejner
Nyní máte funkční kontejner a je čas jej spustit. Vytvořte složku ve složce vašeho projektu, kam budeme ukládat všechny naše notebooky Jupyter se zdrojovým kódem našich projektů:
$ mkdir notebooks
A spusťte kontejner pomocí následujícího příkazu:
$ docker run -it -p 8888:8888 \
-p 6006:6006 \
-d \
-v $(pwd)/notebooks:/notebooks \
python_data_science_container
Spustí kontejner a zobrazí Jupyter na portu 8888 a Tensorflow Dashboard na portu 6006 na vašem místním počítači nebo serveru, v závislosti na tom, kde jste tento příkaz provedli.
Uvědomte si prosím, že tento kontejner byl vytvořen pouze pro účely místního rozvoje. jám odstranilo ověřování na Jupyteru v tomto kontejneru, takže se každý může připojit k portu 8888 nebo 6006 a spustit Python kód příčiny.
Pokud jen hledáte fungující řešení
Pokud si nechcete vytvářet a udržovat svůj vlastní kontejner a výše uvedené komponenty vám budou stačit, použijte prosím můj osobní kontejner, který obvykle aktualizuji:
$ docker run -it -p 8888:8888 \
-p 6006:6006 \
-d \
-v $(pwd)/notebooks:/notebooks \
amaksimov/python_data_science
Doufám, že vám tento článek bude užitečný. Pokud se vám článek líbí, zveřejněte jej znovu pomocí jakékoli sociální sítě, kterou chcete. Uvidíme se brzy!