亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2024年02月18日 08:33:51   作者:會飛的喵喵  
這篇文章主要介紹了Dockerfile制作鏡像的常用指令,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(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,但更強大,支持 URL 和解壓縮操作
WORKDIR設(shè)置工作目錄
ENV設(shè)置環(huán)境變量
ARG定義構(gòu)建時的參數(shù)
EXPOSE聲明容器運行時要監(jiān)聽的端口
VOLUME創(chuàng)建掛載點,用于持久化數(shù)據(jù)
CMD指定容器啟動時要運行的默認(rèn)命令
ENTRYPOINT配置容器啟動時執(zhí)行的命令
LABEL添加元數(shù)據(jù),用于標(biāo)記鏡像
USER設(shè)置容器中運行命令的用戶
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òu)建階段,并為后續(xù)指令設(shè)置基礎(chǔ)鏡像。因此,一個有效的 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ù)為鍵值對的形式。
LABEL <key>=<value> <key>=<value> <key>=<value> ...

比如

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

4. COPY 指令

  • 用于從 docker 主機復(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ù)制文件。這個參數(shù)可以讓你從一個鏡像或者構(gòu)建階段中復(fù)制文件到當(dāng)前的鏡像。這對于多階段構(gòu)建非常有用。
  • 案例:

創(chuàng)建一個 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ò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"。
  • 將主機中的當(dāng)前目錄下的 index.html 文件拷貝到容器的 /data/web/html/ 目錄中。

5. ENV 指令

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

其中 <key> 是環(huán)境變量的名稱,<value> 是環(huán)境變量的值。這種格式用于設(shè)置單個環(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è)置為工作目錄的路徑??梢允褂媒^對路徑或相對路徑。如果指定的路徑不存在,WORKDIR 指令將創(chuàng)建該目錄。

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

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

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

7. ADD

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

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 .

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

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 命令,例如安裝軟件包、運行腳本、創(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è)置容器啟動時默認(rèn)執(zhí)行的命令。它定義了容器啟動時執(zhí)行的主要命令,但是可以被 Docker 命令行中的 docker run 中的參數(shù)覆蓋。

CMD command param1 param2

10. EXPOSE

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

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

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

11. ENTRYPOINT

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

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

比如:

ENTRYPOINT nginx -g 'daemon off;'

12. VOLUME

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

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

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

比如:

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

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

相關(guān)文章

  • 使用Docker Swarm 搭建Wordpress的方法

    使用Docker Swarm 搭建Wordpress的方法

    這篇文章主要介紹了使用Docker Swarm 搭建Wordpress的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Docker容器沒有權(quán)限寫入宿主機目錄的解決方案

    Docker容器沒有權(quán)限寫入宿主機目錄的解決方案

    這篇文章主要介紹了Docker容器沒有權(quán)限寫入宿主機目錄的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • docker-compose+nginx部署前后端分離的項目實踐

    docker-compose+nginx部署前后端分離的項目實踐

    本文主要介紹了docker-compose?+?nginx部署前后端分離的項目,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 阿里云安裝docker全過程

    阿里云安裝docker全過程

    這篇文章主要介紹了阿里云安裝docker全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Spring Boot應(yīng)用通過Docker發(fā)布部署的流程分析

    Spring Boot應(yīng)用通過Docker發(fā)布部署的流程分析

    將Spring Boot項目部署到docker中有兩種方法,手動部署和插件部署,本文通過實例代碼介紹了idea創(chuàng)建spring boot項目的詳細(xì)過程,感興趣的朋友一起看看吧
    2021-09-09
  • Docker進入容器運行命令的詳細(xì)指南

    Docker進入容器運行命令的詳細(xì)指南

    Docker 是一個開源的容器化平臺,廣泛應(yīng)用于開發(fā)和生產(chǎn)環(huán)境中,它允許開發(fā)者打包應(yīng)用程序及其依賴項到容器中,本文將詳細(xì)介紹如何通過 Docker 進入容器內(nèi)部運行命令,探討不同的場景和工具,并提供相關(guān)代碼示例,需要的朋友可以參考下
    2024-11-11
  • Docker查看是否開機自啟及容器自啟動設(shè)置

    Docker查看是否開機自啟及容器自啟動設(shè)置

    Docker是當(dāng)前最流行的容器技術(shù),通過運用容器打包應(yīng)用程序并部署到生產(chǎn)環(huán)境中,可大大提高部署的速度和可靠性,下面這篇文章主要給大家介紹了關(guān)于Docker查看是否開機自啟及容器自啟動設(shè)置的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Docker下安裝部署Clickhouse及其遠(yuǎn)程訪問方式

    Docker下安裝部署Clickhouse及其遠(yuǎn)程訪問方式

    文章介紹了如何遠(yuǎn)程拉取和安裝ClickHouse Docker鏡像,配置和部署ClickHouse容器,并通過DataGrip遠(yuǎn)程訪問ClickHouse
    2024-11-11
  • Docker遠(yuǎn)程連接設(shè)置的實現(xiàn)示例

    Docker遠(yuǎn)程連接設(shè)置的實現(xiàn)示例

    本文主要介紹了Docker遠(yuǎn)程連接設(shè)置的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • docker compose安裝es+kibana 8.12.2的詳細(xì)過程

    docker compose安裝es+kibana 8.12.2的詳細(xì)過程

    因云平臺需要改造,es7升級為es8,所以記錄一下,es8需要開啟ssl認(rèn)證,需要配置證書,全本帶你用docker安裝,便于后面es8的學(xué)習(xí),這篇文章主要介紹了docker compose安裝es+kibana 8.12.2的詳細(xì)過程,感興趣的朋友跟隨小編一起看看吧
    2024-05-05

最新評論