深入理解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操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
Python中常用信号signal类型实例
Jan 25 Python
python2.6.6如何升级到python2.7.14
Apr 08 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
Apr 21 Python
python处理数据,存进hive表的方法
Jul 04 Python
python 重命名轴索引的方法
Nov 10 Python
python 对字典按照value进行排序的方法
May 09 Python
将python文件打包成EXE应用程序的方法
May 22 Python
python安装pil库方法及代码
Jun 25 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
关于Pytorch的MLP模块实现方式
Jan 07 Python
Python列表去重复项的N种方法(实例代码)
May 12 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 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
2017/07/10 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
2020/04/06 PHP
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
基于jQuery实现收缩展开功能
2016/03/18 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
React冒泡和阻止冒泡的应用详解
2020/08/18 Javascript
vue项目中使用rem,在入口文件添加内容操作
2020/11/11 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
PyQt弹出式对话框的常用方法及标准按钮类型
2019/02/27 Python
用Python识别人脸,人种等各种信息
2019/07/15 Python
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
新东网科技Java笔试题
2012/07/13 面试题
初级党校心得体会
2014/09/11 职场文书
2014年初三班主任工作总结
2014/12/05 职场文书
教师个人教学反思
2016/02/23 职场文书
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技
mysql全面解析json/数组
2022/07/07 MySQL
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server