20250706-8-Docker快速入門(下)-Dockerfile介紹與基本使用_筆記

一、Dockerfile構建鏡像

1. Dockerfile概述



  • 定義:Dockerfile是一個用于自動構建鏡像的文本文件,由一條條指令組成
  • 工作原理:指令逐步執行,每個指令完成不同功能
  • 典型指令示例:
    • FROM centos:latest:基于指定鏡像構建
    • LABEL maintalner lizhenliang:添加說明信息標簽
    • RUN yum install gcc -y:執行安裝命令
    • COPY run.sh /usr/bin:拷貝文件到鏡像
    • EXPOSE 80:聲明容器服務端口
    • CMD ["run.sh"]:啟動應用程序
2. Dockerfile常用指令



  • 基礎指令:
    • FROM:指定基礎鏡像,如FROM centos:7
    • LABEL:添加元數據標簽
    • RUN:執行shell命令,可連接多條命令用&&,如yum install epel-release && yum install nginx -y
  • 文件操作:
    • COPY:拷貝宿主機文件到鏡像
    • ADD:解壓壓縮包并拷貝(比COPY多解壓功能)
  • 環境配置:
    • ENV:設置環境變量
    • USER:指定運行命令的用戶
    • WORKDIR:設置工作目錄
  • 容器配置:
    • EXPOSE:聲明服務端口(實際暴露需運行時指定)
    • CMD:容器啟動時默認執行的命令(多個CMD時最后一個生效)
  • 重要原則:
    • 應用程序必須以前臺方式運行,不能使用后臺進程
    • 參考官方鏡像寫法,如nginx使用CMD ["nginx", "-g", "daemon off;"]
3. 構建鏡像命令



  • 基本命令:docker build -t 鏡像名:標簽 .
  • 關鍵參數:
    • -t:指定鏡像名稱和標簽
    • -f:指定Dockerfile路徑(默認使用當前目錄下Dockerfile)
  • 上下文路徑:
    • 末尾的點.表示構建上下文路徑
    • Dockerfile中所有文件操作都基于此路徑
  • 構建過程:
    • 會按步驟執行Dockerfile中的每條指令
    • 每條指令都會生成一個中間層鏡像
    • 構建失敗時可從上次成功步驟繼續
  • 注意事項:
    • 避免在容器中使用systemd等后臺服務管理工具
    • 所有應用程序應以前臺方式運行(通過CMD指定)
    • 參考官方鏡像的構建方式(如nginx官方鏡像)
二、知識小結

知識點

核心內容

考試重點/易混淆點

難度系數

Dockerfile概述

用于自動構建鏡像的文本文件,包含逐條指令

指令功能區分(如FROM、RUN、CMD)

??

Dockerfile指令

FROM引用基礎鏡像、RUN執行命令、COPY復制文件、EXPOSE聲明端口、CMD啟動應用

CMD與ENTRYPOINT區別,RUN多命令寫法(&&連接)

???

容器啟動原則

必須以前臺進程運行(如nginx -g 'daemon off;'),禁止使用systemd

特權模式與常規模式差異,一號進程必要性

????

鏡像構建命令

docker build -t <鏡像名> -f <Dockerfile路徑> .

上下文路徑(.的含義),-y自動確認參數

??

Nginx鏡像示例

基于CentOS 7安裝Nginx并配置前臺啟動

官方鏡像參考,daemon off參數作用

???

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

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

相關文章

Git系列--3.分支管理

目錄 一、理解分支 1.1圖示 1.2 打印倉庫下有哪些分支 1.3創建分支 1.4HEAD與切換分支 1.5合并分支 1.6流程圖理解 二、刪除分支 ? 三、合并分支沖突 3.1.問題導入 3.2.解決 3.3合并圖示 四、合并模式 4.1合并?編輯 4.2變基 五、bug分支 5.1背景建立 5.2解決步驟 5.2.1…

Vue.js TDD開發深度指南:工具鏈配置與精細化測試策略

“TDD不是測試優先的開發&#xff0c;而是設計優先的開發。” —— Robert C. Martin 引言 在Vue.js項目中實施測試驅動開發&#xff08;TDD&#xff09;是構建健壯應用的關鍵路徑。但許多開發者在實踐中常遇到&#xff1a; 工具鏈配置復雜導致放棄不同類型組件測試策略混淆測…

基于物聯網的智能家居控制系統設計與實現

標題:基于物聯網的智能家居控制系統設計與實現內容:1.摘要 隨著物聯網技術的飛速發展&#xff0c;智能家居逐漸成為人們關注的焦點。本文旨在設計并實現一個基于物聯網的智能家居控制系統&#xff0c;以提高家居的智能化水平和用戶的生活便利性。通過采用先進的傳感器技術、通信…

Vue 中使用 Cesium 實現可拖拽點標記及坐標實時顯示功能

在 Cesium 地圖開發中&#xff0c;實現點標記的拖拽交互并實時顯示坐標信息是一個常見的需求。本文將詳細介紹如何在 Vue 框架中使用 Cesium 的 Primitive 方式創建點標記&#xff0c;并實現拖拽功能及坐標提示框跟隨效果。先看效果圖功能實現概述我們將實現的功能包括&#xf…

HTML 插件:構建網頁的強大工具

HTML 插件:構建網頁的強大工具 引言 HTML 插件是網頁設計中不可或缺的一部分,它們為網頁增添了豐富的交互性和動態效果。本文將深入探討 HTML 插件的概念、類型、應用及其在網頁開發中的重要性。 什么是 HTML 插件? HTML 插件,也稱為 HTML 組件或 HTML 控件,是指嵌入到…

NeRF、3DGS、2DGS下三維重建相關方法介紹及以及在實景三維領域的最新實踐

一、引言 在計算機視覺與圖形學領域&#xff0c;三維重建技術正經歷從傳統幾何建模向智能化神經表征的范式轉變。近年來&#xff0c;隨著深度學習算法的迭代、傳感器技術的進步及計算硬件的升級&#xff0c;以神經輻射場&#xff08;NeRF&#xff09;和高斯潑濺&#xff08;2D…

rt thread studio 和 KEIL對于使用rt thread 的中間件和組件,哪個更方便

下面我從中間件/組件集成和開發體驗兩個角度&#xff0c;詳細對比 RT-Thread Studio 和 Keil MDK 的便利性&#xff1a;1. 中間件和組件集成 RT-Thread Studio 集成RT-Thread生態&#xff1a;內置RT-Thread的包管理器&#xff08;RT-Thread Package Manager&#xff09;&#x…

Spring Boot 項目開發實戰:入門應用部分原理示例講解

前言Spring Boot 作為當前 Java 開發領域最流行的框架之一&#xff0c;以其 "約定優于配置" 的理念極大簡化了企業級應用的開發流程。本文將基于《Spring Boot 項目開發教程&#xff08;慕課版&#xff09;》中的資產管理系統項目&#xff0c;深入解析 Spring Boot 的…

ByteBrain x 清華 VLDB25|時序多模態大語言模型 ChatTS

資料來源&#xff1a;火山引擎-開發者社區 近年來&#xff0c;多模態大語言模型&#xff08;MLLM&#xff09;發展迅速&#xff0c;并在圖像、視頻、音頻等領域取得了突破性成果。然而&#xff0c;相較于這些研究較為成熟的模態&#xff0c;時間序列這一類型的數據與大模型結合…

WPF學習筆記(25)MVVM框架與項目實例

MVVM框架與項目實例一、MVVM框架1. 概述2. 核心組件與優勢一、MVVM項目1.普通項目2. MVVM架構3. MVVM項目實例1. 項目準備2. LoginViewModel與Login2. MainWindowViewModel4. MVVM項目優化1. BaseViewModel2. RealyCommand3. 效果展示總結一、MVVM框架 1. 概述 官方文檔&…

MySQL實操

## 基于MySQL#先啟動MySQL服務#第一次登錄[rootlocalhost ~]# mysql -uroot -P3306#密碼登錄[rootlocalhost ~]# mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 9Server version: 8.0.41 Source dist…

ez_rust_writeup

一道簡單的[[rust逆向]] #rust逆向 #位運算 題目信息 文件名&#xff1a;ezrust.exe 題目附件&#xff1a;https://wwfj.lanzoul.com/iczMR30k5j4h 密碼:bueq 題目分析 1. 初步分析 這是一道Rust編寫的逆向題目。通過IDA分析可以看到&#xff0c;這是一個典型的flag驗證程序。 …

【QT】-隱式轉換 explicit用法

通俗易懂的解釋:隱式轉換 vs 顯式轉換 什么是隱式轉換? 隱式轉換就是編譯器偷偷幫你做的類型轉換,你甚至都沒意識到它發生了。 例子: cpp 運行 double x = 5; // 隱式:int → double(5 變成 5.0) int y = x * 2.5; // 隱式:double → int(截斷小數部分) 構造函數的隱…

Django核心知識點詳解:JSON、AJAX、Cookie、Session與用戶認證

1. JSON數據格式詳解1.1 什么是JSON&#xff1f;JSON&#xff08;JavaScript Object Notation&#xff09;是一種輕量級的數據交換格式&#xff0c;具有以下特點&#xff1a;獨立于語言&#xff0c;幾乎所有編程語言都支持易于人閱讀和編寫易于機器解析和生成基于文本&#xff…

[特殊字符] Python 實戰 | 批量統計中文文檔詞頻并導出 Excel

本文展示如何用 Python 腳本&#xff1a; 批量讀取文件夾中的多篇中文文檔&#xff1b; 用 jieba 分詞并統計詞頻&#xff08;過濾停用詞與單字符&#xff09;&#xff1b; 將各文檔詞頻輸出為對應 Excel 文件&#xff1b; 是文本分析、內容審查、報告編寫中的實用技巧。 &…

共享打印機(詳細操作+常見問題:需輸入用戶名密碼、無法連接等)

文章目錄一、設置打印機共享的準備工作二、Windows系統下打印機共享設置1. 啟用主機打印機共享2. 客戶端添加共享打印機三、我所遇到的問題及解決方法客戶機遇到輸入用戶名、密碼錯誤代碼 0x0000011b一、錯誤代碼 0x0000011b 的含義二、解決方法添加打印機沒成功其他問題此次打…

在 Windows 系統上配置 [go-zero](https://go-zero.dev) 開發環境教程

&#x1f4bb; 在 Windows 系統上配置 go-zero 開發環境教程 本教程將詳細介紹如何在 Windows 系統上配置 go-zero 微服務框架的開發環境&#xff0c;包括依賴安裝、路徑配置、常見問題等。 &#x1f9f1; 一、前置環境安裝 1. 安裝 Go 下載地址&#xff1a;https://go.dev/…

開源=白嫖?

國內有一個非常濃重的思想&#xff0c;開源&#xff0c;開源就是免費&#xff0c;就是白嫖&#xff0c;就是不花錢&#xff0c;白給。那么什么是開源&#xff1f;“源代碼”是軟件中大多數計算機用戶從未見過的部分;它是計算機程序員可以操縱的代碼&#xff0c;以改變一個軟件(…

2048-控制臺版本

2048控制臺版 文章目錄2048控制臺版實現效果&#xff1a;在這里插入圖片描述庫函數使用&#xff1a;初始化變量功能函數實現&#xff1a;狀態判斷函數int Judge&#xff08;&#xff09;&#xff1b;數字生成函數 bool CtreateNumber&#xff08;&#xff09;打印游戲界面 void…

提取出Wallpaper Engine壁紙的mpkg類靜態壁紙

github 地址 https://github.com/notscuffed/repkg先下載軟件2853…26目錄這樣獲取有的直接mp4格式&#xff0c;就不能用這方法準備好后 cmd 進入repkg目錄 執行 repkg extract ./294...333/scene.pkg