深入理解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实现跨文件全局变量的方法
Jul 07 Python
Python实现带百分比的进度条
Jun 28 Python
Python科学计算之NumPy入门教程
Jan 15 Python
利用numpy实现一、二维数组的拼接简单代码示例
Dec 15 Python
Python下载网络文本数据到本地内存的四种实现方法示例
Feb 05 Python
Python线程同步的实现代码
Oct 03 Python
Python面向对象程序设计类的封装与继承用法示例
Apr 12 Python
Python中新式类与经典类的区别详析
Jul 10 Python
解决django同步数据库的时候app models表没有成功创建的问题
Aug 09 Python
Python 脚本实现淘宝准点秒杀功能
Nov 13 Python
Pycharm创建项目时如何自动添加头部信息
Nov 14 Python
python Zmail模块简介与使用示例
Dec 19 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 HandlerSocket的使用
2011/05/02 PHP
PHP 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
Linux中为php配置伪静态
2014/12/17 PHP
[原创]php简单隔行变色功能实现代码
2016/07/09 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
js下用gb2312编码解码实现方法
2009/12/31 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
AngularJs基于角色的前端访问控制的实现
2016/11/07 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
python通过post提交数据的方法
2015/05/06 Python
python常用函数详解
2016/09/13 Python
Python装饰器用法示例小结
2018/02/11 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
3分钟学会一个Python小技巧
2018/11/23 Python
python如何将两个txt文件内容合并
2019/10/18 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
大学生求职中的自我评价
2013/10/01 职场文书
会计学应届毕业生推荐信
2013/11/04 职场文书
税务会计岗位职责
2014/02/18 职场文书
企业宣传口号
2014/06/12 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
班级出游活动计划书
2014/08/15 职场文书
党员个人对照检查材料
2014/10/01 职场文书
小学老师对学生的评语
2014/12/29 职场文书
小学语文复习计划
2015/01/19 职场文书
导游词之河北白洋淀
2020/01/15 职场文书
Go中的条件语句Switch示例详解
2021/08/23 Golang
Javascript之datagrid查询详解
2021/09/15 Javascript