注:首先,一开始shell中命令行所在位置在root文件下,即root@4210node:~
。其次,整个文件夹目录如下:
root
|—model
|—result # 存放推理后的图片
|—val # 存在数据集
|—deeplabv3plus # 存放模型代码
|—deeplabv3plus.pth
|—deeplabV3plus.py
|—deploy.py
|—joint_transforms.py
|—requirements.txt
|—transforms.py
1.9.1-cuda11.1-cudnn8-devel
docker run -it -v /root/model/result:/media/result --name="pytorch" \
--gpus=all pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel /bin/bash
# 退出镜像
exit
# 启动容器
docker start pytorch
# 将文件复制到镜像中
docker cp model/val/ pytorch:/media/
docker cp model/deeplabv3plus/ pytorch:/workspace/
# 进入镜像中去
docker exec -it pytorch /bin/bash
pip install -r deeplabv3plus/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
cd deeplabv3plus
python deploy.py
项目目录树如下:
root
|—container
|—result # 存放推理后的图片
|—deeplabv3plus # 存放deeplabv3plus的Dockerfile文件
|—deeplabv3plus.tar # 存放deeplabv3plus模型代码的压缩包
|—deeplabv3plus.pth
|—deeplabV3plus.py
|—deploy.py
|—joint_transforms.py
|—requirements.txt
|—transforms.py
|—pspnet # 存放pspnet的Dockerfile文件
|—pspnet.tar # 存放pspnet模型代码的压缩包
|—pspnet.pth
|—pspnet.py
|—deploy.py
|—joint_transforms.py
|—requirements.txt
|—transforms.py
|—segnet # 存放segnet的Dockerfile文件
|—segnet.tar # 存放segnet模型代码的压缩包
|—segnet.pth
|—segnet.py
|—deploy.py
|—joint_transforms.py
|—requirements.txt
|—transforms.py
|—val.tar # 数据集压缩包
以deeplabv3plus深度学习模型为例,使用Dockerfile制作镜像,并运行深度学习容器。
步骤如下:
# 拉取基础镜像
FROM pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel
# 维护者信息
MAINTAINER shiftyCat [email protected]
# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
# 设置数据集路径和工作路径
ENV DATASET /media
ENV WORKSPACE /workspace
# 将宿主机上的数据集和模型代码压缩包复制到镜像中,并解压
ADD val.tar $DATASET
ADD deeplabv3plus.tar $WORKSPACE
# 容器启动后执行的命令
# 配置工作目录
WORKDIR $WORKSPACE
# 安装第三方依赖库
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
docker build -f container/deeplabv3plus -t deeplabv3plus:1.0.0 .
docker run -it -v /root/container/result:/media/result --name="deeplabv3plus" --gpus=0 deeplabv3plus:1.0.0 /bin/bash
python deploy.py
Docker
pull:拉取远程仓库中的镜像。
```shell
docker pull pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel
```
- -i:以交互模式运行容器;
- -t:为容器重新分配一个伪输入终端;
- -v:将容器中的某个文件或文件夹挂载到宿主机上;
- --name:给运行的容器命名;
- --gpus:为容器分配GPU资源。
```shell
docker run -it -v /root/model/result:/media/result --name="pytorch" \
--gpus=all pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel /bin/bash
```
```shell
docker cp model/val/ pytorch:/media/
```
```shell
# 容器名为deeplabv3plus
# 查看运行中的容器
docker ps
# 查看所有容器,可查看停止运行的镜像及其中断原因
docker ps -a
# 关闭容器
docker stop deeplabv3plus
# 删除容器
docker rm deeplabv3plus
# 重启容器
docker restart deeplabv3plus
# 开启容器
docker start deeplabv3plus
# 以伪终端的方式进入容器内部
docker exec -it deeplabv3plus /bin/bash
```
1. build:制作镜像,存在一些短选项
- -f:定位在container目录下名为deeplabv3plus的Dockerfile文件;
- -t:镜像命名,`:`后为镜像标签,若不表明默认为latest。
```shell
# 镜像名为deeplabv3plus
# 制作镜像(build)
docker build -f container/deeplabv3plus -t deeplabv3plus:1.0.0 .
```
2. images:查看所有镜像信息
```shell
docker images
```
3. save:保存镜像
```shell
docker save -o deeplabv3plus.tar deeplabv3plus
```
4. load:载入镜像
```shell
docker load --input deeplabv3plus.tar
docker load < deeplabv3plus.tar
```
5. rmi:删除镜像
```shell
docker rmi deeplabv3plus:1.0.0
```
Dockerfile
FROM :基础镜像,当前镜像是基于哪个镜像的
```dockerfile
# 拉取基础镜像
FROM pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel
```
```dockerfile
# 维护者信息
MAINTAINER shiftyCat [email protected]
```
```dockerfile
# 安装第三方依赖库
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
```
EXPOSE:当前容器对外暴露的端口号
ENV:用来在构建镜像过程中设置环境变量
```dockerfile
# 设置数据集路径和工作路径
ENV DATASET /media
ENV WORKSPACE /workspace
```
```dockerfile
# 配置工作目录
WORKDIR /workspace
# 或者如下
WORKDIR $WORKSPACE
```
```dockerfile
ADD val.tar /media
ADD deeplabv3plus.tar $WORKSPACE
```
COPY:类似于ADD,拷贝文件和目录到镜像中。
VOLUME:容器数据卷,用于数据保存和持久化工作。