Docker的安装
# 使用Aliyun安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 或者
curl -sSL https://get.daocloud.io/docker | sh
接下来测试docker是否能够使用:
# 运行hello world,这里将自动下载ubuntu 20.04的镜像
docker run ubuntu:20.04 /bin/echo "Hello world"
# 运行交互式容器
docker run -i -t ubuntu:20.04 /bin/bash
有可能遇到运行docker没有权限的问题,解决方案如下:
#添加docker用户组
sudo groupadd docker
#将登陆用户加入到docker用户组中
sudo gpasswd -a $USER docker
#更新用户组
newgrp docker
#测试docker命令是否可以使用sudo正常使用
docker ps
Docker的基本使用
后台执行指令
# 后台执行指令,command为需要执行的命令
docker run -d <image:tag> /bin/sh -c <commands>
# 查看指定容器的命令行输出
docker logs <contrainer id>
使用GPU执行程序
Docker中使用GPU需要安装额外的工具,使用如下的脚本将安装所需工具。
# Add the package repositories
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
在Docker中使用GPU:
# 使用所有GPU
docker run --gpus all
# 使用两块GPU
docker run --gpus 2
# 使用指定GPU ID
docker run --gpus "device=1,2"
文件挂载
docker run -v <path to host>:<path to target>
端口映射
docker run -p <host_port>:<container_port>
关闭容器
# 查看当前docker容器的运行状态
docker ps
# 关闭指定的docker容器
docker stop <container id>
使用Docker兼容不同版本的Tensorflow
由于CUDA不作向下兼容,tensorflow很容易遇到版本不兼容的问题。NGC(Nvidia GPU Container)对不同的CUDA库提供了向下兼容的docker镜像。接下来我们尝试在CUDA11.1的环境下安装tensorflow1.X的环境并在GPU上运行该程序。
下载对应的镜像
image.png
镜像的选择与当前docker的版本、系统版本、当前CUDA的版本以及需要tensorflow的版本相关。具体参考帮助文档。
image.png
# 题主的系统使用20.12版本的镜像
docker pull nvcr.io/nvidia/tensorflow:20.12-tf1-py3
定制Docker镜像
有时我们需要定制一些特有的镜像,或者修改已有的镜像使其符合生产需求。接下来介绍如何编写Dockerfile并制作Docker镜像。
Dockerfile脚本:
FROM ubuntu:20.04
RUN apt-get update
RUN apt-get install -y python
EXPOSE 8888
执行docker构建程序:
docker build -t <image_name>:<version> <Dockerfile path>
构建完成后使用docker image ls
即可查询到当前构建的镜像。
参考链接
菜鸟教程
如何在高版本的CUDA中运行TF 1.X
Nvidia tensorflow image(Nvidia GPU Container)