国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Docker】如何編寫Dockerfile,深入理解 Dockerfile:構(gòu)建精簡(jiǎn)且高效的容器鏡像

這篇具有很好參考價(jià)值的文章主要介紹了【Docker】如何編寫Dockerfile,深入理解 Dockerfile:構(gòu)建精簡(jiǎn)且高效的容器鏡像。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Docker 是一種輕量級(jí)的容器化技術(shù),使得應(yīng)用程序和它們的依賴可以被打包到一個(gè)容器中,方便在不同環(huán)境中運(yùn)行。Dockerfile 是用于定義 Docker 鏡像的文本文件,其中包含了一系列的指令,這些指令描述了鏡像中應(yīng)該包含哪些內(nèi)容和如何配置。

【Docker】如何編寫Dockerfile,深入理解 Dockerfile:構(gòu)建精簡(jiǎn)且高效的容器鏡像,Docker,docker,容器,鏡像,構(gòu)建Dockerfile

1. 準(zhǔn)備工作

在開始編寫 Dockerfile 之前,確保你已經(jīng)在系統(tǒng)中安裝了 Docker。你可以從 Docker 官方網(wǎng)站 獲取安裝步驟,或者閱讀這里:https://blog.csdn.net/x1131230123/article/details/118032295。

2. 創(chuàng)建 Dockerfile

首先,創(chuàng)建一個(gè)空的目錄用于存放 Dockerfile 和相關(guān)文件。在該目錄下創(chuàng)建一個(gè)文本文件并命名為 Dockerfile。

3. 編寫基本結(jié)構(gòu)

一個(gè)簡(jiǎn)單的 Dockerfile 通常包含以下基本結(jié)構(gòu):

# 使用基礎(chǔ)鏡像
FROM base_image:tag

# 維護(hù)者信息
MAINTAINER your_name

# 設(shè)置工作目錄
WORKDIR /app

# 復(fù)制本地文件到容器中
COPY ./local_files /app

# 安裝依賴
RUN apt-get update && apt-get install -y dependency_package

# 暴露端口
EXPOSE 8080

# 定義啟動(dòng)命令
CMD ["command_to_run"]

以上是一個(gè)簡(jiǎn)單的 Dockerfile,接下來(lái)我們逐步介紹每個(gè)指令的作用。

4. 指令詳解

FROM

FROM 指令用于指定基礎(chǔ)鏡像,即你的應(yīng)用程序?qū)⒃谄浠A(chǔ)上構(gòu)建。可以選擇官方鏡像,也可以選擇其他已有的鏡像。例如:

FROM ubuntu:20.04

MAINTAINER

MAINTAINER 指令用于設(shè)置維護(hù)者的信息。

MAINTAINER Your Name <your.email@example.com>

WORKDIR

WORKDIR 指令用于設(shè)置工作目錄,即在容器中執(zhí)行后續(xù)指令時(shí)的工作目錄。

WORKDIR /app

COPY

COPY 指令用于將本地文件復(fù)制到容器中??梢詮?fù)制單個(gè)文件,也可以復(fù)制整個(gè)目錄。

COPY ./local_files /app

RUN

RUN 指令用于在鏡像中執(zhí)行命令,例如安裝依賴。

RUN apt-get update && apt-get install -y dependency_package

EXPOSE

EXPOSE 指令用于聲明容器運(yùn)行時(shí)將監(jiān)聽的端口。這只是一個(gè)元數(shù)據(jù),實(shí)際運(yùn)行時(shí)需要使用 -p 選項(xiàng)映射端口。

EXPOSE 8080

CMD

CMD 指令用于定義容器啟動(dòng)時(shí)執(zhí)行的默認(rèn)命令。

CMD ["command_to_run"]

5. 實(shí)戰(zhàn)演練

接下來(lái),我們通過(guò)一個(gè)簡(jiǎn)單的 Node.js 應(yīng)用演示如何編寫 Dockerfile。

FROM node:14

WORKDIR /app

COPY package.json package-lock.json /app/

RUN npm install

COPY . /app/

EXPOSE 3000

CMD ["npm", "start"]

在上述示例中,我們使用 Node.js 的官方鏡像作為基礎(chǔ)鏡像,設(shè)置工作目錄,復(fù)制 package.jsonpackage-lock.json 安裝依賴,復(fù)制所有文件到工作目錄,聲明監(jiān)聽端口為 3000,并定義啟動(dòng)命令為 npm start。

6. 構(gòu)建鏡像和運(yùn)行容器

保存好 Dockerfile 后,可以使用以下命令構(gòu)建鏡像。在Docker中,docker build -t my-node-app . 中的小數(shù)點(diǎn)代表當(dāng)前上下文的路徑。這個(gè)路徑是構(gòu)建過(guò)程中 Docker 引擎查找 Dockerfile 和其他構(gòu)建上下文的文件的位置。

具體來(lái)說(shuō),docker build 命令會(huì)將指定的路徑(這里是小數(shù)點(diǎn) .)作為構(gòu)建上下文。構(gòu)建上下文是構(gòu)建過(guò)程中用來(lái)查找 Dockerfile 和其他構(gòu)建文件的目錄。在這個(gè)例子中,. 表示當(dāng)前目錄,即你運(yùn)行 docker build 命令的目錄。

當(dāng)你運(yùn)行 docker build -t my-node-app . 時(shí),Docker 引擎會(huì)在當(dāng)前目錄下尋找 Dockerfile 文件,并將該目錄及其所有內(nèi)容作為構(gòu)建上下文。這樣,Dockerfile 就能夠引用當(dāng)前目錄中的文件,并將它們添加到 Docker 鏡像中。在給定目錄之外的文件是不能通過(guò)Docker指令操作的,比如想用COPY去拷貝別的目錄的文件到鏡像中。

docker build -t my-node-app .

然后,可以運(yùn)行容器:

docker run -p 3000:3000 my-node-app

現(xiàn)在,你的 Node.js 應(yīng)用將在 Docker 容器中運(yùn)行,并可以通過(guò) http://localhost:3000 訪問。

CMD 和 ENTRYPOINT 之間的區(qū)別

CMD 指令

CMD 指令用于定義容器啟動(dòng)時(shí)執(zhí)行的默認(rèn)命令。它有以下幾種形式:

  1. CMD [“executable”,“param1”,“param2”] (exec 格式,推薦): 在指定的可執(zhí)行文件內(nèi)運(yùn)行參數(shù)。

    CMD ["npm", "start"]
    
  2. CMD [“param1”,“param2”] (作為 ENTRYPOINT 的默認(rèn)參數(shù)): 提供給 ENTRYPOINT 指令的默認(rèn)參數(shù)。

    CMD ["npm", "start"]
    
  3. CMD command param1 param2 (shell 格式): 在 /bin/sh -c 中執(zhí)行命令。

    CMD npm start
    

CMD 的主要作用是為容器提供默認(rèn)的執(zhí)行命令,但可以被在運(yùn)行容器時(shí)指定的命令覆蓋。

ENTRYPOINT 指令

ENTRYPOINT 指令用于配置容器啟動(dòng)時(shí)執(zhí)行的默認(rèn)可執(zhí)行文件。它有以下幾種形式:

  1. ENTRYPOINT [“executable”, “param1”, “param2”] (exec 格式,推薦): 在指定的可執(zhí)行文件內(nèi)運(yùn)行參數(shù)。

    ENTRYPOINT ["npm", "start"]
    
  2. ENTRYPOINT command param1 param2 (shell 格式): 在 /bin/sh -c 中執(zhí)行命令。

    ENTRYPOINT npm start
    

使用 ENTRYPOINT 的主要目的是將容器配置為像可執(zhí)行程序一樣運(yùn)行。它的參數(shù)可以被 CMD 覆蓋,但不會(huì)被完全替代。如果給 docker run 提供了參數(shù),它們將追加到 ENTRYPOINT 的參數(shù)之后。

區(qū)別總結(jié)

  • CMD 提供容器默認(rèn)的執(zhí)行命令,可以被運(yùn)行容器時(shí)傳入的命令覆蓋。
  • ENTRYPOINT 配置容器啟動(dòng)時(shí)執(zhí)行的默認(rèn)可執(zhí)行文件,可以被運(yùn)行容器時(shí)傳入的命令追加到其參數(shù)之后。

綜合來(lái)說(shuō),CMD 通常用于提供應(yīng)用的默認(rèn)啟動(dòng)命令,而 ENTRYPOINT 通常用于配置容器以類似可執(zhí)行程序的方式運(yùn)行。你也可以同時(shí)使用它們,以 ENTRYPOINT 提供基礎(chǔ)執(zhí)行文件,而 CMD 提供默認(rèn)參數(shù)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-821031.html

到了這里,關(guān)于【Docker】如何編寫Dockerfile,深入理解 Dockerfile:構(gòu)建精簡(jiǎn)且高效的容器鏡像的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【編寫DockerFile構(gòu)建自己的容器】

    【編寫DockerFile構(gòu)建自己的容器】

    一、創(chuàng)建自己的CentOS (1)、編寫自己的配置文件 (2)、生成目標(biāo)鏡像 docker build -f /home/dockerfile1/docker-centos -t docker-centos:1.0 . 命令: docker build -f 文件路徑 -t 鏡像名:【Tag】 (3)、測(cè)試運(yùn)行 系統(tǒng)的原生鏡像 我們制作的鏡像 (4)、查看docker的構(gòu)建流程 docker history eeb6ee3f44

    2024年02月16日
    瀏覽(21)
  • 如何在 Linux 命令行下玩轉(zhuǎn) Docker——如何使用 Dockerfile 來(lái)構(gòu)建和運(yùn)行容器鏡像

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) Docker 是一款開源的容器化技術(shù),它利用 Linux 內(nèi)核的容器特性,將應(yīng)用部署到獨(dú)立的進(jìn)程環(huán)境中?;谌萜骷夹g(shù)可以極大地提高開發(fā)者和運(yùn)維人員的效率,降低部署、測(cè)試和生產(chǎn)環(huán)節(jié)中的成本,有效地實(shí)現(xiàn)云計(jì)算資源的彈性伸縮。 本文主要介紹

    2024年02月07日
    瀏覽(105)
  • 編寫.NET Dockerfile文件構(gòu)建鏡像

    編寫.NET Dockerfile文件構(gòu)建鏡像

    創(chuàng)建一個(gè)WebApi項(xiàng)目,并且創(chuàng)建一個(gè)Dockerfile空文件,添加以下代碼,7.0代表的你項(xiàng)目使用的SDK的版本,構(gòu)建的時(shí)候也需要選擇好指定的鏡像tag 我們一步一步來(lái)進(jìn)行講解,首先第一步,F(xiàn)ROM指定了一個(gè)mcr.microsoft.com/dotnet/aspnet:7.0鏡像,并且AS別名base,這一步是選擇aspnet:7.0作為基礎(chǔ)

    2024年01月23日
    瀏覽(15)
  • 【Docker】docker入門之dockerfile編寫

    嗨嘍,大家好。本篇文章主要記錄博主在學(xué)習(xí)docker以及編寫dockerfile的過(guò)程,記錄使用docker過(guò)程中遇到的問題。 Docker 是一種開源的容器化平臺(tái),用于構(gòu)建、部署和運(yùn)行應(yīng)用程序。它提供了一種輕量級(jí)、靈活和可移植的方式來(lái)打包應(yīng)用程序及其依賴項(xiàng),并創(chuàng)建一個(gè)獨(dú)立、隔離的

    2024年02月10日
    瀏覽(37)
  • 【docker】基于dockerfile編寫LNMP

    【docker】基于dockerfile編寫LNMP

    目錄 一、基礎(chǔ)環(huán)境準(zhǔn)備 二、部署nginx(容器IP為172.18.0.10)? 1、整個(gè)Dockerfile文件內(nèi)容 ?2、配置nginx.conf文件 ?3、構(gòu)建鏡像 ?編輯?三、部署mysql 1、整個(gè)Docker文件內(nèi)容 2、準(zhǔn)備my.conf文件? ?3、生成鏡像 ?4、啟動(dòng)鏡像容器 ?5、驗(yàn)證mysql ?四、PHP部署 1、整個(gè)Dockerfile文件內(nèi)容 2、

    2024年02月12日
    瀏覽(23)
  • 【docker】dockerfile構(gòu)建鏡像

    【docker】dockerfile構(gòu)建鏡像

    Dockerfile 是一個(gè)文本文件,文件中包含了一條條的指令(instruction),用于構(gòu)建鏡像。每一條指定構(gòu)建一層鏡像,因此每一條指令的內(nèi)容,就是描述該層鏡像應(yīng)當(dāng)如何構(gòu)建。 1、dockerfile是 自定義鏡像 的一套規(guī)則 2、dockerfile由多條指令構(gòu)成,dockerfile的每一條指令都會(huì)對(duì)應(yīng)于do

    2024年02月05日
    瀏覽(28)
  • 【Docker】Dockerfile構(gòu)建最小鏡像

    【Docker】Dockerfile構(gòu)建最小鏡像

    接下來(lái)看看由輝輝所寫的關(guān)于Docker的相關(guān)操作吧 目錄 ????Welcome 的Huihui\\\'s Code World ! !???? 前言 一.Dockerfile是什么 二.Dockerfile的基本結(jié)構(gòu) 三.基礎(chǔ)鏡像的選擇 四. 自定義鏡像 0.jar包的準(zhǔn)備 1.jar同級(jí)目錄下創(chuàng)建Dockerfile文件 2.創(chuàng)建鏡像 3.運(yùn)行鏡像 (1)上傳jre (2)編輯Dockerdil

    2024年01月17日
    瀏覽(31)
  • Docker之Dockerfile構(gòu)建鏡像

    Docker之Dockerfile構(gòu)建鏡像

    ?? ????歡迎來(lái)到我的CSDN主頁(yè)!???? ??我是君易--鑨,一個(gè)在CSDN分享筆記的博主。???? ??推薦給大家我的博客專欄《Docker之Dockerfile構(gòu)建鏡像》。???? ??如果感覺還不錯(cuò)的話請(qǐng)給我關(guān)注加三連吧!???? ? ? ? ? 在上一期有關(guān)Docker的博客分享中我們學(xué)習(xí)到了Docker的一

    2024年01月18日
    瀏覽(28)
  • 【docker】Dockerfile構(gòu)建鏡像常用指令:

    一、常用命令: Dockerfile是一個(gè)文本文件,包含了一條條的指令,在基于指定的鏡像上,一條指令構(gòu)建一層,最終構(gòu)建出一個(gè)新的鏡像。 作用 備注 格式 FROM 指定基礎(chǔ)鏡像 指定基于哪個(gè)鏡像開始構(gòu)建 FROM image:tag MAINTAINER 作者信息 標(biāo)明這個(gè)dockerfile是誰(shuí)寫的(已棄用) M

    2024年02月13日
    瀏覽(36)
  • Docker-Dockerfile構(gòu)建鏡像

    Docker-Dockerfile構(gòu)建鏡像

    Dockerfile 是一個(gè)文本格式的配置文件, 用戶可以使用 Dockerfile 來(lái)快速創(chuàng)建自定義的鏡像,另外,使用 Dockerfile 去構(gòu)建鏡像好比使用 pom 去構(gòu)建 maven 項(xiàng)目一樣,有異曲同工之妙 centos alpine 1. 空間大小差異, alpine 默認(rèn) 5M 左右, centos 等都在 200M 左右。 2. 默認(rèn)軟件包差異, alpin

    2024年01月17日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包