最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Dockerfile制作鏡像的常用指令詳解

 更新時(shí)間:2024年02月18日 08:33:51   作者:會(huì)飛的喵喵  
這篇文章主要介紹了Dockerfile制作鏡像的常用指令,文中通過代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下

1.Dockerfile 指令清單

更多更詳細(xì)指令:官網(wǎng) Dockerfile reference | Docker Docs

Dockerfile 指令功能
FROM指定基礎(chǔ)鏡像
RUN在鏡像構(gòu)建過程中執(zhí)行命令
COPY將文件或目錄從構(gòu)建環(huán)境復(fù)制到鏡像中
ADD類似于 COPY,但更強(qiáng)大,支持 URL 和解壓縮操作
WORKDIR設(shè)置工作目錄
ENV設(shè)置環(huán)境變量
ARG定義構(gòu)建時(shí)的參數(shù)
EXPOSE聲明容器運(yùn)行時(shí)要監(jiān)聽的端口
VOLUME創(chuàng)建掛載點(diǎn),用于持久化數(shù)據(jù)
CMD指定容器啟動(dòng)時(shí)要運(yùn)行的默認(rèn)命令
ENTRYPOINT配置容器啟動(dòng)時(shí)執(zhí)行的命令
LABEL添加元數(shù)據(jù),用于標(biāo)記鏡像
USER設(shè)置容器中運(yùn)行命令的用戶
SHELL配置 shell 類型

在包含 Dockerfile 文件的目錄中執(zhí)行以下命令:

docker build -t <image_name>:<tag>  <path_to_dockerfile_directory>
  • -t <image_name>:<tag> 用于指定構(gòu)建的鏡像名稱及標(biāo)簽。
  • <path_to_dockerfile_directory> 是 Dockerfile 所在的目錄路徑。

2. FROM 指令

FROM 指令初始化一個(gè)新的構(gòu)建階段,并為后續(xù)指令設(shè)置基礎(chǔ)鏡像。因此,一個(gè)有效的 Dockerfile 必須以 FROM 指令開頭。鏡像可以是任何有效的鏡像。

FROM [--platform=<platform>] <image> [AS <name>]
  • 參數(shù)
    • <platform>: 構(gòu)建的 cpu 架構(gòu),如 Linux/amd 64,Linux/arm 64。
    • <image>: 指定 base image 的名稱。
    • AS <name>: 指定構(gòu)建步驟的名稱。

3. LABEL 指令

  • 為鏡像添加元數(shù)據(jù),元數(shù)據(jù)為鍵值對(duì)的形式。
LABEL <key>=<value> <key>=<value> <key>=<value> ...

比如

LABEL author="xiaoming" version="1.0" desc="create ubuntu demo1"

4. COPY 指令

  • 用于從 docker 主機(jī)復(fù)制新文件或者目錄至創(chuàng)建的新鏡像指定路徑中。
COPY [--chown=<user>:<group>] [--chmod=<perms>] <src>... <dest>
# 或
COPY [--chown=<user>:<group>] [--chmod=<perms>] ["<src>",... "<dest>"]
  • <src> 是構(gòu)建環(huán)境中要復(fù)制的文件或目錄的路徑。
  • <dest> 是要將文件或目錄復(fù)制到容器中的目標(biāo)路徑。

除了基本的格式之外,COPY 指令還支持一些參數(shù)來指定復(fù)制行為:

  • -chown=<user>:<group>:設(shè)置文件的所有者和組。例如 -chown=root:root。
  • --from=<source_stage>:從之前的構(gòu)建階段(指定的構(gòu)建階段或者鏡像)復(fù)制文件。這個(gè)參數(shù)可以讓你從一個(gè)鏡像或者構(gòu)建階段中復(fù)制文件到當(dāng)前的鏡像。這對(duì)于多階段構(gòu)建非常有用。
  • 案例:

創(chuàng)建一個(gè) Dockerfile 文件,內(nèi)容如下。

FROM ubuntu:22.04 as demo1
LABEL author="xiaoming" version="1.0" desc="create ubuntu demo1"
COPY ./index.html /data/web/html/ 
  • 使用 FROM ubuntu:22.04 as demo1 指令,表示初始化一個(gè)新的構(gòu)建階段,并以 ubuntu:22.04 鏡像作為基礎(chǔ)鏡像,并將該階段命名為 demo1。
  • 使用 LABEL 指令,添加元數(shù)據(jù)信息。author="xiaoming" 表示作者為 "xiaoming";version="1.0" 表示版本為 "1.0";desc="create ubuntu demo1" 表示描述為 "create ubuntu demo 1"。
  • 將主機(jī)中的當(dāng)前目錄下的 index.html 文件拷貝到容器的 /data/web/html/ 目錄中。

5. ENV 指令

ENV <key1>=<value1> <key2>=<value2> ...

其中 <key> 是環(huán)境變量的名稱,<value> 是環(huán)境變量的值。這種格式用于設(shè)置單個(gè)環(huán)境變量,也可以使用通配符。

FROM ubuntu:22.04 as demo1
LABEL author="xiaoming" version="1.0" desc="create ubuntu demo1"
ENV MYROOTDIR=/data/web/html/
# 使用通配符引用 MYROOTDIR
COPY ./index.html ${MYROOTDIR} 
ENV MYTEST=1

6.WORKDIR

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

WORKDIR <directory>

其中 <directory> 是要設(shè)置為工作目錄的路徑。可以使用絕對(duì)路徑或相對(duì)路徑。如果指定的路徑不存在,WORKDIR 指令將創(chuàng)建該目錄。

FROM ubuntu:22.04 as demo1
LABEL author="xiaoming" version="1.0" desc="create ubuntu demo1"
# 指定工作目錄
WORKDIR /data/src

構(gòu)建這個(gè)鏡像,并啟動(dòng)。

WORKDIR 指令的作用是設(shè)置容器中執(zhí)行后續(xù)命令的默認(rèn)工作目錄。它影響接下來所有命令執(zhí)行的上下文環(huán)境,使得在Docker 容器中執(zhí)行命令時(shí)不必每次都指定完整的路徑。

7. ADD

ADD 指令用于將本地文件、目錄、或遠(yuǎn)程文件 URL 添加到鏡像中。它類似于 COPY 指令,但具有更多的功能,比如會(huì)它可以解壓和下載。

ADD <source> <destination>

其中 <source> 是要添加到鏡像中的文件、目錄或 URL,而 <destination> 是文件系統(tǒng)中的目標(biāo)路徑。

FROM ubuntu:22.04 as demo1

LABEL author="xiaoming" version="1.0" desc="create ubuntu demo1"

WORKDIR /data/src

# 將nginx的源代碼下載到當(dāng)前目錄(/data/src)

ADD https://nginx.org/download/nginx-1.24.0.tar.gz .

也可以再進(jìn)行解壓(過程就不展示了)。

FROM ubuntu:22.04 as demo1

LABEL author="xiaoming" version="1.0" desc="create ubuntu demo1"

WORKDIR /data/src

# 將nginx的源代碼下載到當(dāng)前目錄(/data/src)

ADD https://nginx.org/download/nginx-1.24.0.tar.gz .

# 解壓到當(dāng)前目錄(/data/src)

ADD ./nginx-1.24.0.tar.gz .

8.RUN

RUN 指令用于在鏡像構(gòu)建過程中執(zhí)行命令。它可以執(zhí)行任何有效的 shell 命令、可執(zhí)行文件或腳本。其基本格式為:

RUN <command> && <command> ……

其中 <command> 是要執(zhí)行的命令。在 Dockerfile 中可以是任何合法的 shell 命令,例如安裝軟件包、運(yùn)行腳本、創(chuàng)建目錄等。

FROM ubuntu:22.04 as demo1
LABEL author="xiaoming" version="1.0" desc="create ubuntu demo1"
WORKDIR /data/src
# 將nginx的源代碼下載到當(dāng)前目錄(/data/src)
ADD https://nginx.org/download/nginx-1.24.0.tar.gz .
# 執(zhí)行 cd 與 tar 命令
RUN cd /data/src && tar zxvf nginx-1.24.0.tar.gz

9. CMD

CMD 是 Dockerfile 中的一條指令,用于設(shè)置容器啟動(dòng)時(shí)默認(rèn)執(zhí)行的命令。它定義了容器啟動(dòng)時(shí)執(zhí)行的主要命令,但是可以被 Docker 命令行中的 docker run 中的參數(shù)覆蓋。

CMD command param1 param2

10. EXPOSE

EXPOSE 是 Dockerfile 中的一條指令,用于聲明容器運(yùn)行時(shí)要監(jiān)聽的端口。這個(gè)指令并不會(huì)實(shí)際打開端口或者創(chuàng)建端口映射,它只是告訴 Docker 容器內(nèi)部運(yùn)行的應(yīng)用程序應(yīng)該監(jiān)聽哪些端口。

EXPOSE <port> [<port>/<protocol>...]

其中 <port> 是要暴露的端口號(hào),<protocol> 是要使用的網(wǎng)絡(luò)協(xié)議,通常是 tcpudp。如果未指定協(xié)議,則默認(rèn)為 tcp

11. ENTRYPOINT

ENTRYPOINT 是 Dockerfile 中的一條指令,用于配置容器啟動(dòng)時(shí)執(zhí)行的命令。與 CMD 不同,ENTRYPOINT 指令設(shè)置的命令不會(huì)被 Docker 命令行中的 docker run 中的命令覆蓋,而是會(huì)作為容器的主要命令執(zhí)行。

ENTRYPOINT ["executable", "param1", "param2"]

比如:

ENTRYPOINT nginx -g 'daemon off;'

12. VOLUME

用于創(chuàng)建一個(gè)掛載點(diǎn),并將該掛載點(diǎn)中的數(shù)據(jù)持久化保存。

VOLUME ["<路徑>","<路徑>","<路徑>"……]

其中 <路徑> 是要掛載的目錄路徑。該目錄路徑可以是絕對(duì)路徑,也可以是相對(duì)于容器內(nèi)文件系統(tǒng)的路徑。

比如:

VOLUME ["/var/log", "/var/db"]

到此這篇關(guān)于Dockerfile制作鏡像的常用指令詳解的文章就介紹到這了,更多相關(guān)Dockerfile制作鏡像指令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker下安裝ElasticSearch和Kibana的示例代碼

    Docker下安裝ElasticSearch和Kibana的示例代碼

    這篇文章主要介紹了Docker下安裝ElasticSearch和Kibana的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • docker compose和docker-compose的區(qū)別及使用說明

    docker compose和docker-compose的區(qū)別及使用說明

    Docker Compose V2 是 Docker Compose V1 的替代品,使用 Go 語言編譯,性能更好,資源占用更低,新特性包括 Watch 模式、等待服務(wù)就緒、環(huán)境隔離、更好的依賴控制、并行構(gòu)建和 DryRun 模式,V2 兼容 V1 的 compose 文件格式,遷移簡單
    2026-01-01
  • 關(guān)于docker清理Overlay2占用磁盤空間的問題(親測(cè)有效)

    關(guān)于docker清理Overlay2占用磁盤空間的問題(親測(cè)有效)

    使用Docker過程中,長時(shí)間運(yùn)行服務(wù)容器,導(dǎo)致不能進(jìn)行上傳文件等操作,今天通過本文給大家詳細(xì)介紹下docker清理Overlay2占用磁盤空間的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2022-03-03
  • LINUX中Docker?Swarm的介紹和詳細(xì)使用教程

    LINUX中Docker?Swarm的介紹和詳細(xì)使用教程

    Docker?Swarm是Docker的集群管理工具,將多個(gè)節(jié)點(diǎn)統(tǒng)一管理,支持服務(wù)部署、擴(kuò)縮容與滾動(dòng)更新,適用于高可用分布式應(yīng)用,本文給大家介紹LINUX中Docker?Swarm的介紹和詳細(xì)使用教程,感興趣的朋友一起看看吧
    2025-09-09
  • Docker Compose和直接使用docker run的區(qū)別及說明

    Docker Compose和直接使用docker run的區(qū)別及說明

    DockerRun用于單個(gè)容器的啟動(dòng)和運(yùn)行,適合快速測(cè)試和學(xué)習(xí),DockerCompose用于定義和運(yùn)行多容器應(yīng)用,通過YAML文件配置并自動(dòng)管理服務(wù)依賴和網(wǎng)絡(luò),適合開發(fā)環(huán)境和微服務(wù)架構(gòu)
    2025-12-12
  • Docker通過容器生成鏡像提交DockerCommit詳解

    Docker通過容器生成鏡像提交DockerCommit詳解

    這篇文章主要介紹了Docker通過容器生成鏡像提交DockerCommit的詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-09-09
  • 如何使用Docker部署SearXNG

    如何使用Docker部署SearXNG

    本文介紹了如何使用DockerCompose部署SearXNG搜索引擎,并提供了配置代理、修改搜索格式和調(diào)用API的方法,感興趣的朋友一起看看吧
    2025-02-02
  • docker-compose安裝RabbitMQ及插件操作步驟

    docker-compose安裝RabbitMQ及插件操作步驟

    這篇文章主要為大家介紹了docker-compose安裝RabbitMQ及插件操作步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Docker Compose 與 Harbor 私有倉庫詳解

    Docker Compose 與 Harbor 私有倉庫詳解

    本文將探討Docker Compose多容器編排工具與Harbor企業(yè)級(jí)私有倉庫的核心技術(shù),幫助讀者掌握從容器管理到鏡像安全存儲(chǔ)的完整解決方案,感興趣的朋友一起看看吧
    2025-06-06
  • Docker掛載資料卷保存MySQL數(shù)據(jù)

    Docker掛載資料卷保存MySQL數(shù)據(jù)

    這篇文章介紹了Docker掛載資料卷保存MySQL數(shù)據(jù)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01

最新評(píng)論

苗栗县| 房山区| 昌吉市| 诏安县| 赣州市| 峨山| 海宁市| 五常市| 米林县| 寻甸| 雷州市| 柳江县| 汉川市| 永胜县| 肃宁县| 呼伦贝尔市| 昭觉县| 马公市| 鄂托克旗| 芦山县| 莎车县| 泾源县| 区。| 西藏| 凯里市| 东源县| 阜新市| 囊谦县| 菏泽市| 萝北县| 乌审旗| 美姑县| 白山市| 三台县| 扎兰屯市| 扶风县| 阿拉善左旗| 双桥区| 延边| 正蓝旗| 固镇县|