docker保护python源码_Tensorflow在Docker中运行和源码编译
本站寻求有缘人接手,详细了解请联系站长QQ1493399855
本文分享在在Docker中运行Tensorflow和进行源码编译的方法和步骤,包括:编译、构建docker镜像、创建和运行Docker容器。部署完的容器可以通过Jupyter Notebook进行访问。
1、运行Tensorflow容器
docker run --name tensorflow -it -p 9888:8888 gcr.io/tensorflow/tensorflow
2、构建Docker镜像
如何自己构建Docker镜像呢? Docker的构建代码位于项目子目录中:tensorflow/tools/docker 按照如下方法构建:
docker build --pull -t $openthings/tensorflow -f Dockerfile .
其他版本参考上面的方法构建。
注意:上面的构建和运行都是基于预构建的版本,为了性能优化、支持特定操作系统和硬件版本,需要 自行从源码编译。
3、Tensorflow源码编译
Tensorflow支持多种系统,因此需要编译相应的版本,包括:
CPU版本
GPU版本
Android版本
iOS版本
主版本采用Bazel进行build,Android版本和iOS版本需要使用tensorflow/contrib/makefile或tensorflow/contrib/cmake中的方法使用make或cmake进行构建。
自动化编译方法
如果自己手工编译参考下面的方法和过程。
目前Tesnorflow的编译在Linux上比较顺利,在macOS和Windows上会遇到各种小问题。这里我通过运行于macOS上的Docker来编译。
创建bazel的docker容器
创建Dockerfile-bazel,内容如下:
FROM ubuntu:14.04
MAINTAINER openthings@163.com
RUN apt-get update && apt-get install -y --no-install-recommends
build-essential
cmake
curl
git
wget
libatlas-base-dev
libboost-all-dev
libgflags-dev
libgoogle-glog-dev
libhdf5-serial-dev
libleveldb-dev
liblmdb-dev
libopencv-dev
libprotobuf-dev
libsnappy-dev
protobuf-compiler
python-pip
python-wheel
python-dev
python-numpy
python-scipy
software-properties-common
# =========Install JDK8.====================================================
# Define commonly used JAVA_HOME variable
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
RUN echo ">>>>>> Install JDK8,PWD: "$PWD &&
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections &&
add-apt-repository -y ppa:webupd8team/java &&
apt-get update &&
apt-get install -y oracle-java8-installer
# =========Install bazel.===================================================
RUN echo ">>>>>> Install bazel,PWD: "$PWD &&
echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" |
tee /etc/apt/sources.list.d/bazel.list &&
curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add - &&
apt-get update &&
apt-get install -y bazel &&
echo ">>>>>> Success install bazel,PWD: "$PWD
#apt-get upgrade bazel
#wget https://github.com/bazelbuild/bazel/releases/tag/0.4.3 -O bazel
WORKDIR /workspace
ENTRYPOINT ["/bin/bash"]
#CMD ["/bin/bash"]
创建bazel容器的构建脚本:
docker build -t openthings/bazel -f Dockerfile-bazel .
使用bazel容器编译tensorflow
创建构建脚本:
echo ">>> First, please run ./confgiure to config. "
echo "Run bazel build......"
docker run -ti -v $PWD:/workspace openthings/bazel build-tf.sh
由于使用bazel需要预先运行./configure进行配置,第一次编译时,使用下面的脚本直接进入容器中进行配置和编译操作: ``` echo ">>> First, please run ./confgiure to config. " echo "Run bazel build......"
docker run -ti -v $PWD:/workspace openthings/bazel ```