網站首頁 編程語言 正文
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
相關推薦
- 2022-10-12 Golang中panic的異常處理_Golang
- 2022-04-19 c#中task與thread區別及其使用的方法示例_C#教程
- 2022-09-20 Python?pip超詳細教程之pip的安裝與使用_python
- 2023-10-31 springboot 線程池參數解釋
- 2021-12-06 C語言使用rand函數生成隨機數_C 語言
- 2023-07-25 使用POI導出Excel
- 2023-04-12 在redis中防止消息丟失的機制_Redis
- 2022-10-27 SQL案例學習之字符串的合并與拆分方法總結_oracle
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支