使用Dockerfile建立Ubuntu+Pytorch+CUDA 鏡像
過程
- 安裝Docker 參考ubuntu安裝docker
- 安裝NVIDIA Container Toolkit 參考NVIDIA/nvidia-docker
- 準備好Python-3.6.9.tar.xz
- 從nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04 鏡像基礎上搭建
- 安裝openssh-server、python、pytorch
- run鏡像時加上參數--gpus all --ipc=host
Dockerfile
# BASE IMAGE
FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04
# LABEL MAINTAINER
LABEL maintainer="ltobenull@gmail.com"
SHELL ["/bin/bash","-c"]
WORKDIR /tmp
# copy安裝文件
COPY Python-3.6.9.tar.xz /tmp
# 設置 root 密碼
RUN echo 'root:password' | chpasswd \
# 安裝openssh-server 並配置
&& apt-get update && apt-get -y install openssh-server \
&& sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config \
&& sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config \
&& mkdir /var/run/sshd \
# 安裝python依賴包
&& apt-get -y install build-essential python-dev python-setuptools python-pip python-smbus \
&& apt-get -y install build-essential libncursesw5-dev libgdbm-dev libc6-dev \
&& apt-get -y install zlib1g-dev libsqlite3-dev tk-dev \
&& apt-get -y install libssl-dev openssl \
&& apt-get -y install libffi-dev \
# 安裝python 3.6.9
&& mkdir -p /usr/local/python3.6 \
&& tar xvf Python-3.6.9.tar.xz \
&& cd Python-3.6.9 \
&& ./configure --prefix=/usr/local/python3.6 \
&& make altinstall \
# 創建軟連接
&& ln -snf /usr/local/python3.6/bin/python3.6 /usr/bin/python3 \
&& ln -snf /usr/local/python3.6/bin/pip3.6 /usr/bin/pip3\
# 安裝pytorch
&& mkdir ~/.pip && echo -e '[global] \nindex-url = https://mirrors.aliyun.com/pypi/simple/' >> ~/.pip/pip.conf \
&& pip3 install torch===1.2.0 torchvision===0.4.0 -f https://download.pytorch.org/whl/torch_stable.html \
# 清理copy的安裝文件
&& apt-get clean \
&& rm -rf /tmp/* /var/tmp/*
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]