[PYTHON] (Remarque) Remarques sur la création d'un environnement Tensor Flow avec Docker Compose (un seul conteneur)

introduction

Pour mon mémorandum: sueur: Ceci est un mémo lors de la création d'un environnement Python + TensorFlow + Keras avec Docker Compose (un seul conteneur). Veuillez noter que c'est un article que j'ai fait pour moi-même, il peut donc être difficile à comprendre, les informations et la technologie peuvent être obsolètes: bow_tone1:

Matériel de référence

Je l'ai utilisé comme référence: bow_tone1:

Environnement * Je pense que cela fonctionnera même si ce n'est pas la version suivante, mais veuillez noter qu'elle est ancienne: no_good_tone2: </ sup>

Version Ubuntu

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.4 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

Version Docker

$ docker version
Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b7f0
 Built:             Wed Mar 11 01:25:46 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b7f0
  Built:            Wed Mar 11 01:24:19 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

Docker-Compose version

$ docker-compose version
docker-compose version 1.25.5, build unknown
docker-py version: 4.2.0
CPython version: 3.7.4
OpenSSL version: OpenSSL 1.1.1c  28 May 2019

* Pour une raison quelconque, build inconnu. J'ai abandonné parce que cela semblait prendre du temps: sanglot: </ sup>

Structure du répertoire

Je le fais correctement pour les tests. .. ..

dk_ai_dir
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── src1

Contenu des fichiers requis

docker-compose.yml


version: '3'
services:
  dk_ai:
    restart: always
    build: .
    container_name: 'dk_ai'
    tty: true
    volumes:
      #Répertoire à monter
      - .:/dk_ai_dir
    ports:
      #Port côté hôte: port côté conteneur
      - 7000:7000

Dockerfile


FROM ubuntu:18.04

WORKDIR /dk_ai_dir
COPY requirements.txt /dk_ai_dir

RUN apt-get -y update \
    && apt-get -y upgrade \
    && apt-get install -y --no-install-recommends locales curl python3-distutils vim ca-certificates \
    && curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py \
    && python3 get-pip.py \
    && pip install -U pip \
    && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && pip install -r requirements.txt --no-cache-dir

ENV LANG en_US.utf8

requirements.txt


Flask==1.1.0
gunicorn==19.9.0
Keras>=2.2.5
numpy==1.16.4
pandas==0.24.2
pillow>=6.2.0
python-dateutil==2.8.0
pytz==2019.1
PyYAML==5.1.1
requests==2.22.0
scikit-learn==0.21.2
sklearn==0.0
matplotlib==3.1.1
tensorboard>=1.14.0
tensorflow>=1.14.0
mecab-python3==0.996.2

build docker-compose (lancé en arrière-plan)

$ docker-compose up -d --build

docker-compose Afficher les informations sur l'image

$ docker-compose images
Container     Repository       Tag       Image Id       Size  
--------------------------------------------------------------
dk_ai       dk_ai_dir_dk_ai   latest   6f8b190eba7e   2.103 GB

Est-il mal fait? Il semble que la capacité soit assez grande: sueur: </ sup>

Liste des conteneurs

$ docker-compose ps
Name     Command    State           Ports         
--------------------------------------------------
dk_ai   /bin/bash   Up      0.0.0.0:7000->7000/tcp

Se connecter au conteneur

$ docker-compose exec dk_ai /bin/bash
root@ddc90c65586d:/dk_ai_dir# pwd
/dk_ai_dir

Vérifiez le contenu pour voir si c'est fait

J'en ai omis car l'affichage du résultat de sortie est long: sueur: </ sup>

root@ddc90c65586d:/dk_ai_dir# pip3 list
Package                Version
---------------------- -----------
absl-py                0.9.0
Flask                  1.1.0
gunicorn               19.9.0
h5py                   2.10.0
joblib                 0.14.1
Keras                  2.3.1
Keras-Applications     1.0.8
Keras-Preprocessing    1.1.2
matplotlib             3.1.1
mecab-python3          0.996.2
numpy                  1.16.4
pandas                 0.24.2
Pillow                 7.1.2
pip                    20.1
pyparsing              2.4.7
python-dateutil        2.8.0
requests               2.22.0
rsa                    4.0
scikit-learn           0.21.2
scipy                  1.4.1
setuptools             46.3.0
sklearn                0.0
tensorboard            2.2.1
tensorboard-plugin-wit 1.6.0.post3
tensorflow             2.2.0
tensorflow-estimator   2.2.0
urllib3                1.25.9
wheel                  0.34.2

Pour le moment, vérifiez avec la commande docker

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
dk_ai_dir_dk_ai     latest              6f8b190eba7e        29 minutes ago      2.1GB
webque-api-img      latest              d0aa942613bc        9 days ago          1.9GB
python              3                   4f7cd4269fa9        2 weeks ago         934MB
ubuntu              18.04               c3c304cb4f22        2 weeks ago         64.2MB
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
ddc90c65586d        dk_ai_dir_dk_ai     "/bin/bash"         30 minutes ago      Up 30 minutes       0.0.0.0:7000->7000/tcp   dk_ai
860f6e3c6376        webque-api-img      "/bin/bash"         8 days ago          Up 2 days           0.0.0.0:8888->8888/tcp   webqueapi

Les choses autres que celle que j'ai fabriquée cette fois (dk_ai_dir_dk_ai) sont celles que j'ai faites dans le passé. Il semble que la capacité soit assez grande: sueur: </ sup>

Panne de service

$ docker-compose stop
Stopping dk_ai ... done
$ docker-compose ps
Name     Command    State    Ports
----------------------------------
dk_ai   /bin/bash   Exit 0        

Début du service

$ docker-compose start
Starting dk_ai ... done
$ docker-compose ps
Name     Command    State           Ports         
--------------------------------------------------
dk_ai   /bin/bash   Up      0.0.0.0:7000->7000/tcp

Quand vous voulez nettoyer l'environnement

* Le matériel de référence est tel qu'il est. Veuillez consulter les documents de référence pour plus de détails: bow_tone1: </ sup>

#Arrêter et supprimer
#Réseau de conteneurs
docker-compose down

#Image du réseau de conteneurs
docker-compose down --rmi all

#Volume du réseau de conteneurs
docker-compose down -v

Recommended Posts

(Remarque) Remarques sur la création d'un environnement Tensor Flow avec Docker Compose (un seul conteneur)
(Remarque) Remarques sur la création de l'environnement TensorFlow + Flask + Nginx avec Docker Compose
Remarque sur la création de votre propre environnement Miniconda
Remarque: préparez l'environnement de CmdStanPy avec docker
Création d'un environnement TensorFlow qui utilise des GPU sous Windows 10
Lancer Django sur un conteneur Docker à l'aide de docker-compose up
Remarques sur la création d'un environnement virtuel avec Anaconda Navigator
[Django] Créez rapidement un environnement de développement de conteneur Django (Docker) avec PyCharm
Préparer l'environnement python3 avec Docker
[Tensorflow] Construction de l'environnement Tensorflow sous Windows 10
Essayez de créer Jupyter Hub avec Docker
Créer une application Rails avec Docker
Création d'un environnement d'apprentissage HPC à l'aide de Docker Compose (C, Python, Fortran)
Créer une image de conteneur Docker avec JRE8 / JDK8 sur Amazon Linux
Construction d'environnement Postgres avec Docker J'ai eu un peu de mal, alors notez
Création d'un environnement de développement avec Maven sur Google App Engine [Java]