Dockerfile常用指令介紹

Dockerfile常用指令介紹

Dockerfile是一個文本文件,用于定義Docker鏡像的構建過程。下面介紹一些最常用的Dockerfile指令及其用法:

基礎指令
  1. FROM - 指定基礎鏡像

    FROM python:3.9-slim
    

    這是Dockerfile的第一個指令,用于指定構建鏡像的基礎鏡像。

  2. MAINTAINER (已棄用) / LABEL - 設置鏡像元數據

    LABEL maintainer="yourname@example.com"
    

    用于添加鏡像的作者或其他元數據信息。

  3. RUN - 在鏡像中執行命令

    RUN apt-get update && apt-get install -y python3-dev
    

    用于在構建鏡像時執行命令,通常用于安裝軟件包。

  4. COPY - 復制文件到鏡像

    COPY ./app /app
    

    第一個參數是源路徑,表示要復制的文件或目錄
    第二個參數是目標路徑(destination path),表示文件將被復制到鏡像中的位置
    從構建上下文復制文件或目錄到鏡像中。

  5. ADD - 更高級的復制指令

    ADD ./app.tar.gz /app
    

    類似于COPY,但可以處理遠程URL和自動解壓壓縮文件。

環境配置
  1. ENV - 設置環境變量

    ENV PYTHONUNBUFFERED 1
    

    為鏡像設置環境變量,這些變量在容器運行時也會存在。

  2. WORKDIR - 設置工作目錄

    WORKDIR /app
    

    設置RUN、CMD、ENTRYPOINT、COPY和ADD命令的工作目錄。

容器運行時配置
  1. CMD - 設置容器啟動時默認執行的命令
    CMD ["python", "app.py"]
    

每個 Dockerfile 只能有一個 CMD 指令
如果指定多個,只有最后一個會生效
可以被 docker run 命令后的參數覆蓋

  1. ENTRYPOINT - 設置容器入口點

    ENTRYPOINT ["python", "app.py"]
    CMD ["--help"]
    

    設置容器啟動時執行的命令,且不會被docker run命令覆蓋,但可以追加參數。

  2. EXPOSE - 聲明容器端口

    EXPOSE 8000
    

    聲明容器運行時提供服務的端口,但不會自動映射端口。

  3. VOLUME - 創建掛載點

    VOLUME /data
    

    創建可以從本地主機或其他容器掛載的掛載點。

用戶和權限
  1. USER - 設置運行命令的用戶
    USER appuser
    
    設置RUN、CMD和ENTRYPOINT命令執行的用戶。
健康檢查
  1. HEALTHCHECK - 設置健康檢查
    HEALTHCHECK --interval=5m --timeout=3s \CMD curl -f http://localhost/ || exit 1
    
    為容器設置健康檢查命令。

簡單示例

下面是一個簡單的Python Flask應用的Dockerfile示例:

這個Dockerfile的工作流程是:

  1. 基于Python 3.9的輕量級鏡像
  2. 設置工作目錄為/app
  3. 復制requirements.txt并安裝依賴
  4. 復制應用代碼到鏡像中
  5. 暴露5000端口
  6. 設置Flask應用的環境變量
  7. 定義容器啟動時運行的命令

學習Dockerfile最好的方法是實踐,建議你嘗試構建一些簡單的鏡像,然后逐步學習更復雜的用法。

FROM python:3.9-slim# 設置工作目錄
WORKDIR /app# 安裝依賴
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt# 復制應用代碼
COPY . .# 暴露端口
EXPOSE 5000# 設置環境變量
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0# 運行應用
CMD ["flask", "run"]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/85903.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85903.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/85903.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring中@Primary注解的作用與使用

在 Spring 框架中,Primary 注解用于解決依賴注入時的歧義性(Ambiguity)問題。當 Spring 容器中存在多個相同類型的 Bean 時,通過 Primary 標記其中一個 Bean 作為默認的首選注入對象。 核心作用: 解決多個同類型 Bean …

本地優先的狀態管理與工具選型策略

本地優先:合理把控狀態共享邊界 在 React 應用開發過程中,開發者容易陷入一個認知誤區——過度追求狀態的全局化。許多新手開發者在項目初期就急于引入 Redux、Zustand 或 Jotai 等狀態管理工具,將一些本應屬于組件內部的瑣碎狀態&#xff0…

OpenCV CUDA模塊圖像處理-----對圖像執行 均值漂移過程(Mean Shift Procedure)函數meanShiftProc()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 執行一個均值漂移過程(mean-shift procedure),并將處理后的點的信息(它們的顏色和位置&#xff0…

硬件I2C和軟件I2C的區別

硬件I2C和軟件I2C的區別 一、硬件I2C 1、硬件IC的局限性及學習意義 盡管硬件IC外設在STM32等微控制器中提供了標準化的通信支持,但在實際應用中,其穩定性可能存在問題。例如,某些情況下外設會因事件檢測異常而進入死鎖狀態,僅能…

推薦12個wordpress企業網站模板

WordPress企業網站模板是一種專為企業網站設計的WordPress主題,旨在幫助企業創建專業、美觀且易于管理的網站。這些模板通常具備響應式設計、SEO優化、多語言支持等功能,能夠滿足不同行業和企業的需求。 WordPress企業網站模板的適用場景 企業官網&…

68道Hbase高頻題整理(附答案背誦版)

簡述什么是Hbase數據庫? Hbase是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,它利用HBase技術在HDFS上提供了類似于Bigtable的能力。換句話說,Hbase是Apache Hadoop生態系統中的一部分,可以為大數據應用提供快速的隨機…

PyTorch——卷積操作(2)

二維矩陣 [[ ]] 這里面conv2d(N,C,H,W)里面的四個是 N就是batch size也就是輸入圖片的數量,C就是通道數這只是一個二維張量所以通道為1,H就是高,W就是寬,所以是1 1 5 5 卷積核 reshape 第一個參數是batch size樣本數量 第二個參數…

Linux之MySQL安裝篇

1.確保Yum環境是否能正常使用 使用yum環境進行軟件的安裝 yum -y install mysql-server mysql2.確保軟件包已正常完成安裝 3.設置防火墻和selinux配置 ## 關閉防火墻 systemctl stop firewalld## 修該selinux配置 vim /etc/selinux/config 將seliuxenforcing修改為sel…

Devops系列---python基礎篇二

1、列表 1.1 概念 格式: 名稱 [ “元素1”,“元素2”,…] #定義一個列表 computer ["主機","鍵盤","顯示器","鼠標"]類型方法用途查index(“元素”)查看元素索引位置count(“元素”)統計元素出現的次數reverse()倒序排…

LeetCode - 234. 回文鏈表

目錄 題目 快慢雙指針步驟 讀者可能的錯誤寫法 正確的寫法 題目 234. 回文鏈表 - 力扣(LeetCode) 快慢雙指針步驟 找到鏈表的中點(find_mid函數): 使用快慢指針,慢指針每次走一步,快指針…

UniApp 全生命周期鉤子詳解

👉 整理不易,如果本文對你有幫助,歡迎點個【贊 👍】【收藏 ?】【關注 🧡】 后續我們還將繼續分享實用的 UniApp 教程,比如: 文件上傳全局請求封裝狀態管理動態路由等… 📮 有任何…

探索NautilusTrader:下一代開源算法交易平臺的革命性突破

在金融科技的浪潮中,量化交易領域正經歷一場由開源技術驅動的變革。NautilusTrader(https://github.com/nautechsystems/nautilus_trader)作為一款高性能、生產級的算法交易平臺,正以其創新的設計理念和強大的技術架構重塑開發者的策略研發流程。 一、核心定位:打破回測與…

QT開發技術【ffmpeg + QAudioOutput】音樂播放器

一、 介紹 使用ffmpeg 4.2.2 在數字化浪潮席卷全球的當下,音視頻內容猶如璀璨繁星,點亮了人們的生活與工作。從短視頻平臺上令人捧腹的搞笑視頻,到在線課堂中知識淵博的專家授課,再到影視平臺上扣人心弦的高清大片,音…

[論文閱讀] (38)基于大模型的威脅情報分析與知識圖譜構建論文總結(讀書筆記)

《娜璋帶你讀論文》系列主要是督促自己閱讀優秀論文及聽取學術講座,并分享給大家,希望您喜歡。由于作者的英文水平和學術能力不高,需要不斷提升,所以還請大家批評指正,非常歡迎大家給我留言評論,學術路上期…

python批量解析提取word內容到excel

# 基于Python實現Word文檔內容批量提取與Excel自動化存儲 ## 引言 在日常辦公場景中,常需要從大量Word文檔中提取結構化數據并整理到Excel表格中。傳統手動操作效率低下,本文介紹如何通過Python實現自動化批處理,使用python-docx和openpyxl…

win32相關(遠程線程和遠程線程注入)

遠程線程和遠程線程注入 CreateRemoteThread函數 作用:創建在另一個進程的虛擬地址空間中運行的線程 HANDLE CreateRemoteThread([in] HANDLE hProcess, // 需要在哪個進程中創建線程[in] LPSECURITY_ATTRIBUTES lpThreadAttributes, // 安全…

Flyway

Flyway 是一個強大的數據庫版本控制和遷移工具,主要用于管理數據庫結構的變更和演進。 核心作用 1. 數據庫版本控制 追蹤數據庫變更:記錄每次數據庫結構的修改版本管理:為每個變更分配版本號變更歷史:完整記錄數據庫演進過程 …

【深尚想】OPA855QDSGRQ1運算放大器IC德州儀器TI汽車級高速8GHz增益帶寬的全面解析

1. 元器件定義與核心特性 OPA855QDSGRQ1 是德州儀器(TI)推出的一款 汽車級高速運算放大器,專為寬帶跨阻放大(TIA)和電壓放大應用優化。核心特性包括: 超高速性能:增益帶寬積(GBWP&a…

機器學習實驗八--基于pca的人臉識別

基于pca的人臉識別 引言:pca1.pca是什么2.PCA算法的基本步驟 實例:人臉識別1.實驗目的2.實現步驟3.代碼實現4.實驗結果5.實驗總結 引言:pca 1.pca是什么 pca是一種統計方法,它可以通過正交變換將一組可能相關的變量轉換成一組線…

【LLIE專題】NTIRE 2025 低照度圖像增強第二名方案

Towards Scale-Aware Low-Light Enhancement via Structure-Guided Transformer Design(2025,NTIRE) 專題介紹一、研究背景二、SG-LLIE方法1.和Retinexformer方案對比2.總體方案及創新點3.詳細方案3.1 結構先驗提取3.2 網絡結構3.3 損失函數 …