深入理解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列表计数及插入实例
Dec 17 Python
Python批量创建迅雷任务及创建多个文件
Feb 13 Python
从零开始学Python第八周:详解网络编程基础(socket)
Dec 14 Python
Python学习小技巧之利用字典的默认行为
May 20 Python
Python MD5加密实例详解
Aug 02 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
python序列类型种类详解
Feb 26 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
May 10 Python
如何理解Python中包的引入
May 29 Python
浅谈TensorFlow中读取图像数据的三种方式
Jun 30 Python
Python 在局部变量域中执行代码
Aug 07 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
Mar 03 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 Class&amp;Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
PHP中使用正则表达式提取中文实现笔记
2015/01/20 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
php实现图片上传并进行替换操作
2016/03/15 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
nodejs URL模块操作URL相关方法介绍
2015/03/03 NodeJs
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
2018/01/08 jQuery
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
Vue SPA 首屏优化方案
2021/02/26 Vue.js
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
python判断完全平方数的方法
2018/11/13 Python
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
塑料制成的可水洗的编织平底鞋和鞋子:Rothy’s
2018/09/16 全球购物
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
介绍一下RMI的基本概念
2016/12/17 面试题
个人汇报材料范文
2014/12/30 职场文书
opencv 分类白天与夜景视频的方法
2021/06/05 Python
Python 中的 copy()和deepcopy()
2021/11/07 Python
Windows server 2012搭建FTP服务器
2022/04/29 Servers
配置nginx负载均衡
2022/05/06 Servers