LoginSignup
1
3

More than 3 years have passed since last update.

(備忘録)Docker Compose(1コンテナだけ)でTensor Flow環境構築時のメモ

Posted at

はじめに

自分の備忘録用です:sweat:
Docker Compose(1コンテナだけ)でPython+TensorFlow+Kerasの環境を作る時のメモです。
自分用に作った記事なので、分かりにくい点や情報、技術が古いかもしれませんがご了承ください:bow_tone1:

参考資料

参考にさせて頂きました:bow_tone1:

環境 ※以下のVerでなくても動くと思いますが、古いのでご注意下さい:no_good_tone2:

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
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バージョン
$ 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

※なぜかbuild unknown。時間掛かりそうだったので諦めました:sob:

ディレクトリ構成

テスト用で適当に作っています。。。

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

必要なファイルの中身

docker-compose.yml
version: '3'
services:
  dk_ai:
    restart: always
    build: .
    container_name: 'dk_ai'
    tty: true
    volumes:
      # マウントするディレクトリ
      - .:/dk_ai_dir
    ports:
      # ホスト側のポート:コンテナ側のポート
      - 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

docker-compose ビルド(backgroundで起動)

$ docker-compose up -d --build

docker-compose イメージ情報を表示

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

作り方が悪いのか結構容量大きいような:sweat:

コンテナの一覧表示

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

コンテナに接続

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

できているか中身を確認

出力結果の表示が長いのでいくつか省きました:sweat:

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

一応、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

今回作った物(dk_ai_dir_dk_ai)以外の物は、過去に作ったものです。結構容量大きいような:sweat:

サービス停止

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

サービス開始

$ 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

環境をクリーンにしたい時

※参考資料そのままです。詳細は参考資料等見て下さい:bow_tone1:

# 停止&削除
# コンテナ・ネットワーク
docker-compose down

# コンテナ・ネットワーク・イメージ
docker-compose down --rmi all

# コンテナ・ネットワーク・ボリューム
docker-compose down -v
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3