日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

深入理解pytorch庫的dockerfile_python

作者:點(diǎn)PY ? 更新時間: 2022-08-04 編程語言

0. dockerfile命令

FROM 			# 基礎(chǔ)鏡像,一切從這里開始構(gòu)建
MAINTAINER 		# 鏡像是誰寫的,姓名+郵箱
RUN				# 鏡像構(gòu)建的時候需要運(yùn)行的命令
ADD				# 步驟:tomcat鏡像,這個tomcat壓縮包!添加內(nèi)容
WORKDIR			# 鏡像的工作目錄
VOLUME			# 掛載的目錄
EXPOSE			# 保留端口配置
CMD				# 指定這個容器啟動的時候要運(yùn)行的命令,只有最后一個會生效,可被替代
ENTRYPOINT  	# 指定這個容器啟動的時候要運(yùn)行的命令,可以追加命令
ONBUILD			# 當(dāng)構(gòu)建一個被繼承DockerFile這個時候就會運(yùn)行ONBUILD指令,觸發(fā)指令。
COPY			# 類似ADD,將我們文件拷貝到鏡像中
ENV				# 構(gòu)建的時候設(shè)置環(huán)境變量

1. 使用指令的注意點(diǎn)

1.FROM:
如果制作base image,則使用FROM scratch

如果在某鏡像基礎(chǔ)上制作,例如使用FROM centos:7指定具體的base image的版本,不指定版本則默認(rèn)為最新的。

2.LABEL:
需要對鏡像做基礎(chǔ)的介紹:

LABEL maintainer="Prin<xxx@qq.com>"
LABEL version = "1.0"
LABEL description="prin First DcokerFile"

3.RUN:
容器內(nèi)執(zhí)行的命令,有兩種格式。
shell:RUN <命令行命令>,等同于在終端執(zhí)行shell命令
exec:RUN ["可執(zhí)行文件","參數(shù)1","參數(shù)2"]

注意:Dockerfile的指令每執(zhí)行一次都會在docker上新建一層。所以過多無意義的層,會造成鏡像膨脹過大,建議使用&&符號鏈接命令,例如:RUN yum -y update && yum -y install yum net-tools。

4.ADD and COPY:
概述:
ADD和COPY都是將宿主機(jī)上的文件拷入鏡像中。大部分情況,,COPY優(yōu)于ADD(方便明了)。 ADD除了COPY還有額外功能(解壓)。添加遠(yuǎn)程文件/目錄請使用curl或者wget。

ADD For_add /prin ------- 將本地文件夾For_add(與dockerfile在同一個目錄)內(nèi)的文件全部拷入鏡像的/prin目錄。
COPY For_cp /prin ------ 同上。
ADD for_add.tar.gz /prin/unzip/ ------ 將 for_add.tar.gz壓縮文件拷貝進(jìn)入鏡像的/prin/unzip/目錄,并解壓。

5.WORKDIR(工作目錄):
在容器生成時,默認(rèn)切換到具體的目錄中。

6.VOLUME(掛載):
概述:
設(shè)置數(shù)據(jù)卷的位置,并且容器在運(yùn)行時自動掛載為匿名卷,當(dāng)然也可以覆蓋與具名掛載。

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鏡像中,默認(rèn)的工作路徑是/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:每一次運(yùn)行docker容器時,是否要掛載本地路徑

docker run的時候,進(jìn)行掛載

Q2:dockerfile中涉及apt-get 操作失敗

官方的解釋:為了最好地確保我們的 RPM 和 Debian 軟件包存儲庫的安全性和可靠性,NVIDIA 將從 2022 年 4 月 27 日開始更新和輪換 apt、dnf/yum 和 zypper 軟件包管理器使用的簽名密鑰。未能更新存儲庫簽名密鑰將導(dǎo)致嘗試從 CUDA 存儲庫訪問或安裝包時出現(xiàn)包管理錯誤。為確保繼續(xù)訪問最新的 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

欄目分類
最近更新