深入理解pytorch库的dockerfile


Posted in Python onJune 10, 2022

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…

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

到此这篇关于pytorch库的dockerfile的文章就介绍到这了,更多相关pytorch库的dockerfile内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

Python 相关文章推荐
Python中使用第三方库xlrd来写入Excel文件示例
Apr 05 Python
Windows下安装python MySQLdb遇到的问题及解决方法
Mar 16 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
Jun 13 Python
Python深拷贝与浅拷贝用法实例分析
May 05 Python
Python的垃圾回收机制详解
Aug 28 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
jupyter note 实现将数据保存为word
Apr 14 Python
详解python中groupby函数通俗易懂
May 14 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
关于python的缩进规则的知识点详解
Jun 22 Python
Python非单向递归函数如何返回全部结果
Dec 18 Python
python入门学习关于for else的特殊特性讲解
Nov 20 Python
如何利用python实现列表嵌套字典取值
Jun 10 #Python
python中filter,map,reduce的作用
Jun 10 #Python
Django框架中模型的用法
Jun 10 #Python
Django框架中视图的用法
Jun 10 #Python
python基础之//、/与%的区别详解
Jun 10 #Python
Django框架中表单的用法
Jun 10 #Python
移除Selenium中window.navigator.webdriver值
Jun 10 #Python
You might like
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
2013/06/23 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
JS.findElementById()使用介绍
2013/09/21 Javascript
判断滚动条到底部的JS代码
2013/11/04 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
JavaScript之实现一个简单的Vue示例
2019/01/17 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
python使用celery实现异步任务执行的例子
2019/08/28 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
python实现滑雪者小游戏
2020/02/22 Python
中专生自荐信
2013/10/12 职场文书
读书心得体会
2013/12/28 职场文书
网络信息管理员岗位职责
2014/01/05 职场文书
《再别康桥》教学反思
2014/02/12 职场文书
挂牌仪式策划方案
2014/05/18 职场文书
2014年民主评议党员个人总结
2014/09/24 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
追悼词范文大全
2015/06/23 职场文书
个人销售励志奋斗口号
2019/12/05 职场文书
Pytorch 如何实现常用正则化
2021/05/27 Python
详解Flask开发技巧之异常处理
2021/06/15 Python
Go 语言结构实例分析
2021/07/04 Golang
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android
浅谈Node的内存泄露问题
2022/05/06 NodeJs