1. 安装 Docker

  • 卸载旧版本 Docker
sudo apt-get remove docker docker-engine docker.io containerd runc
  • 安装新版本
sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

其它安装方式请参考:
https://docs.docker.com/engine/install/ubuntu/

2. 安装 nvidia-docker

  • docker 版本 > 19.03 则不需要安装 nvidia-docker ,只需要安装 nvidia-container-tookit
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
   && 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
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

验证安装是否成功

sudo docker run --rm --gpus all nvidia/cuda:10.0-base nvidia-smi

输出结果:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.93       Driver Version: 410.93       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 1080    On   | 00000000:01:00.0 Off |                  N/A |
| 37%   22C    P8    14W / 180W |      0MiB /  8119MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 1080    On   | 00000000:82:00.0 Off |                  N/A |
| 37%   20C    P8     9W / 180W |      0MiB /  8119MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

其它测试命令,详情参考:
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/user-guide.html

#### Test nvidia-smi with the latest official CUDA image
docker run --gpus all nvidia/cuda:10.0-base nvidia-smi
 
# Start a GPU enabled container on two GPUs
docker run --gpus 2 nvidia/cuda:10.0-base nvidia-smi
 
# Starting a GPU enabled container on specific GPUs
docker run --gpus '"device=1,2"' nvidia/cuda:10.0-base nvidia-smi
docker run --gpus '"device=UUID-ABCDEF,1"' nvidia/cuda:10.0-base nvidia-smi
 
# Specifying a capability (graphics, compute, ...) for my container
# Note this is rarely if ever used this way
docker run --gpus all,capabilities=utility nvidia/cuda:10.0-base nvidia-smi
  • docker 版本 < 19.03,则需要安装 nvidia 官方提供的 nvidia-docker

NVIDIA Docker 地址:
https://github.com/NVIDIA/nvidia-docker

https://www.cnblogs.com/qinlulu/p/14671420.html

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker

3. 下载cuda/nvidia-ubuntu镜像

docker 镜像官网:https://hub.docker.com/ ,输入 nvidia/cuda 选择对应的版本。
官网

4. 使用 Dockerfile 构建镜像

直接基于 nvida/cuda ,使用 DockerFile 构建一个镜像

 docker build -t docker_image_name  .

DockerFile 内容:

FROM nvidia/cuda:10.0-cudnn7-runtime-ubuntu16.04

RUN cat /etc/apt/sources.list && apt-get clean && apt-get -y update --fix-missing
RUN apt-get -y install python3.6 python3-pip && ln -s /usr/bin/python3.6 /usr/bin/python && ln -s /usr/bin/pip3 /usr/bin/pip
RUN apt-get install -y libsm6 libxrender1 libxext-dev
#安装需要的库
RUN pip install -i https://mirrors.aliyun.com/pypi/simple/ web.py torch==1.3.1 torchvision==0.4.2 opencv-python scipy flask
RUN apt-get clean && rm -r ~/.cache/pip

其它 Dockerfile

# BASE IMAGE
FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04 

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"]

参考:
https://www.cnblogs.com/qinlulu/p/14671420.html

https://www.cnblogs.com/shoufu/p/12904832.html

https://blog.csdn.net/weixin_43590796/article/details/114848742#commentBox

https://blog.csdn.net/submarineas/article/details/115558769

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐