0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鏡像構(gòu)建Dockerfile的介紹

馬哥Linux運(yùn)維 ? 來源:馬哥Linux運(yùn)維 ? 作者:馬哥Linux運(yùn)維 ? 2022-09-06 09:36 ? 次閱讀

一、概述

Dockerfile 是一個(gè)用來構(gòu)建鏡像的文本文件,文本內(nèi)容包含了一條條構(gòu)建鏡像所需的指令和說明。

官方文檔:

https://docs.docker.com/engine/reference/builder/

Dockerfile 示例:

https://github.com/dockerfile/

a3d18e06-2d2f-11ed-ba43-dac502259ad0.png

二、Dockerfile 結(jié)構(gòu)

Dockerfile 結(jié)構(gòu)主要分為四部分:

基礎(chǔ)鏡像信息

維護(hù)者信息

鏡像操作指令

容器啟動(dòng)時(shí)執(zhí)行指令 (CMD/ENTRYPOINT)

【溫馨提示】Dockerfile 每行支持一條指令,每條指令可攜帶多個(gè)參數(shù)(支持&&),支持使用以“#“號開頭的注釋(jason 文件不支持#注釋),但是也非必須滿足上面的四點(diǎn)。

三、常用 Dockerfile 操作指令

ARG—— 定義創(chuàng)建鏡像過程中使用的變量 ,唯一一個(gè)可以在 FROM 之前定義 。

FROM——基于某個(gè)鏡像, FROM前面只能有一個(gè)或多個(gè)ARG指令 。

MAINTAINER(已棄用) —— 鏡像維護(hù)者姓名或郵箱地址 。

VOLUME —— 指定容器掛載點(diǎn)到宿主機(jī)自動(dòng)生成的目錄或其他容器

RUN——執(zhí)行鏡像里的命令,跟在 liunx 執(zhí)行命令一樣,只需要在前面加上 RUN 關(guān)鍵詞就行。

COPY——復(fù)制本地(宿主機(jī))上的文件到鏡像。

ADD——復(fù)制并解壓(宿主機(jī))上的壓縮文件到鏡像。

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

WORKDIR —— 為 RUN、CMD、ENTRYPOINT、COPY 和 ADD 設(shè)置工作目錄,就是切換目錄 。

USER —— 為 RUN、CMD、和 ENTRYPOINT 執(zhí)行命令指定運(yùn)行用戶。

EXPOSE —— 聲明容器的服務(wù)端口(僅僅是聲明) 。

CMD—— 容器啟動(dòng)后執(zhí)行的命令 ,多個(gè) CMD 只會執(zhí)行最后一個(gè),跟 ENTRYPOINT 的區(qū)別是,CMD 可以作為 ENTRYPOINT 的參數(shù),且會被 yaml 文件里的 command 覆蓋。

ENTRYPOINT—— 容器啟動(dòng)后執(zhí)行的命令 ,多個(gè)只會執(zhí)行最后一個(gè)。

HEALTHCHECH —— 健康檢查 。

ONBUILD——它后面跟的是其它指令,比如 RUN, COPY 等,而這些指令,在當(dāng)前鏡像構(gòu)建時(shí)并不會被執(zhí)行。只有當(dāng)以當(dāng)前鏡像為基礎(chǔ)鏡像,去構(gòu)建下一級鏡像的時(shí)候才會被執(zhí)行。

LABEL——LABEL 指令用來給鏡像添加一些元數(shù)據(jù)(metadata),以鍵值對的形式 ,替換 MAINTAINER。

1)鏡像構(gòu)建(docker build)

dockerbuild-ttext:v1.--no-cache
#要在構(gòu)建后將映像標(biāo)記到多個(gè)存儲庫中,請?jiān)谶\(yùn)行命令-t時(shí)添加多個(gè)參數(shù)
dockerbuild-tshykes/myapp:1.0.2-tshykes/myapp:latest.

###參數(shù)解釋
#-t:指定鏡像名稱
# . :當(dāng)前目錄Dockerfile
#-f:指定Dockerfile路徑
#--no-cache:不緩存

2)運(yùn)行容器測試(docker run)

#非交互式運(yùn)行
dockerruncentos:7.4.1708/bin/echo"Helloworld"

###交互式執(zhí)行
#-t:在新容器內(nèi)指定一個(gè)偽終端或終端。
#-i:允許你對容器內(nèi)的標(biāo)準(zhǔn)輸入(STDIN)進(jìn)行交互。
#會登錄到docker環(huán)境中,交互式
dockerrun-itcentos:7.4.1708/bin/bash
#-d:后臺執(zhí)行,加了-d 參數(shù)默認(rèn)不會進(jìn)入容器
dockerrun-itdcentos:7.4.1708/bin/bash

###進(jìn)入容器
#在使用-d 參數(shù)時(shí),容器啟動(dòng)后會進(jìn)入后臺。此時(shí)想要進(jìn)入容器,可以通過以下指令進(jìn)入:
#docker exec -it :推薦大家使用 docker exec -it 命令,因?yàn)榇嗣顣顺鋈萜鹘K端,但不會導(dǎo)致容器的停止。
#docker attach:容器退出,會導(dǎo)致容器的停止。
dockerexec-itb2c0235dc53/bin/bash
dockerattachb2c0235dc53

3)ARG

構(gòu)建參數(shù),與 ENV 作用一致。不過作用域不一樣。ARG 設(shè)置的環(huán)境變量僅對 Dockerfile 內(nèi)有效,也就是說只有 docker build 的過程中有效,構(gòu)建好的鏡像內(nèi)不存在此環(huán)境變量。唯一一個(gè)可以在 FROM 之前定義 。構(gòu)建命令 docker build 中可以用 --build-arg <參數(shù)名>=<值> 來覆蓋。

語法格式:

ARG<參數(shù)名>[=<默認(rèn)值>]

示例:

#在FROM之前定義ARG,只在FROM中生效
ARGVERSION=laster
FROMcentos:${VERSION}
#在FROM之后使用,得重新定義,不需要賦值
ARGVERSION
RUNecho$VERSION>/tmp/image_version

4)FROM

定制的鏡像都是基于 FROM 的鏡像 ,【必選項(xiàng)】

語法格式:

FROM[--platform=][AS]
FROM[--platform=][:][AS]
FROM[--platform=][@][AS]

如果引用多平臺圖像,可選--platform標(biāo)志可用于指定圖像的平臺。FROM例如,linux/amd64、 linux/arm64或windows/amd64。默認(rèn)情況下,使用構(gòu)建請求的目標(biāo)平臺。全局構(gòu)建參數(shù)可用于此標(biāo)志的值,例如允許您將階段強(qiáng)制為原生構(gòu)建平臺 ( --platform=$BUILDPLATFORM),并使用它交叉編譯到階段內(nèi)的目標(biāo)平臺。

示例:

ARGVERSION=latest
FROMbusybox:$VERSION
#FROM--platform="linux/amd64"busybox:$VERSION
ARGVERSION
RUNecho$VERSION>image_version

5)MAINTAINER(已棄用)

鏡像維護(hù)者信息

語法格式:

MAINTAINER

示例:

LABELorg.opencontainers.image.authors="SvenDowideit@home.org.au"

6)VOLUME

定義匿名數(shù)據(jù)卷。在啟動(dòng)容器時(shí)忘記掛載數(shù)據(jù)卷,會自動(dòng)掛載到匿名卷。

作用:

避免重要的數(shù)據(jù),因容器重啟而丟失,這是非常致命的。

避免容器不斷變大。

在啟動(dòng)容器 docker run 的時(shí)候,我們可以通過 -v 參數(shù)修改掛載點(diǎn)。

語法格式:

#后面路徑是容器內(nèi)的路徑,對應(yīng)宿主機(jī)的目錄是隨機(jī)的
VOLUME["<路徑1>","<路徑2>"...]
VOLUME<路徑>

示例:

FROMubuntu
RUNmkdir/myvol
RUNecho"helloworld">/myvol/greeting
VOLUME/myvol

7)RUN

用于執(zhí)行后面跟著的命令行命令。

語法格式:

RUN (shell形式,命令在 shell 中運(yùn)行,默認(rèn)/bin/sh -c在 Linux 或cmd /S /CWindows 上)

RUN ["executable", "param1", "param2"](執(zhí)行形式)

示例:

#以下三種寫法等價(jià)
RUN/bin/bash-c'source$HOME/.bashrc;
echo$HOME'

RUN/bin/bash-c'source$HOME/.bashrc;echo$HOME'

RUN["/bin/bash","-c","source$HOME/.bashrc;echo$HOME"]

8)COPY

拷貝(宿主機(jī))文件或目錄到容器中,跟 ADD 類似,但不具備自動(dòng)下載或解壓的功能 。所有新文件和目錄都使用 0 的 UID 和 GID 創(chuàng)建,除非可選--chown標(biāo)志指定給定的用戶名、組名或 UID/GID 組合以請求復(fù)制內(nèi)容的特定所有權(quán)。

語法格式:

COPY[--chown=:]...
COPY[--chown=:]["",...""]

示例:

#添加所有以“hom”開頭的文件:
COPYhom*/mydir/
# ?替換為任何單個(gè)字符,例如“home.txt”。
COPYhom?.txt/mydir/
#使用相對路徑,并將“test.txt”添加到/relativeDir/:
COPYtest.txtrelativeDir/
#使用絕對路徑,并將“test.txt”添加到/absoluteDir/
COPYtest.txt/absoluteDir/

#修改文件權(quán)限
COPY--chown=55:mygroupfiles*/somedir/
COPY--chown=binfiles*/somedir/
COPY--chown=1files*/somedir/
COPY--chown=10:11files*/somedir/

9)ADD

拷貝文件或目錄到容器中,如果是 URL 或壓縮包便會自動(dòng)下載或自動(dòng)解壓 。

ADD 指令和 COPY 的使用格類似(同樣需求下,官方推薦使用 COPY)。功能也類似,不同之處如下:

ADD 的優(yōu)點(diǎn):在執(zhí)行 <源文件> 為 tar 壓縮文件的話,壓縮格式為 gzip, bzip2 以及 xz 的情況下,會自動(dòng)復(fù)制并解壓到 <目標(biāo)路徑>。

ADD 的缺點(diǎn):在不解壓的前提下,無法復(fù)制 tar 壓縮文件。會令鏡像構(gòu)建緩存失效,從而可能會令鏡像構(gòu)建變得比較緩慢。具體是否使用,可以根據(jù)是否需要自動(dòng)解壓來決定。

語法格式:

ADD[--chown=:]...
ADD[--chown=:]["",...""]

示例:

#通配符
ADDhom*/mydir/
#相對路徑,拷貝到WORKDIR目錄下relativeDir/
ADDtest.txtrelativeDir/
#絕對路徑
ADDtest.txt/absoluteDir/

#更改權(quán)限
ADD--chown=55:mygroupfiles*/somedir/
ADD--chown=binfiles*/somedir/
ADD--chown=1files*/somedir/
ADD--chown=10:11files*/somedir/

ADD 和 COPY 的區(qū)別和使用場景:

ADD 支持添加遠(yuǎn)程 url 和自動(dòng)提取壓縮格式的文件,COPY 只允許從本機(jī)中復(fù)制文件

COPY 支持從其他構(gòu)建階段中復(fù)制源文件(--from)

根據(jù)官方 Dockerfile 最佳實(shí)踐,除非真的需要從遠(yuǎn)程 url 添加文件或自動(dòng)提取壓縮文件才用 ADD,其他情況一律使用 COPY

10)ENV

設(shè)置環(huán)境變量,定義了環(huán)境變量,那么在后續(xù)的指令中,就可以使用這個(gè)環(huán)境變量。

語法格式:

ENV==...
#省略"="此語法不允許在單個(gè)ENV指令中設(shè)置多個(gè)環(huán)境變量,并且可能會造成混淆。
ENV

示例:

ENVJAVA_HOME=/usr/local/jdk
ENVMY_NAME="JohnDoe"MY_DOG=RexTheDog
MY_CAT=fluffy
#此語法不允許在單個(gè)ENV指令中設(shè)置多個(gè)環(huán)境變量,并且可能會造成混淆。
ENVJAVA_HOME/usr/local/jdk

11)WORKDIR

指定工作目錄。用 WORKDIR 指定的工作目錄,會在構(gòu)建鏡像的每一層中都存在。(WORKDIR 指定的工作目錄,必須是提前創(chuàng)建好的)。

語法格式:

WORKDIR<工作目錄路徑>

示例:

FROMbusybox
ENVFOO=/bar
WORKDIR${FOO}#WORKDIR/bar

12)USER

用于指定執(zhí)行后續(xù)命令的用戶和用戶組,這邊只是切換后續(xù)命令執(zhí)行的用戶(用戶和用戶組必須提前已經(jīng)存在)。

語法格式:

USER<用戶名>[:<用戶組>]
USER[:]

示例:

FROMbusybox
RUNgroupadd--system--gid=9999admin&&useradd--system--home-dir/home/admin--uid=9999--gid=adminadmin
USERadmin:admin
#USER9999:9999

13)EXPOSE

暴露端口 ,僅僅只是聲明端口。

作用:

幫助鏡像使用者理解這個(gè)鏡像服務(wù)的守護(hù)端口,以方便配置映射。

在運(yùn)行時(shí)使用隨機(jī)端口映射時(shí),也就是 docker run -P 時(shí),會自動(dòng)隨機(jī)映射 EXPOSE 的端口。

語法格式:

#默認(rèn)情況下,EXPOSE假定 TCP。
EXPOSE[/...]

示例:

EXPOSE80/TCP443/TCP
EXPOSE80443
EXPOSE80/tcp
EXPOSE80/udp

14)CMD

類似于 RUN 指令,用于運(yùn)行程序,但二者運(yùn)行的時(shí)間點(diǎn)不同:CMD 在構(gòu)建鏡像時(shí)不會執(zhí)行,在容器運(yùn)行 時(shí)運(yùn)行。

語法格式:

CMD
CMD["<可執(zhí)行文件或命令>","","",...]
CMD["","",...]#該寫法是為ENTRYPOINT指令指定的程序提供默認(rèn)參數(shù)

推薦使用第二種格式,執(zhí)行過程比較明確。第一種格式實(shí)際上在運(yùn)行的過程中也會自動(dòng)轉(zhuǎn)換成第二種格式運(yùn)行,并且默認(rèn)可執(zhí)行文件是 sh。

示例:

CMDcat/etc/profile
CMD["/bin/sh","-c","/etc/profile"]

注意:如果 Dockerfile 中如果存在多個(gè) CMD 指令,僅最后一個(gè)生效。

15)ENTRYPOINT

類似于 CMD 指令,但其不會被 docker run 的命令行參數(shù)指定的指令所覆蓋,而且這些命令行參數(shù)會被當(dāng)作參數(shù)送給 ENTRYPOINT 指令指定的程序。但是, 如果運(yùn)行 docker run 時(shí)使用了 --entrypoint 選項(xiàng),將覆蓋 ENTRYPOINT 指令指定的程序。在 k8s 中 command 也會覆蓋 ENTRYPOINT 指令指定的程序

語法格式:

# exec形式,這是首選形式:
ENTRYPOINT["executable","param1","param2"]
#外殼形式:
ENTRYPOINTcommandparam1param2

示例:

FROMubuntu
ENTRYPOINT["top","-b"]
#CMD作為ENTRYPOINT參數(shù)
CMD["-c"]
#與下面的等價(jià)
ENTRYPOINT["top","-b-c"]
ENTRYPOINTtop-b-c

注意:如果 Dockerfile 中如果存在多個(gè) ENTRYPOINT 指令,僅最后一個(gè)生效。

16)HEALTHCHECK

用于指定某個(gè)程序或者指令來監(jiān)控 docker 容器服務(wù)的運(yùn)行狀態(tài)。

語法格式:

HEALTHCHECK[OPTIONS]CMDcommand(通過在容器內(nèi)運(yùn)行命令檢查容器運(yùn)行狀況)
HEALTHCHECKNONE(禁用從基礎(chǔ)映像繼承的任何運(yùn)行狀況檢查)

選項(xiàng)CMD有:

--interval=DURATION(默認(rèn)30s:):間隔,頻率

--timeout=DURATION(默認(rèn)30s:):超時(shí)時(shí)間

--start-period=DURATION(默認(rèn)0s:):為需要時(shí)間引導(dǎo)的容器提供初始化時(shí)間, 在此期間探測失敗將不計(jì)入最大重試次數(shù)。

--retries=N(默認(rèn)3:):重試次數(shù)

命令的exit status指示容器的運(yùn)行狀況??赡艿闹禐椋?/p>

0:健康狀態(tài),容器健康且已準(zhǔn)備完成。

1:不健康狀態(tài),容器工作不正常。

2:保留,不要使用此退出代碼。

示例:

FROMnginx
MAINTAINERSecuritit
HEALTHCHECK--interval=5s--timeout=3s
CMDcurl-fhttp://localhost/||exit1
CMD["usr/sbin/nginx","-g","daemonoff;"]

17)ONBUILD

ONBUILD 是一個(gè)特殊的指令,它后面跟的是其它指令,比如 RUN, COPY 等,而這些指令,在當(dāng)前鏡像構(gòu)建時(shí)并不會被執(zhí)行。只有當(dāng)以當(dāng)前鏡像為基礎(chǔ)鏡像,去構(gòu)建下一級鏡像的時(shí)候才會被執(zhí)行。

語法格式:

ONBUILD<其它指令>

示例:

FROMnode:slim
RUNmkdir/app
WORKDIR/app
ONBUILDCOPY./package.json/app
ONBUILDRUN["npm","install"]
ONBUILDCOPY./app/
CMD["npm","start"]

18)LABEL

LABEL 指令用來給鏡像添加一些元數(shù)據(jù)(metadata),以鍵值對的形式。用來替代 MAINTAINER。

語法格式:

LABEL===...

示例:比如我們可以添加鏡像的作者

LABELorg.opencontainers.image.authors="runoob"

四、ARG 和 ENV 的區(qū)別

ARG 定義的變量只會存在于鏡像構(gòu)建過程,啟動(dòng)容器后并不保留這些變量

ENV 定義的變量在啟動(dòng)容器后仍然保留

五、CMD,ENTRYPOINT,command,args 場景測試

當(dāng)用戶同時(shí)在 kubernetes 中的 yaml 文件中寫了command和args的時(shí)候,默認(rèn)是會覆蓋DockerFile中的命令行和參數(shù),完整的情況分類如下:

1)command 和 args 不存在場景測試

如果 command 和 args 都沒有寫,那么用DockerFile默認(rèn)的配置。

Dockerfile

FROMcentos

COPYtest.sh/

RUNchmod+x/test.sh
###ENTRYPOINT將作為的子命令啟動(dòng)/bin/sh-c,它不會傳遞參數(shù),要傳遞參數(shù)只能這樣傳參
#ENTRYPOINT["/bin/sh","-c","/test.shENTRYPOINT"]
ENTRYPOINT["/test.sh","ENTRYPOINT"]
CMD["CMD"]

/tmp/test.sh

#!/bin/bash

echo$*

構(gòu)建

dockerbuild-ttest1:v1-fDockerfile.

yaml 編排

cat<test1.yaml
apiVersion:apps/v1
kind:Deployment
metadata:
name:test
spec:
replicas:1
selector:
matchLabels:
app:test
template:
metadata:
labels:
app:test
spec:
nodeName:local-168-182-110
containers:
-name:test
image:test:v1
#command:['/bin/sh','-c','/test.sh']
#args:['args']
EOF

執(zhí)行

kubectlapply-ftest.yaml

2)command 存在,但 args 存在場景測試

如果 command 寫了,但 args 沒有寫,那么 Docker 默認(rèn)的配置會被忽略而且僅僅執(zhí)行.yaml文件的 command(不帶任何參數(shù)的)。

cat<test2.yaml
apiVersion:apps/v1
kind:Deployment
metadata:
name:test2
spec:
replicas:1
selector:
matchLabels:
app:test2
template:
metadata:
labels:
app:test2
spec:
nodeName:local-168-182-110
containers:
-name:test2
image:test:v1
#['/bin/sh','-c','/test.sh command','hello'],加了'/bin/sh','-c',也是不能外部傳參,不會輸出hello,只能通過這樣傳參,['/bin/sh','-c','/test.sh command'];CMD里面的參數(shù)會被忽略
command:['/test.sh']
#command帶參數(shù)
#command:['/test.sh','command']
#args:['args']
EOF

3)command 不存在,但 args 存在場景測試

如果 command 沒寫,但 args 寫了,那么 Docker 默認(rèn)配置的 ENTRYPOINT 的命令行會被執(zhí)行,但是調(diào)用的參數(shù)是.yaml中的 args,CMD 的參數(shù)會被覆蓋,但是 ENTRYPOINT 自帶的參數(shù)還是會執(zhí)行的。

cat<test3.yaml
apiVersion:apps/v1
kind:Deployment
metadata:
name:test3
spec:
replicas:1
selector:
matchLabels:
app:test3
template:
metadata:
labels:
app:test3
spec:
nodeName:local-168-182-110
containers:
-name:test3
image:test:v1
#['/bin/sh','-c','/test.sh command','hello'],加了'/bin/sh','-c',也是不能外部傳參,不會輸出hello,只能通過這樣傳參,['/bin/sh','-c','/test.sh command'];CMD里面的參數(shù)會被忽略
#command:['/test.sh']
#command帶參數(shù)
#command:['/test.sh','command']
args:['args']
EOF

4)command 和 args 都存在場景測試

如果如果 command 和 args 都寫了,那么 Docker 默認(rèn)的配置被忽略,使用.yaml的配置。

cat<test4.yaml
apiVersion:apps/v1
kind:Deployment
metadata:
name:test4
spec:
replicas:1
selector:
matchLabels:
app:test4
template:
metadata:
labels:
app:test4
spec:
nodeName:local-168-182-110
containers:
-name:test4
image:test:v1
#['/bin/sh','-c','/test.sh command','hello'],加了'/bin/sh','-c',也是不能外部傳參,不會輸出hello,只能通過這樣傳參,['/bin/sh','-c','/test.sh command'];CMD里面的參數(shù)會被忽略
#command:['/test.sh']
#command帶參數(shù),command和args都會帶上
command:['/test.sh','command']
args:['args']
EOF

鏡像構(gòu)建 Dockerfile 的介紹就到這里了,有疑問的小伙伴歡迎給我留言哦!

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    490

    瀏覽量

    21986
  • 鏡像
    +關(guān)注

    關(guān)注

    0

    文章

    158

    瀏覽量

    10651
  • 服務(wù)端
    +關(guān)注

    關(guān)注

    0

    文章

    66

    瀏覽量

    6947

原文標(biāo)題:Docker 鏡像構(gòu)建保姆級入門實(shí)戰(zhàn)指南

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    介紹一下linux環(huán)境下docker的使用流程

    dockerhub 網(wǎng)站,注冊一個(gè)賬號:創(chuàng)建鏡像倉庫:構(gòu)建鏡像通過上面的步驟,我們創(chuàng)建了一個(gè)鏡像倉庫;這一步,我們要構(gòu)建一個(gè)
    發(fā)表于 04-27 15:03

    構(gòu)建ARM64版本nacos docker鏡像

    在適配過程中有大量合作伙伴用到nacos且采用容器化部署,dockerhub未提供官方鏡像,因此需要在鯤鵬服務(wù)器自定義構(gòu)建構(gòu)建前提:Docker已部署構(gòu)建步驟:1、下載包含
    發(fā)表于 06-16 14:29

    介紹一款非常方便的java領(lǐng)域docker鏡像構(gòu)建工具

    前言本文主要介紹的是google開源的一個(gè)java領(lǐng)域的docker構(gòu)建工具jib.目前在github上的start有8.5k,fork有784,是一款非常方便的java領(lǐng)域docker構(gòu)建
    發(fā)表于 07-19 17:41

    一文詳解DockerFile基礎(chǔ)知識

    DockerFile用來構(gòu)建docker的鏡像文件,可以理解為命令參數(shù)腳本。構(gòu)建步驟編寫一個(gè)DockerFile文件Docker build
    發(fā)表于 09-15 15:54

    Dockerfile構(gòu)建環(huán)境報(bào)錯(cuò)如何解決?

    我正在使用以下 Dockerfile 來設(shè)置構(gòu)建環(huán)境:修改local.conf文件,執(zhí)行bitbake命令后,收到如下錯(cuò)誤:ERROR: Task (virtual:native:/home
    發(fā)表于 04-11 06:17

    淺析Docker鏡像本地存儲機(jī)制及容器啟動(dòng)原理

    鏡像各層內(nèi)容及對應(yīng)大小,每層對應(yīng)著 Dockerfile 中的一條指令。Docker 鏡像默認(rèn)存儲在 /var/lib/docker/《storage-driver》中,可通過 DOCKER_OPTS 或者 docker dae
    發(fā)表于 10-19 14:17 ?2482次閱讀

    全面詳解Dockerfile文件

    Docker 可以通過讀取 Dockerfile 中的指令自動(dòng)構(gòu)建鏡像Dockerfile 是一個(gè)文本文檔,其中包含了用戶創(chuàng)建鏡像的所有命
    的頭像 發(fā)表于 09-22 15:38 ?1807次閱讀

    如何創(chuàng)建 Docker 鏡像的能力

    本文將帶大家繼續(xù)深入了解 Dockerfile 鏡像創(chuàng)建過程中最重要的配置文件內(nèi)容,更加透徹地了解整個(gè)容器鏡像的創(chuàng)建過程。
    的頭像 發(fā)表于 09-16 09:39 ?1027次閱讀

    Dockerfile的最佳實(shí)踐

    隨著應(yīng)用的容器化、上云后,將伴隨著 Docker 鏡像構(gòu)建構(gòu)建 Docker 鏡像成為了最基本的一步,其中 Dockerfile 便是用
    的頭像 發(fā)表于 01-20 10:59 ?864次閱讀
    <b class='flag-5'>Dockerfile</b>的最佳實(shí)踐

    Docker入門指南之什么是Dockerfile

    發(fā)時(shí)所構(gòu)建鏡像或者通過Dockerfile文件構(gòu)建一個(gè)新的鏡像開始工作 * 對于運(yùn)維人員:在部署時(shí),可以實(shí)現(xiàn)應(yīng)用的無縫移植
    的頭像 發(fā)表于 02-06 15:25 ?561次閱讀
    Docker入門指南之什么是<b class='flag-5'>Dockerfile</b>

    新一代更強(qiáng)大的鏡像構(gòu)建工具Earthly

    在使用 Earthly 進(jìn)行構(gòu)建鏡像時(shí)目前強(qiáng)依賴于 buildkit,Earthly 通過 buildkit 支持了一些 Dockerfile 的擴(kuò)展語法,同時(shí)將 Dockerfile
    的頭像 發(fā)表于 03-30 11:21 ?819次閱讀

    Dockerfile定義Docker鏡像構(gòu)建過程

    了解Dockerfile Dockerfile 是一個(gè)文本文件,用于定義 Docker 鏡像構(gòu)建過程。它以指令的形式描述了如何構(gòu)建
    的頭像 發(fā)表于 09-30 10:22 ?2381次閱讀

    構(gòu)建docker鏡像應(yīng)該遵循哪些原則

    構(gòu)建 Docker 鏡像時(shí),應(yīng)遵循以下原則: 單一職責(zé):每個(gè)鏡像應(yīng)只包含一個(gè)應(yīng)用或服務(wù),避免將多個(gè)應(yīng)用或服務(wù)放在同一個(gè)鏡像中。這樣可以確保鏡像
    的頭像 發(fā)表于 11-23 09:41 ?850次閱讀

    如何使用dockerfile創(chuàng)建鏡像

    Docker是一個(gè)開源的平臺,用于快速構(gòu)建、打包、部署應(yīng)用程序的容器化工具。而Dockerfile是一個(gè)文本文件,包含了一組可自動(dòng)化構(gòu)建Docker鏡像的指令。本文將詳細(xì)
    的頭像 發(fā)表于 11-23 09:52 ?633次閱讀

    手動(dòng)構(gòu)建Docker鏡像的方法

    不推薦使用docker commit命令,而應(yīng)該使用更靈活、更強(qiáng)大的dockerfile構(gòu)建docker鏡像
    的頭像 發(fā)表于 08-05 15:30 ?250次閱讀
    手動(dòng)<b class='flag-5'>構(gòu)建</b>Docker<b class='flag-5'>鏡像</b>的方法