深入理解pytorch库的dockerfile
作者:点PY 发布时间:2021-01-11 23:28:54
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
来源:https://blog.csdn.net/weixin_42990464/article/details/125218164


猜你喜欢
- 前情提要好久没有写Vue了,略有生疏,这个东西还是得多用。下午看到一个需求,选择相册图片作为轮播图显示。接口返回相册列表,用户选一下再扔回去
- 例如<div id="info"><span><span class='pl
- 比如一个汉字也只会算一个字节,在排版时如果全是汉字,好说,反正没什么差别,但是如果 * 作的字符串有汉字又有英文字母时,就不方便了,以下三个函
- 引言在负责咨询工作的过去 6 年中,我曾多次听说关于数据访问和操作方面的问题,它时刻困扰着用户:“如何编写应用程序,以便
- 给网页添加打印按钮,除了打印之外,还有页面设置、打印预览、复制本文链接到剪贴板等网页基本应用。正象我在图中标注的,大部分按钮只能适用于IE浏
- 猜测下面这段程序的输出:class A(object): def __init__(self):
- 1.定义在某些情况下,一个类的对象是有限且固定的,比如季节类,它只有 4 个对象;再比如行星类,目前只有 8 个对象。这种实例有限且固定的类
- 迭代器&生成器在 Python 中,迭代器和生成器都是用来遍历数据集合的工具,可以按需逐个生成或返回数据,从而避免一次性加载整个数据
- 发送端代码:#!/usr/bin/python# -*- coding: UTF-8 -*-import socketimport stru
- 例如数据 列Namename abcd最后的结果a*b*c*d*declare @test table( namevarchar(10))&
- scrapy是一个基于Twisted的异步处理框架,可扩展性很强。优点此处不再一一赘述。下面介绍一些概念性知识,帮助大家理解scrapy。一
- 前些日子在做绩效体系的时候,遇到了一件囧事,居然忘记怎样在Excel上拟合正态分布了,尽管在第二天重新拾起了Excel中那几个常见的函数和图
- 为什么要用el-scrollbar?最近在写一个内部平台系统,相信大家都知道,其中会有很多自定义的滚动区域,就比如说现在有一个列表需要滚动,
- 一、插件是什么?插件是遵循一定规范的应用程序接口编写出来的程序,而chrome插件则是运行在chrome浏览器上的小程序,能帮我们解决一下工
- 本文实例为大家分享了Python3多线程版TCP端口扫描器的具体代码,供大家参考,具体内容如下使用命令python BannerDemo.p
- 一、在CentOS上安装Python31.下载Python3.10源代码文件下载地址:https://www.python.org/down
- 本文实例讲述了Python函数基础用法。分享给大家供大家参考,具体如下:一、什么是命名关键字参数?格式: 在*后面参数都是命名关键字参数。特
- 简单说明这个算法主要工作是测量不同特征值之间的距离,有个这个距离,就可以进行分类了。简称kNN。已知:训练集,以及每个训练集的标签。接下来:
- 使用步骤大致分为两步,就不多废话第一步、修改hosts文件将0.0.0.0 account.jetbrains.com添加到hosts文件最
- 这篇文章主要介绍了Python3的socket使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要