深入理解pytorch库的dockerfile

作者:点PY 时间:2021-01-11 23:28:54 

0. dockerfile命令

FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的,姓名+邮箱
RUN# 镜像构建的时候需要运行的命令
ADD# 步骤:tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR# 镜像的工作目录
VOLUME# 挂载的目录
EXPOSE# 保留端口配置
CMD# 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT  # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD# 当构建一个被继承DockerFile这个时候就会运行ONBUILD指令,触发指令。
COPY# 类似ADD,将我们文件拷贝到镜像中
ENV# 构建的时候设置环境变量

1. 使用指令的注意点

1.FROM:
如果制作base image,则使用FROM scratch

如果在某镜像基础上制作,例如使用FROM centos:7指定具体的base image的版本,不指定版本则默认为最新的。

2.LABEL:
需要对镜像做基础的介绍:

LABEL maintainer="Prin<xxx@qq.com>"
LABEL version = "1.0"
LABEL description="prin First DcokerFile"

3.RUN:
容器内执行的命令,有两种格式。
shell:RUN <命令行命令>,等同于在终端执行shell命令
exec:RUN ["可执行文件","参数1","参数2"]

注意:Dockerfile的指令每执行一次都会在docker上新建一层。所以过多无意义的层,会造成镜像膨胀过大,建议使用&&符号链接命令,例如:RUN yum -y update && yum -y install yum net-tools。

4.ADD and COPY:
概述:
ADD和COPY都是将宿主机上的文件拷入镜像中。大部分情况,,COPY优于ADD(方便明了)。 ADD除了COPY还有额外功能(解压)。添加远程文件/目录请使用curl或者wget。

ADD For_add /prin ------- 将本地文件夹For_add(与dockerfile在同一个目录)内的文件全部拷入镜像的/prin目录。
COPY For_cp /prin ------ 同上。
ADD for_add.tar.gz /prin/unzip/ ------ 将 for_add.tar.gz压缩文件拷贝进入镜像的/prin/unzip/目录,并解压。

5.WORKDIR(工作目录):
在容器生成时,默认切换到具体的目录中。

6.VOLUME(挂载):
概述:
设置数据卷的位置,并且容器在运行时自动挂载为匿名卷,当然也可以覆盖与具名挂载。

2. dockerfile

# 继承Pytorch官方的cuda镜像
FROM pytorch/pytorch:1.11.0-cuda11.3-cudnn8-devel
LABEL maintainer = "xxxxxxx@qq.com"
LABEL version = "0.2"
LABEL description = "prepare deep learning environment"
# 指定docker镜像中,默认的工作路径是/home/BE
WORKDIR /home/BE
RUN rm /etc/apt/sources.list.d/cuda.list \
&& rm /etc/apt/sources.list.d/nvidia-ml.list \
&& apt-get update \
&& apt-get install -y libgl1 \
&& conda install gdal==3.4.1 \
&& pip config set global.index-url https://pypi.douban.com/simple/ \
&& pip install opencv-python-headless==4.6.0.66 \
   && pip install opencv-python==4.6.0.66 \
   && pip install segmentation-models-pytorch

3. 参考

https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/manage-windows-dockerfile

4. 存在的问题

Q1:每一次运行docker容器时,是否要挂载本地路径

docker run的时候,进行挂载

Q2:dockerfile中涉及apt-get 操作失败

官方的解释:为了最好地确保我们的 RPM 和 Debian 软件包存储库的安全性和可靠性,NVIDIA 将从 2022 年 4 月 27 日开始更新和轮换 apt、dnf/yum 和 zypper 软件包管理器使用的签名密钥。未能更新存储库签名密钥将导致尝试从 CUDA 存储库访问或安装包时出现包管理错误。为确保继续访问最新的 NVIDIA 软件,请完成以下步骤: 删除过时的签名密钥 Deb&hellip;

RUN rm /etc/apt/sources.list.d/cuda.list
RUN rm /etc/apt/sources.list.d/nvidia-ml.list

来源:https://blog.csdn.net/weixin_42990464/article/details/125218164

标签:pytorch,库,dockerfile
0
投稿

猜你喜欢

  • asp事务处理的另外一个方法

    2010-05-27 12:18:00
  • pyinstaller打包opencv和numpy程序运行错误解决

    2023-02-23 02:42:54
  • html元素input使用方法

    2007-12-06 13:02:00
  • 解决python3 json数据包含中文的读写问题

    2022-07-22 03:04:51
  • 关于SQL Server中索引使用及维护简介

    2008-12-24 15:39:00
  • 判断sql语句执行是否成功

    2008-07-05 12:22:00
  • Python网络编程之ftplib模块

    2021-12-11 01:49:37
  • 检查access数据库中是否存在某个名字的表的asp代码

    2011-04-02 11:20:00
  • python把数组中的数字每行打印3个并保存在文档中的方法

    2022-08-13 19:15:30
  • ASP编程入门进阶教程

    2008-06-29 18:00:00
  • python的time模块和datetime模块实例解析

    2023-11-13 09:54:56
  • Python实现读取字符串按列分配后按行输出示例

    2023-08-07 19:39:14
  • tensorflow图像裁剪进行数据增强操作

    2023-06-23 14:33:20
  • python GUI库图形界面开发之PyQt5线程类QThread详细使用方法

    2023-12-03 20:29:40
  • 解析WordPress中函数钩子hook的作用及基本用法

    2023-07-08 03:27:52
  • 利用CSS改善网站可访问性

    2010-10-20 20:12:00
  • PHP原型模式Prototype Pattern的使用介绍

    2023-05-25 01:21:04
  • 远程连接access数据库的几个方法

    2008-10-21 21:16:00
  • PHP实现将科学计数法转换为原始数字字符串的方法

    2023-10-15 21:13:10
  • 详解Python中while无限迭代循环方法

    2022-08-17 12:53:48
  • asp之家 网络编程 m.aspxhome.com