docker-keras is a minimal Docker image built from Debian 9 (amd64) for reproducible deep learning based on Keras. It features minimal images for Python 2 or 3, TensorFlow, Theano, or CNTK backends, processing on CPU or GPU, and uses only Debian and Python packages (no manual installations). Each tag is using the latest released versions at a specific date.
Open source project:
- home: http://gw.tnode.com/docker/keras/
- github: http://github.com/gw0/docker-keras/
- technology: debian, keras, tensorflow, theano, cntk, cuda toolkit, openblas, python, numpy, h5py
- docker hub: https://hub.docker.com/r/gw000/keras/
Available tags:
2.1.4-py2
,2.1.4-cpu
,2.1.4
,latest
points to2.1.4-py2-tf-cpu
2.1.4-py3
points to2.1.4-py3-tf-cpu
2.1.4-gpu
points to2.1.4-py2-tf-gpu
2.1.4-py2-tf-cpu
/2.1.4-py2-tf-gpu
/2.1.4-py3-tf-cpu
/2.1.4-py3-tf-gpu
[2018-02-15]: Python 2.7/3.5 + Keras (2.1.4) + TensorFlow (1.5.0) on CPU/GPU (Dockerfile.py2-tf-cpu/.py2-tf-gpu/.py3-tf-cpu/.py3-tf-gpu)2.1.4-py2-th-cpu
/2.1.4-py2-th-gpu
/2.1.4-py3-th-cpu
/2.1.4-py3-th-gpu
[2018-02-15]: Python 2.7/3.5 + Keras (2.1.4) + Theano (1.0.1) on CPU/GPU (Dockerfile.py2-th-cpu*/.py2-th-gpu.py3-th-cpu/.py3-th-gpu)2.1.4-py2-cntk-cpu
/2.1.4-py2-cntk-gpu
/2.1.4-py3-cntk-cpu
/2.1.4-py3-cntk-gpu
[2018-02-15]: Python 2.7/3.5 + Keras (2.1.4) + CNTK (2.4) on CPU/GPU (Dockerfile.py2-cntk-cpu*/.py2-cntk-gpu.py3-cntk-cpu/.py3-cntk-gpu)2.1.3-py2-tf-cpu
/2.1.3-py2-tf-gpu
/2.1.3-py3-tf-cpu
/2.1.3-py3-tf-gpu
[2018-01-17]: Python 2.7/3.5 + Keras (2.1.3) + TensorFlow (1.4.1) on CPU/GPU (Dockerfile.py2-tf-cpu/.py2-tf-gpu/.py3-tf-cpu/.py3-tf-gpu)2.1.3-py2-th-cpu
/2.1.3-py2-th-gpu
/2.1.3-py3-th-cpu
/2.1.3-py3-th-gpu
[2018-01-17]: Python 2.7/3.5 + Keras (2.1.3) + Theano (1.0.1) on CPU/GPU (Dockerfile.py2-th-cpu*/.py2-th-gpu.py3-th-cpu/.py3-th-gpu)2.1.3-py2-cntk-cpu
/2.1.3-py2-cntk-gpu
/2.1.3-py3-cntk-cpu
/2.1.3-py3-cntk-gpu
[2018-01-17]: Python 2.7/3.5 + Keras (2.1.3) + CNTK (2.3) on CPU/GPU (Dockerfile.py2-cntk-cpu*/.py2-cntk-gpu.py3-cntk-cpu/.py3-cntk-gpu)2.1.1-py2-tf-cpu
/2.1.1-py2-tf-gpu
/2.1.1-py3-tf-cpu
/2.1.1-py3-tf-gpu
[2017-12-01]: Python 2.7/3.5 + Keras (2.1.1) + TensorFlow (1.4.0) on CPU/GPU2.1.1-py2-th-cpu
/2.1.1-py2-th-gpu
/2.1.1-py3-th-cpu
/2.1.1-py3-th-gpu
[2017-12-01]: Python 2.7/3.5 + Keras (2.1.1) + Theano (1.0.0) on CPU/GPU2.1.1-py2-cntk-cpu
/2.1.1-py2-cntk-gpu
/2.1.1-py3-cntk-cpu
/2.1.1-py3-cntk-gpu
[2017-12-01]: Python 2.7/3.5 + Keras (2.1.1) + CNTK (2.3) on CPU/GPU2.0.8-py2-tf-cpu
/2.0.8-py2-tf-gpu
/2.0.8-py3-tf-cpu
/2.0.8-py3-tf-gpu
[2017-09-14]: Python 2.7/3.5 + Keras (2.0.8) + TensorFlow (1.3.0) on CPU/GPU2.0.8-py2-th-cpu
/2.0.8-py2-th-gpu
/2.0.8-py3-th-cpu
/2.0.8-py3-th-gpu
[2017-09-14]: Python 2.7/3.5 + Keras (2.0.8) + Theano (0.9.0) on CPU/GPU2.0.8-py2-cntk-cpu
/2.0.8-py2-cntk-gpu
/2.0.8-py3-cntk-cpu
/2.0.8-py3-cntk-gpu
[2017-09-14]: Python 2.7/3.5 + Keras (2.0.8) + CNTK (2.1) on CPU/GPU2.0.6-py2-tf-cpu
/2.0.6-py2-tf-gpu
/2.0.6-py3-tf-cpu
/2.0.6-py3-tf-gpu
[2017-07-13]: Python 2.7/3.5 + Keras (2.0.6) + TensorFlow (1.2.1) on CPU/GPU2.0.6-py2-th-cpu
/2.0.6-py2-th-gpu
/2.0.6-py3-th-cpu
/2.0.6-py3-th-gpu
[2017-07-13]: Python 2.7/3.5 + Keras (2.0.6) + Theano (0.9.0) on CPU/GPU2.0.5-py2-tf-cpu
/2.0.5-py2-tf-gpu
/2.0.5-py3-tf-cpu
/2.0.5-py3-tf-gpu
[2017-06-13]: Python 2.7/3.5 + Keras (2.0.5) + TensorFlow (1.1.0) on CPU/GPU2.0.5-py2-th-cpu
/2.0.5-py2-th-gpu
/2.0.5-py3-th-cpu
/2.0.5-py3-th-gpu
[2017-06-13]: Python 2.7/3.5 + Keras (2.0.5) + Theano (0.9.0) on CPU/GPU2.0.4-py2-tf-cpu
/2.0.4-py2-tf-gpu
/2.0.4-py3-tf-cpu
/2.0.4-py3-tf-gpu
[2017-05-01]: Python 2.7/3.5 + Keras (2.0.4) + TensorFlow (1.1.0) on CPU/GPU2.0.4-py2-th-cpu
/2.0.4-py2-th-gpu
/2.0.4-py3-th-cpu
/2.0.4-py3-th-gpu
[2017-05-01]: Python 2.7/3.5 + Keras (2.0.4) + Theano (0.9.0) on CPU/GPU2.0.3-py2-tf-cpu
/2.0.3-py2-tf-gpu
/2.0.3-py3-tf-cpu
/2.0.3-py3-tf-gpu
[2017-04-19]: Python 2.7/3.5 + Keras (2.0.3) + TensorFlow (1.0.1) on CPU/GPU2.0.3-py2-th-cpu
/2.0.3-py2-th-gpu
/2.0.3-py3-th-cpu
/2.0.3-py3-th-gpu
[2017-04-19]: Python 2.7/3.5 + Keras (2.0.3) + Theano (0.9.0) on CPU/GPU2.0.2-py2-tf-cpu
/2.0.2-py2-tf-gpu
/2.0.2-py3-tf-cpu
/2.0.2-py3-tf-gpu
[2017-03-27]: Python 2.7/3.5 + Keras (2.0.2) + TensorFlow (1.0.1) on CPU/GPU2.0.2-py2-th-cpu
/2.0.2-py2-th-gpu
/2.0.2-py3-th-cpu
/2.0.2-py3-th-gpu
[2017-03-27]: Python 2.7/3.5 + Keras (2.0.2) + Theano (0.9.0) on CPU/GPU2.0.0-py2-tf-cpu
/2.0.0-py2-tf-gpu
/2.0.0-py3-tf-cpu
/2.0.0-py3-tf-gpu
[2017-03-15]: Python 2.7/3.5 + Keras (2.0.0) + TensorFlow (1.0.1) on CPU/GPU2.0.0-py2-th-cpu
/2.0.0-py2-th-gpu
/2.0.0-py3-th-cpu
/2.0.0-py3-th-gpu
[2017-03-15]: Python 2.7/3.5 + Keras (2.0.0) + Theano (0.8.2) on CPU/GPU1.2.2-py2-tf-cpu
/1.2.2-py2-tf-gpu
/1.2.2-py3-tf-cpu
/1.2.2-py3-tf-gpu
[2017-02-17]: Python 2.7/3.5 + Keras (1.2.2) + TensorFlow (1.0.0) on CPU/GPU1.2.2-py2-th-cpu
/1.2.2-py2-th-gpu
/1.2.2-py3-th-cpu
/1.2.2-py3-th-gpu
[2017-02-17]: Python 2.7/3.5 + Keras (1.2.2) + Theano (0.8.2) on CPU/GPU1.2.1-py2-tf-cpu
/1.2.1-py2-tf-gpu
/1.2.1-py3-tf-cpu
/1.2.1-py3-tf-gpu
[2017-01-20]: Python 2.7/3.5 + Keras (1.2.1) + TensorFlow (0.12.1) on CPU/GPU1.2.1-py2-th-cpu
/1.2.1-py2-th-gpu
/1.2.1-py3-th-cpu
/1.2.1-py3-th-gpu
[2017-01-20]: Python 2.7/3.5 + Keras (1.2.1) + Theano (0.8.2) on CPU/GPU1.2.0-py2-tf-cpu
/1.2.0-py2-tf-gpu
/1.2.0-py3-tf-cpu
/1.2.0-py3-tf-gpu
[2016-12-20]: Python 2.7/3.5 + Keras (1.2.0) + TensorFlow (0.12.0) on CPU/GPU1.2.0-py2-th-cpu
/1.2.0-py2-th-gpu
/1.2.0-py3-th-cpu
/1.2.0-py3-th-gpu
[2016-12-20]: Python 2.7/3.5 + Keras (1.2.0) + Theano (0.8.2) on CPU/GPU1.1.1-py2-tf-cpu
/1.1.1-py2-tf-gpu
/1.1.1-py3-tf-cpu
/1.1.1-py3-tf-gpu
[2016-10-31]: Python 2.7/3.5 + Keras (1.1.1) + TensorFlow (0.10.0) on CPU/GPU1.1.1-py2-th-cpu
/1.1.1-py2-th-gpu
/1.1.1-py3-th-cpu
/1.1.1-py3-th-gpu
[2016-10-31]: Python 2.7/3.5 + Keras (1.1.1) + Theano (0.8.2) on CPU/GPU1.1.0-py2-tf-cpu
/1.1.0-py2-tf-gpu
/1.1.0-py3-tf-cpu
/1.1.0-py3-tf-gpu
[2016-09-20]: Python 2.7/3.5 + Keras (1.1.0) + TensorFlow (0.10.0) on CPU/GPU1.1.0-py2-th-cpu
/1.1.0-py2-th-gpu
/1.1.0-py3-th-cpu
/1.1.0-py3-th-gpu
[2016-09-20]: Python 2.7/3.5 + Keras (1.1.0) + Theano (0.8.2) on CPU/GPU1.0.8-py2-tf-cpu
/1.0.8-py2-tf-gpu
/1.0.8-py3-tf-cpu
/1.0.8-py3-tf-gpu
[2016-08-28]: Python 2.7/3.5 + Keras (1.0.8) + TensorFlow (0.9.0) on CPU/GPU1.0.8-py2-th-cpu
/1.0.8-py2-th-gpu
/1.0.8-py3-th-cpu
/1.0.8-py3-th-gpu
[2016-08-28]: Python 2.7/3.5 + Keras (1.0.8) + Theano (0.8.2) on CPU/GPU1.0.6-py2-tf-cpu
/1.0.6-py2-tf-gpu
/1.0.6-py3-tf-cpu
/1.0.6-py3-tf-gpu
[2016-07-20]: Python 2.7/3.5 + Keras (1.0.6) + TensorFlow (0.9.0) on CPU/GPU1.0.6-py2-th-cpu
/1.0.6-py2-th-gpu
/1.0.6-py3-th-cpu
/1.0.6-py3-th-gpu
[2016-07-20]: Python 2.7/3.5 + Keras (1.0.6) + Theano (0.8.2) on CPU/GPU1.0.4-py2-tf-cpu
/1.0.4-py2-tf-gpu
/1.0.4-py3-tf-cpu
/1.0.4-py3-tf-gpu
[2016-06-16]: Python 2.7/3.5 + Keras (1.0.4) + TensorFlow (0.8.0) on CPU/GPU1.0.4-py2-th-cpu
/1.0.4-py2-th-gpu
/1.0.4-py3-th-cpu
/1.0.4-py3-th-gpu
[2016-06-16]: Python 2.7/3.5 + Keras (1.0.4) + Theano (0.8.2) on CPU/GPU1.0.1-py2-th-cpu
/1.0.1-py2-th-gpu
[2016-04-16]: Python 2.7 + Keras (1.0.1) + Theano (0.8.1) on CPU/GPU0.3.3-py2-th-cpu
/0.3.3-py2-th-gpu
[2016-03-31]: Python 2.7 + Keras (0.3.3) + Theano (0.8.1) on CPU/GPU
Quick experiment with latest Keras (with TensorFlow backend on CPU) and your Python 2 code in current directory (will be mapped to /srv
):
$ docker run -it --rm -v $(pwd):/srv gw000/keras /srv/run.py
Or using TensorFlow backend on GPUs in Python 2 (see docker-debian-cuda):
$ docker run -it --rm $(ls /dev/nvidia* | xargs -I{} echo '--device={}') $(ls /usr/lib/*-linux-gnu/{libcuda,libnvidia}* | xargs -I{} echo '-v {}:{}:ro') -v $(pwd):/srv gw000/keras:2.1.4-py2-tf-gpu /srv/run.py
Or using Theano backend on GPUs in Python 3 (see docker-debian-cuda):
$ docker run -it --rm $(ls /dev/nvidia* | xargs -I{} echo '--device={}') $(ls /usr/lib/*-linux-gnu/{libcuda,libnvidia}* | xargs -I{} echo '-v {}:{}:ro') -v $(pwd):/srv gw000/keras:2.1.4-py3-th-gpu /srv/run.py
Additional parameters in above commands explicitly expose your GPU devices and CUDA Driver library from the host system into the container. The vendor specific nvidia-docker tool performs the same thing in a less transparent way and is incompatible with other Docker tools. For more instructions see docker-debian-cuda.
In practice you are supposed to extend this image by writing your own Dockerfile
that installs all your application dependencies (either using apt-get
or pip
). Eg. if you need Matplotlib, PIL/pillow, Pandas, Scikit-learn, and Statsmodels:
FROM gw000/keras:2.1.4-py3-tf-cpu
# install dependencies from debian packages
RUN apt-get update -qq \
&& apt-get install --no-install-recommends -y \
python-matplotlib \
python-pillow
# install dependencies from python packages
RUN pip --no-cache-dir install \
pandas \
scikit-learn \
statsmodels
# install your app
ADD ai/ /srv/ai/
RUN chmod +x /srv/ai/run.py
# default command
CMD ["/srv/ai/run.py"]
If you are looking for a full deep learning research environment based on Keras and Jupyter, check out docker-keras-full.
If you encounter any bugs or have feature requests, please file them in the issue tracker or even develop it yourself and submit a pull request over GitHub.
Copyright © 2016-2018 gw0 [http://gw.tnode.com/] <gw.2018@ena.one>
All code is licensed under the GNU Affero General Public License 3.0+ (AGPL-3.0+). Note that it is mandatory to make all modifications and complete source code publicly available to any user.