开发手册 欢迎您!
软件开发者资料库

Docker 安装Python及机器学习工具环境

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。本文主要介绍Docker 安装及配置 Python及机器学习工具环境。

1、安装Docker

参考文档:

安装Docker

Docker 入门教程

2、Python机器学习工具的Docker镜像

镜像基于 Alpine Linux Python 3.5 镜像,只有 60MB 镜像,并且包含流行的机器学习(Machine Leaning) 工具(numpy、pandas、scipy、scikit-learn)。获取Python机器学习工具的docker镜像,有两种方式,一种是通过docker pull命令获取,另一种是通过Dockerfile文件创建,具体如下,

1)使用docker pull命令

使用docker pull命令获取https://hub.docker.com/中存储公共镜像,如下,

docker pull frolvlad/alpine-python-machinelearning

注意:使用docker run命令时,如果镜像不存会自动调用docker pull获取镜像。

2)使用Dockerfile文件创建

Dockerfile文件

FROM frolvlad/alpine-python3RUN apk add --no-cache \        --virtual=.build-dependencies \        g++ gfortran file binutils \        musl-dev python3-dev cython openblas-dev lapack-dev && \    apk add libstdc++ openblas lapack && \    \    ln -s locale.h /usr/include/xlocale.h && \    \    pip install --disable-pip-version-check --no-build-isolation numpy && \    pip install --disable-pip-version-check --no-build-isolation pandas && \    \    # scipy 1.4.x releases are broken on Alpine due to: https://github.com/scipy/scipy/issues/11319    #pip install --disable-pip-version-check --no-build-isolation scipy && \    apk add --no-cache --virtual=.build-dependencies-scipy-patch patch && \    cd /tmp && \    SCIPY_VERSION=1.4.1 && \    wget "https://github.com/scipy/scipy/releases/download/v$SCIPY_VERSION/scipy-$SCIPY_VERSION.tar.xz" && \    tar -xJf "scipy-$SCIPY_VERSION.tar.xz" && \    (cd "scipy-$SCIPY_VERSION" && wget https://patch-diff.githubusercontent.com/raw/scipy/scipy/pull/11320.patch -O - | patch -p1) && \    pip install --disable-pip-version-check --no-build-isolation "/tmp/scipy-$SCIPY_VERSION/" && \    rm -rf /tmp/* && \    apk del .build-dependencies-scipy-patch && \    \    pip install --disable-pip-version-check --no-build-isolation scikit-learn && \    \    rm -r /root/.cache && \    find /usr/lib/python3.*/ -name 'tests' -exec rm -r '{}' + && \    find /usr/lib/python3.*/site-packages/ -name '*.so' -print -exec sh -c 'file "{}" | grep -q "not stripped" && strip -s "{}"' \; && \    \    rm /usr/include/xlocale.h && \    \    apk del .build-dependencies# Add pycddlib and cvxopt with GLPKRUN cd /tmp && \    apk add --no-cache \        --virtual=.build-dependencies \        gcc make file binutils \        musl-dev python3-dev cython gmp-dev suitesparse-dev openblas-dev && \    apk add gmp suitesparse && \    \    pip install --disable-pip-version-check --no-build-isolation pycddlib && \    \    wget "ftp://ftp.gnu.org/gnu/glpk/glpk-4.65.tar.gz" && \    tar xzf "glpk-4.65.tar.gz" && \    cd "glpk-4.65" && \    ./configure --disable-static && \    make -j4 && \    make install-strip && \    CVXOPT_BLAS_LIB=openblas CVXOPT_LAPACK_LIB=openblas CVXOPT_BUILD_GLPK=1 pip install --disable-pip-version-check --no-build-isolation --global-option=build_ext --global-option="-I/usr/include/suitesparse" cvxopt && \    \    rm -r /root/.cache && \    find /usr/lib/python3.*/site-packages/ -name '*.so' -print -exec sh -c 'file "{}" | grep -q "not stripped" && strip -s "{}"' \; && \    \    apk del .build-dependencies && \    rm -rf /tmp/*

生成本地镜像:

docker build -t wonhero/alpine-python-machinelearning .

3、Python机器学习工具的Docker容器

创建容器可以使用https://hub.docker.com/上的frolvlad/alpine-python-machinelearning镜像,也可以使用上面我们通过Dockerfile文件创建的本地镜像。

1)使用frolvlad/alpine-python-machinelearning镜像

$ docker run --rm frolvlad/alpine-python-machinelearning python3 -c 'import numpy; print(numpy.arange(3))'

2)使用wonhero/alpine-python-machinelearning镜像

$ docker run --rm wonhero/alpine-python-machinelearning python3 -c 'import numpy; print(numpy.arange(3))'

相关文档:

Docker 构建自定义镜像和Dockerfile文件

Docker 容器使用的命令