制作docker 镜像 Anaconda3 + tensorflow-gpu part2 Dockerfile nvidia docker

制作docker 镜像 Anaconda3 + tensorflow-gpu + python3.6, part2 Dockerfile + nvidia docker

  • 1 Dockerfile制作镜像
  • 2 nvidia docker安装
  • 3 运行tensorflow-gpu的docker容器
  • 参考链接

-part 1 ubuntu16.04 + docker安装
链接 [link]https://blog.csdn.net/weixin_41270857/article/details/83449123
-part 2 Dockerfile + nvidia docker
链接 [link]https://blog.csdn.net/weixin_41270857/article/details/83449964

1 Dockerfile制作镜像

docker官网关于Dockerfile的制作链接 [link]https://docs.docker.com/get-started/part2/

  1. 首先创建一个自己合适路径下的空目录
mkdir docker
cd docker
vim Dockerfile
  1. 写Dockerfile如下
  • 这里由于制作镜像的时候无法输入命令,因此Anaconda的安装需要使用静默模式(silent mode),官网的参考链接为[link]https://conda.io/docs/user-guide/install/index.html#installing-in-silent-mode ,即选择-b -p + 安装路径的模式
  • 注意Anaconda不要选择官网的最新版本Anaconda 5.3+python 3.7, 否则安装tensorflow时会报错出现找不到制定版本的tensorflow的问题(Could not find a version that satisfies the requirement tensorflow-gpu (from versions: )),因此这里采取的是清华镜像中的Anaconda3 5.2+python3.6的下载链接,清华镜像所有Anaconda的链接 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
  • 注意Dockerfile RUN source /root/.bashrc 会报错 /bin/sh: 1: source: not found ,因此Dockerfile应该写成 /bin/bash -c “source /root/.bashrc”
FROM nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04
MAINTAINER llluckygirl 

# install basic dependencies
RUN apt-get update 
RUN apt-get install -y wget \
		vim \
		cmake

# install Anaconda3
RUN wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.2.0-Linux-x86_64.sh -O ~/anaconda3.sh
RUN bash ~/anaconda3.sh -b -p /home/anaconda3 \
	&& rm ~/anaconda3.sh 
ENV PATH /home/anaconda3/bin:$PATH

# change mirror
RUN mkdir ~/.pip \
	&& cd ~/.pip 	
RUN	echo -e "[global]\nindex-url = https://pypi.mirrors.ustc.edu.cn/simple/" >> ~/pip.conf

# install tensorflow
RUN /home/anaconda3/bin/pip install tensorflow-gpu
  1. 制作docker image
    -t 后面跟镜像的名字
docker build -t tf-gpu .
  1. 运行容器
docker run -it --rm tf-gpu /bin/bash

其中含义如下:
-it 交互式运行 与之对应的是-d代表后台运行
–rm 代表退出容器后就删除容器
tf-gpu 为之前创立的镜像名称
/bin/bash 代表进入容器后选择bash的方式

此时运行之后在Python3 里 import tensorflow报错:ImportError: libcuda.so.1: cannot open shared object file: No such file or directory
查阅资料后发现需要安装 nvidia docker2来运行gpu环境.

2 nvidia docker安装

官网链接 [link]https://github.com/NVIDIA/nvidia-dockerhttps://www.nvidia.cn/object/docker-container-cn.html
安装命令如下

# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker

# Add the package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

# Install nvidia-docker2 and reload the Docker daemon configuration
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd

# Test nvidia-smi with the latest official CUDA image
docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi

3 运行tensorflow-gpu的docker容器

docker run --runtime=nvidia -it --rm tf-gpu /bin/bash

此时import tensorflow成功。

参考链接

[1]: [link] https://docs.docker.com/get-started/part2/
[2]: [link] https://conda.io/docs/user-guide/install/index.html#installing-in-silent-mode
[3]: [link] https://github.com/NVIDIA/nvidia-dockerhttps://www.nvidia.cn/object/docker-container-cn.html

你可能感兴趣的:(深度学习)