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

Dockerfile成長之路

這篇具有很好參考價值的文章主要介紹了Dockerfile成長之路。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


前言

隨著業(yè)務(wù)架構(gòu)的整改,針對非容器化業(yè)務(wù)全部進(jìn)行容器化改造,這就設(shè)計到了java寫的業(yè)務(wù)代碼構(gòu)建業(yè)務(wù)鏡像,并通過k8s發(fā)版,因此,就得學(xué)習(xí)如何使用dockerfile構(gòu)建后端業(yè)務(wù)鏡像,可能不止構(gòu)建后端代碼鏡像,例如前端寫的代碼也有可能構(gòu)建為鏡像。還有可能就是要在原有鏡像基礎(chǔ)上進(jìn)行二次封裝,例如:在原有的業(yè)務(wù)鏡像中封裝skywalking鏈路追蹤監(jiān)控、jvm監(jiān)控等等,后續(xù)就有示例。


一、Dockerfile是什么?

Dockerfile 是一個用來構(gòu)建鏡像的文本文件, Dockerfile內(nèi)容中包含了一條條構(gòu)建鏡像所需的指令和說明。最終采用docker build 命令通過dockerfile中指令構(gòu)建鏡像

二、基本指令

Dockerfile成長之路,docker與kubernetes,運維,dockerfile

1.dockerfile指令參數(shù)詳解

1.1 FROM 指定基礎(chǔ)鏡像,必須為第一個命令

格式:
	FROM <image>
	FROM <image>:<tag>
示例:
	FROM mysql:5.7
注意:
	tag是可選的,如果不使用tag時,會使用latest版本的基礎(chǔ)鏡像

1.2 MAINTAINER 鏡像維護(hù)者的信息

一般可以不用這個參數(shù),使得鏡像盡量小而輕
格式:
	MAINTAINER <name>
示例:
	MAINTAINER Yongxin Li
    MAINTAINER inspur_lyx@hotmail.com
    MAINTAINER Yongxin Li <inspur_lyx@hotmail.com>

1.3 COPY|ADD 添加本地文件到鏡像中

格式:
	COPY <src>... <dest>
示例:
    ADD hom* /mydir/          # 添加所有以"hom"開頭的文件
    ADD test relativeDir/     # 添加 "test" 到 `WORKDIR`/relativeDir/
    ADD test /absoluteDir/    # 添加 "test" 到 /absoluteDir/

1.4 WORKDIR 工作目錄

格式:
	WORKDIR /path/to/workdir
示例:
    WORKDIR /a  (這時工作目錄為/a)
注意:
	通過WORKDIR設(shè)置工作目錄后,Dockerfile中其后的命令RUN、CMD、ENTRYPOINT、ADD、COPY等命令都會在該目錄下執(zhí)行

1.5 RUN 構(gòu)建鏡像過程中執(zhí)行命令

格式:
	RUN <command>
示例:
    RUN yum install nginx
    RUN pip install django
    RUN mkdir test && rm -rf /var/lib/unusedfiles
注意:
	RUN指令創(chuàng)建的中間鏡像會被緩存,并會在下次構(gòu)建中使用。如果不想使用這些緩存鏡像,可以在構(gòu)建時指定--no-cache參數(shù),如:docker build --no-cache

1.6 CMD 構(gòu)建容器后調(diào)用,也就是在容器啟動時才進(jìn)行調(diào)用

格式:
    CMD ["executable","param1","param2"] (執(zhí)行可執(zhí)行文件,優(yōu)先)
    CMD ["param1","param2"] (設(shè)置了ENTRYPOINT,則直接調(diào)用ENTRYPOINT添加參數(shù))
    CMD command param1 param2 (執(zhí)行shell內(nèi)部命令)
示例:
    CMD ["/usr/bin/wc","--help"]
    CMD ping www.baidu.com
注意:
	CMD不同于RUN,CMD用于指定在容器啟動時所要執(zhí)行的命令,而RUN用于指定鏡像構(gòu)建時所要執(zhí)行的命令。

CMD不同于RUN,CMD用于指定在容器啟動時所要執(zhí)行的命令,而RUN用于指定鏡像構(gòu)建時所要執(zhí)行的命令。

1.7 ENTRYPOINT 設(shè)置容器初始化命令,使其可執(zhí)行化

格式:
    ENTRYPOINT ["executable", "param1", "param2"] (可執(zhí)行文件, 優(yōu)先)
    ENTRYPOINT command param1 param2 (shell內(nèi)部命令)
示例:
    ENTRYPOINT ["/usr/bin/wc","--help"]
    ENTRYPOINT ["sh","-c","sh bin/launch.sh start && tail -f start.log"]
注意:
	ENTRYPOINT與CMD非常類似,不同的是通過docker run執(zhí)行的命令不會覆蓋ENTRYPOINT,而docker run命令中指定的任何參數(shù),都會被當(dāng)做參數(shù)再次傳遞給ENTRYPOINT。Dockerfile中只允許有一個ENTRYPOINT命令,多指定時會覆蓋前面的設(shè)置,而只執(zhí)行最后的ENTRYPOINT指令

ENTRYPOINT與CMD非常類似,不同的是通過docker run執(zhí)行的命令不會覆蓋ENTRYPOINT,而docker run命令中指定的任何參數(shù),都會被當(dāng)做參數(shù)再次傳遞給ENTRYPOINT。Dockerfile中只允許有一個ENTRYPOINT命令,多指定時會覆蓋前面的設(shè)置,而只執(zhí)行最后的ENTRYPOINT指令

1.8 ENV 設(shè)置環(huán)境變量

格式:
    ENV <key> <value>
    ENV <key>=<value>
示例:
    ENV myName John
    ENV myCat=fluffy

1.9 EXPOSE 暴露容器端口

格式:
    EXPOSE <port> [<port>...]
示例:
    EXPOSE 80 443
    EXPOSE 8080
    EXPOSE 11211/tcp 11211/udp
注意:
    EXPOSE并不會讓容器的端口訪問到主機(jī)。要使其可訪問,需要在docker run運行容器時通過-p來發(fā)布這些端口,或通過-P參數(shù)來發(fā)布EXPOSE導(dǎo)出的所有端口

1.10 volume 掛載文件

VOLUME <path>
 
示例:
# 在容器內(nèi)創(chuàng)建一個掛載點 /data,用于存儲數(shù)據(jù)。
VOLUME /data
 
# 在容器內(nèi)創(chuàng)建兩個掛載點 /data1 和 /data2。
VOLUME /data1 /data2
 
# 在容器內(nèi)創(chuàng)建三個掛載點,其中前兩個是匿名卷,最后一個是命名卷。命名卷允許通過名稱進(jìn)行引用,使其可以在多個容器之間共享和重用。
VOLUME ["/data1", "/data2", "named_volume:/data3"]

1.11 user 設(shè)置容器運行時的用戶

USER <user>[:<group>]
 
# 在容器中以 myuser 用戶身份運行。
USER myuser
 
# 在容器中以 myuser 用戶身份,且屬于 mygroup 用戶組運行。
USER myuser:mygroup
 

2.Dockerfile示例及構(gòu)建指令

該dockerfile就是在原有的業(yè)務(wù)鏡像基礎(chǔ)上進(jìn)行的二次封裝,封裝了skywalking監(jiān)控、jmx_exporter監(jiān)控組件
因為后端是java寫的,所以用jdk8鏡像為底層鏡像

FROM xx.xx.xx.xx/xx/openjdk:8
COPY $jarPath/*.jar /usr/local/src/app.jar
COPY ./jmx_prometheus_javaagent-0.16.1.jar /export/server/skywalking/jmx/
COPY ./config.yaml  /export/server/skywalking/jmx/
WORKDIR /usr/local/src/
ENTRYPOINT exec java -Xmx1024m -Xms1024m -Duser.timezone=Asia/Shanghai -javaagent:/export/server/skywalking/agent/skywalking-agent.jar -javaagent:/export/server/skywalking/agent/jmx_prometheus_javaagent-0.16.1.jar=19000:/export/server/skywalking/agent/config.yaml -jar app.jar

該dockerfile就是一個將前端也構(gòu)建為鏡像,進(jìn)行啟動管理.

FROM node:12.19.0
WORKDIR /output
COPY ./output /output
EXPOSE 3001
ENV NODE_ENV=production
CMD nohup npm run start >out.log 2>&1 && tail -f out.log

構(gòu)建指令文章來源地址http://www.zghlxwxcb.cn/news/detail-820682.html

	docker build -t 鏡像名稱:標(biāo)簽 . (.點代表在Dockerfile目錄層級下執(zhí)行)
	docker build -f /path/to/Dockerfile -t image_name:tag . (未在dockerfile目錄層級下執(zhí)行)

3.Dockerfile構(gòu)建不同 CPU 架構(gòu)和操作系統(tǒng)的鏡像

	方法一、--platform=參數(shù)
	docker build  --platform=linux/arm64,linux/amd64 -t 鏡像名稱:標(biāo)簽 .  構(gòu)建arm64和amd64操作系統(tǒng)的鏡像
	方法二、 Docker CLI 插件管理器buildx
		1、安裝buildx
			docker buildx install
		2、創(chuàng)建一個新的構(gòu)建器實例
			docker buildx create --name mybuilder
		3、啟用構(gòu)建器實例
			docker buildx use mybuilder
		4、構(gòu)建鏡像
			docker buildx build --platform <platform> -t image_name:tag .

4.Dockerfile編寫原則

	- 不必要的內(nèi)容不要放在鏡像中
	- 減少不必要的層文件
	- 減少網(wǎng)絡(luò)傳輸操作
	- 可以適當(dāng)?shù)陌恍┱{(diào)試命令

到了這里,關(guān)于Dockerfile成長之路的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Docker技術(shù)入門| Part03:Dockerfile詳解(Dockerfile概念、Dockerfile 指令、使用Dockerfile構(gòu)建鏡像)

    Docker鏡像原理 Docker鏡像是由特殊的文件系統(tǒng)疊加而成 最底端是bootfs,并使用宿主機(jī)的bootfs 第二層是root文件系統(tǒng)rootfs,稱為base image 然后再往上可以疊加其他的鏡像文件 統(tǒng)文件系統(tǒng)(UnionFile System)技術(shù)能夠?qū)⒉煌膶诱铣梢粋€文件系統(tǒng),為這些層提供了一個統(tǒng)的視角,這樣就隱

    2024年02月09日
    瀏覽(92)
  • 13.Kubernetes應(yīng)用部署完整流程:從Dockerfile到Ingress發(fā)布完整流程

    本文以一個簡單的Go應(yīng)用Demo來演示Kubernetes應(yīng)用部署的完整流程 Dockerfile多階段構(gòu)建 結(jié)合 12.Harbor構(gòu)建私有鏡像倉庫 ,構(gòu)建鏡像并推送的私有倉庫

    2024年02月02日
    瀏覽(20)
  • 《Docker極簡教程》--Dockerfile--Dockerfile的基本語法

    Dockerfile是一種文本文件,用于定義Docker鏡像的內(nèi)容和構(gòu)建步驟。它包含一系列指令,每個指令代表一個構(gòu)建步驟,從基礎(chǔ)鏡像開始,逐步構(gòu)建出最終的鏡像。通過Dockerfile,用戶可以精確地描述應(yīng)用程序運行環(huán)境的配置、依賴項安裝、文件復(fù)制等操作。這使得應(yīng)用程序的部署

    2024年02月20日
    瀏覽(20)
  • 【零基礎(chǔ)入門Docker】Dockerfile中的USER指令以及dockerfile命令詳解

    【零基礎(chǔ)入門Docker】Dockerfile中的USER指令以及dockerfile命令詳解

    ? 面向讀者:所有人 ? 所屬專欄:Docker零基礎(chǔ)入門專欄 目錄 第 1 步:創(chuàng)建 Dockerfile 第 2 步:構(gòu)建 Docker 鏡像 第 3 步:運行 Docker 容器 第 4 步:驗證輸出 dockerfile命令詳解 最佳實踐 默認(rèn)情況下,Docker 容器以 Root 用戶身份運行。如果您在 Docker 容器內(nèi)大規(guī)模部署應(yīng)用程序,這

    2024年02月05日
    瀏覽(44)
  • 【Docker】如何編寫Dockerfile,深入理解 Dockerfile:構(gòu)建精簡且高效的容器鏡像

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

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

    2024年01月24日
    瀏覽(30)
  • docker/Dockerfile/docker compose

    https://mirror.tuna.tsinghua.edu.cn/help/docker-ce/ 在x86環(huán)境下,由容器統(tǒng)一管理開發(fā)及運行環(huán)境。 Docker https://mirror.tuna.tsinghua.edu.cn/help/docker-ce/ sudo dockerd 手動啟動docker sudo service docker start 后臺啟動docker sudo dockerd 顯示啟動docker,看日志中的docker /var/log/docker.log sudo apt-key adv --keyserver key

    2024年02月08日
    瀏覽(67)
  • 【云原生】Docker—Dockerfile寫法與用法以及dockerfile簡介與構(gòu)建鏡像詳解【附加實戰(zhàn)】

    【云原生】Docker—Dockerfile寫法與用法以及dockerfile簡介與構(gòu)建鏡像詳解【附加實戰(zhàn)】

    ??Dockerfile 是一個用來構(gòu)建鏡像的文本文件,文本內(nèi)容包含了一條條構(gòu)建鏡像所需的指令(Instruction)和操作命令;每一條指令構(gòu)建一層鏡像,因此每一條指令的內(nèi)容,就是描述該層鏡像應(yīng)當(dāng)如何構(gòu)建(也就是你要執(zhí)行的操作命令)。 ?dockerfile是純文本文件; ?dockerfile是用來

    2024年01月18日
    瀏覽(24)
  • 【Docker】 08-Dockerfile

    【Docker】 08-Dockerfile

    Dockerfile可以認(rèn)為是Docker鏡像的描述文件,是由一系列命令和參數(shù)構(gòu)成的教程,主要作用是用來構(gòu)建docker鏡像的構(gòu)建文件。 保留字 作用 FROM 當(dāng)前鏡像是基于哪個鏡像的 第一個指令必須是FROM MAINTAINER 鏡像維護(hù)者的姓名和郵箱地址 RUN 構(gòu)建鏡像時需要運行的指令 EXPOSE 當(dāng)前容器對

    2024年02月10日
    瀏覽(20)
  • 【docker筆記】DockerFile

    【docker筆記】DockerFile

    鏡像不是一個單一的文件,而是有多層構(gòu)成。 容器其實是在鏡像的最上面加了一層讀寫層,在運行容器里做的任何文件改動,都會寫到這個讀寫層。 如果刪除了容器,也就是刪除了其最上面的讀寫層,文件改動也就丟失了。 Docker使用存儲驅(qū)動管理鏡像像每層內(nèi)容及可讀可寫

    2024年02月02日
    瀏覽(48)
  • Docker定制鏡像(Dockerfile)

    Docker定制鏡像(Dockerfile)

    ???????? dockerfile 是用來構(gòu)建 docker 鏡像的 命令參數(shù)腳本 文件。 ????????鏡像的定制實際上就是定制每一層所添加的配置、文件。如果我們可以把每一層修改、安裝、構(gòu)建、操作的命令都寫入一個腳本,用這個腳本來構(gòu)建、定制鏡像,那么之前提及的無法重復(fù)的問題、

    2024年02月07日
    瀏覽(29)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包