欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

docker?build?和compose?學習筆記

 更新時間:2025年07月23日 10:14:58   作者:AI算法網奇  
Docker?build構建鏡像,docker-compose?up?-d啟動多容器應用,前者需Dockerfile,后者需docker-compose.yml,Compose可自動調用Build或使用現有鏡像,協(xié)同提升開發(fā)效率與環(huán)境一致性,本文給大家分享docker?build?和compose?學習筆記,感興趣的朋友一起看看吧

docker build 和 docker compose up -d 是 Docker 生態(tài)系統(tǒng)中兩個不同的命令,用于不同的場景。以下是它們的核心區(qū)別:

docker build 筆記

docker build -t my-app:1.0 . 

是的,docker build -t my-app:1.0 . 命令會自動讀取當前目錄下的 Dockerfile(文件名必須嚴格為 Dockerfile,大小寫敏感)。以下是詳細說明:

1. 路徑解析

  • . 表示“當前目錄”:
    命令最后的 . 是構建上下文(Build Context)的路徑,Docker 會將該目錄下的所有文件(遞歸)發(fā)送給 Docker 守護進程(daemon),并在其中查找 Dockerfile。

    • 例如:若在 /home/user/project 下執(zhí)行命令,則默認讀取 /home/user/project/Dockerfile

  • 自定義 Dockerfile 路徑:
    如果 Dockerfile 不在當前目錄,或使用了其他文件名,需通過 -f 指定:

docker build -t my-app:1.0 -f ./subdir/CustomDockerfile .
  • 此時仍以 .(當前目錄)為構建上下文,但使用指定文件作為構建指令。

2. 關鍵注意事項

  1. Dockerfile 必須存在:
    如果當前目錄沒有 Dockerfile,會報錯:

ERROR: Cannot locate specified Dockerfile: Dockerfile

  1. 構建上下文的影響

    • Docker 會將上下文目錄的所有文件發(fā)送給守護進程(可能導致傳輸量大)。

    • 通過 .dockerignore 文件可排除不需要的文件(類似 .gitignore)。

  2. 鏡像標簽(-t):
    -t my-app:1.0 為生成的鏡像指定名稱和標簽,后續(xù)可通過 docker run my-app:1.0 運行。

2.docker compose up -d

作用
根據 docker-compose.yml 文件啟動和管理多容器應用(包括構建鏡像、創(chuàng)建網絡、掛載卷等)。

關鍵特點

  • 輸入:需要一個 docker-compose.yml 文件(定義多容器服務的配置)。

  • 輸出:啟動一個或多個容器(基于現有鏡像或自動構建鏡像)。

  • 典型用途

    • 啟動復雜的多服務應用(如 Web + 數據庫 + Redis)。

    • 管理容器間的依賴關系和網絡配置。

    • 一鍵啟停整個應用環(huán)境。

示例

docker compose up -d  # 根據 docker-compose.yml 啟動所有服務(-d 表示后臺運行)

核心區(qū)別對比

特性docker builddocker compose up -d
作用對象單個鏡像多容器應用(服務、網絡、卷等)
輸入文件Dockerfiledocker-compose.yml
輸出結果生成鏡像啟動容器(可能包含構建鏡像的步驟)
典型場景構建自定義鏡像部署完整的多服務環(huán)境
依賴關系不涉及其他容器可定義服務間的依賴(如數據庫先啟動)
網絡/卷管理自動創(chuàng)建網絡和卷

常見工作流

  1. 開發(fā)階段

    • 用 docker build 構建鏡像。

    • 用 docker compose up 測試多服務交互。

  2. 生產部署

    • 直接使用 docker compose up -d(如果 docker-compose.yml 中已定義鏡像來源)。

  3. 調試

    • docker build 失敗時檢查 Dockerfile

    • docker compose up 失敗時檢查服務配置或日志。

補充說明

  • 如果 docker-compose.yml 中包含 build 字段,docker compose up 會自動構建鏡像(相當于隱式調用 docker build)。

  • -d 參數表示“后臺運行”(detached mode),不加則會附著到容器日志輸出。

  • 推薦組合使用:先 build 測試鏡像,再通過 compose 編排完整環(huán)境。

1. 功能區(qū)別

命令/工具docker builddocker compose
核心職責構建鏡像(從 Dockerfile 生成鏡像)編排多容器應用(定義和運行多服務環(huán)境)
輸入文件Dockerfiledocker-compose.yml
操作對象單個鏡像多個容器、網絡、存儲卷等資源
典型場景將代碼打包成可運行的鏡像一鍵啟動完整的應用棧(如 Web + DB + Redis)

2. 協(xié)作關系

場景 1:Compose 自動調用 Build

如果 docker-compose.yml 中定義了 build 字段,運行 docker compose up 時會自動觸發(fā) docker build

services:
  webapp:
    build: .  # 根據當前目錄的 Dockerfile 構建鏡像
    ports:
      - "8000:8000"

執(zhí)行命令:

docker compose up -d  # 自動構建鏡像并啟動容器

場景 2:先 Build 后 Compose

  1. 手動構建鏡像

docker build -t my-app:1.0 .
  1. 在 Compose 中引用已有鏡像

services:
  webapp:
    image: my-app:1.0  # 直接使用已構建的鏡像
    ports:
      - "8000:8000"
  1. 啟動服務

docker compose up -d

3. 關鍵區(qū)別

維度docker builddocker compose
層級底層命令(鏡像構建)高層工具(應用編排)
依賴只需要 Dockerfile依賴 docker-compose.yml 和鏡像
是否管理容器是(創(chuàng)建、啟動、停止容器)
網絡/卷不涉及自動管理網絡和存儲卷

4. 為什么需要協(xié)作?

  • 開發(fā)效率
    docker compose 通過一個命令即可完成鏡像構建(如果需要)和容器啟動,簡化流程。

  • 環(huán)境一致性
    docker-compose.yml 可定義完整的服務依賴(如數據庫先于應用啟動),避免手動操作錯誤。

  • 復用性
    構建好的鏡像(docker build 生成)可被多個 Compose 項目共享。

5. 實際工作流示例

開發(fā)階段

  1. 編寫 Dockerfile 定義應用環(huán)境。

  2. 編寫 docker-compose.yml 配置服務依賴。

  3. 運行:

docker compose up --build  # 強制重新構建鏡像并啟動

生產部署

  1. 構建生產鏡像:

docker build -t my-app:prod .

通過 Compose 部署:

# docker-compose.prod.yml
services:
  app:
    image: my-app:prod  # 直接使用構建好的鏡像
    deploy:
      replicas: 3
  1. 啟動:

docker compose -f docker-compose.prod.yml up -d

總結

  • docker build 是構建鏡像的工具,docker compose 是編排多容器應用的工具。

  • Compose 可以依賴 Build(通過 build: 字段),但也可以直接使用已存在的鏡像(通過 image: 字段)。

  • 兩者結合使用能實現從代碼到完整應用環(huán)境的無縫管理。

到此這篇關于docker build 和compose 學習筆記的文章就介紹到這了,更多相關docker build 和compose內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • win10子系統(tǒng)ubuntu(WSL) 安裝Docker的教程(圖文詳解)

    win10子系統(tǒng)ubuntu(WSL) 安裝Docker的教程(圖文詳解)

    現在 Docker 有專門的 Win10 專業(yè)版系統(tǒng)的安裝包,需要開啟Hyper-V,具體開啟方法文中給大家介紹的很詳細,這篇文章主要介紹了win10子系統(tǒng)ubuntu(WSL) 安裝Docker,需要的朋友可以參考下
    2019-10-10
  • docker容器添加對外映射端口的實現

    docker容器添加對外映射端口的實現

    本文主要介紹了docker容器添加對外映射端口的實現 ,從而實現容器與外部網絡的通信,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-09-09
  • Docker給容器添加新端口映射的兩種方法及常用命令舉例詳解

    Docker給容器添加新端口映射的兩種方法及常用命令舉例詳解

    Docker是一個開源的應用容器引擎,允許開發(fā)者打包和發(fā)布應用到任何流行的Linux機器上,并實現虛擬化,這篇文章主要介紹了Docker給容器添加新端口映射的兩種方法及常用命令的相關資料,需要的朋友可以參考下
    2025-03-03
  • docker容器的一些常見命令小結

    docker容器的一些常見命令小結

    Docker是目前最流行的容器化平臺之一,它提供了一種輕量級的虛擬化解決方案,使得應用程序的部署和管理變得更加便捷和高效,這篇文章主要給大家總結介紹了關于docker容器的一些常見命令,需要的朋友可以參考下
    2024-01-01
  • docker之點到點的容器網絡的配置

    docker之點到點的容器網絡的配置

    本篇文章主要介紹了docker之點到點的容器網絡的配置,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • docker volume刪除卷的操作

    docker volume刪除卷的操作

    這篇文章主要介紹了docker volume刪除卷的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • docker開通2375端口防漏洞問題

    docker開通2375端口防漏洞問題

    這篇文章主要介紹了docker開通2375端口防漏洞問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 詳解ubuntu 16.04安裝docker教程

    詳解ubuntu 16.04安裝docker教程

    本篇文章主要介紹了ubuntu 16.小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 詳解Docker守護進程的配置及日志

    詳解Docker守護進程的配置及日志

    這篇文章主要介紹了詳解Docker守護進程的配置及日志,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Docker容器時區(qū)調整操作

    Docker容器時區(qū)調整操作

    這篇文章主要介紹了Docker容器時區(qū)調整操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論