首頁 > 軟體

深入理解pytorch庫的dockerfile

2022-06-10 22:01:58

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內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com