深入理解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统计文件行数示例分享
Feb 21 Python
在windows下快速搭建web.py开发框架方法
Apr 22 Python
python requests 使用快速入门
Aug 31 Python
Python 将RGB图像转换为Pytho灰度图像的实例
Nov 14 Python
python学生信息管理系统
Mar 13 Python
pytorch使用Variable实现线性回归
May 21 Python
python循环定时中断执行某一段程序的实例
Jun 29 Python
python基于socket进行端口转发实现后门隐藏的示例
Jul 25 Python
tensorflow 获取所有variable或tensor的name示例
Jan 04 Python
python实现ftp文件传输功能
Mar 20 Python
Python scrapy爬取起点中文网小说榜单
Jun 13 Python
python非标准时间的转换
Jul 25 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/05 PHP
PHP+APACHE实现网址伪静态
2015/02/22 PHP
Zend Framework实现多服务器共享SESSION数据的方法
2016/03/22 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
2017/10/17 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
Javascript 二维数组
2009/11/26 Javascript
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
用方法封装javascript的new操作符(一)
2010/12/25 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
用js模拟struts2的多action调用示例
2014/05/19 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
一文了解Vue中的nextTick
2019/05/06 Javascript
JS将时间秒转换成天小时分钟秒的字符串
2019/07/10 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
[03:44]2014DOTA2国际邀请赛 71专访:DK战队赛前讨论视频遭泄露
2014/07/13 DOTA
python对字典进行排序实例
2014/09/25 Python
python删除列表中重复记录的方法
2015/04/28 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
学校安全教育月活动总结
2014/07/07 职场文书
三人合伙协议书范本
2014/10/29 职场文书
介绍长城的导游词
2015/01/30 职场文书
承诺书范本大全
2015/05/04 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书