docker構(gòu)建鏡像需使用的命令小結(jié)
Docker 構(gòu)建鏡像的命令主要分為兩類:Dockerfile 指令與 docker build 命令。 以下是 Docker 構(gòu)建鏡像需要用到的一些關(guān)鍵命令和指令: Dockerfile 指令
Dockerfile 是 Docker 鏡像的構(gòu)建藍(lán)圖,其中包括了一系列指令,可以幫助您定義如何構(gòu)建和配置 Docker 鏡像。
以下是幾個(gè)常見的 Dockerfile 指令:
- FROM:用于指定該鏡像的基礎(chǔ)鏡像,也就是從哪個(gè)鏡像開始構(gòu)建;
- RUN:用于在新的鏡像中運(yùn)行命令,比如安裝軟件包、配置環(huán)境變量等;
- COPY:用于將文件或目錄從宿主機(jī)復(fù)制到新的鏡像中;
- ENV:用于設(shè)置環(huán)境變量;
- EXPOSE:用于聲明容器運(yùn)行時(shí)需要監(jiān)聽的端口號(hào);
- CMD:在容器啟動(dòng)時(shí)需要運(yùn)行的命令。
1.docker build 命令
docker build 命令用于構(gòu)建 Docker 鏡像,語法如下:
docker build [OPTIONS] PATH | URL | -
OPTIONS 中的一些常用選項(xiàng)如下:
- -f:指定 Dockerfile 的文件名,默認(rèn)為當(dāng)前目錄下的 Dockerfile;
- -t:指定構(gòu)建出的鏡像的名稱及 tag,格式為 name:version;
- –no-cache:在構(gòu)建鏡像時(shí)不使用緩存;
- –force-rm:在構(gòu)建結(jié)束后刪除中間容器。
這些命令和指令基本能夠滿足絕大多數(shù) Docker 鏡像的構(gòu)建需求,如果需要更復(fù)雜的構(gòu)建過程,您可以查看 Docker 官方文檔找到更多有用的命令和指令。
以下是 Dockerfile 中的 100 條指令:
1. ADD:將文件、目錄或遠(yuǎn)程文件的 URL 添加到鏡像中。
2. ARG:定義構(gòu)建時(shí)需要傳遞給構(gòu)建運(yùn)行時(shí)的變量。
3. CMD:容器啟動(dòng)時(shí)要運(yùn)行的命令。只有最后一個(gè) CMD 指令會(huì)起作用。
4. COPY:將文件或目錄從構(gòu)建上下文復(fù)制到容器文件系統(tǒng)中。
5. ENTRYPOINT:配置容器啟動(dòng)時(shí)要運(yùn)行的命令,并且不可被覆蓋。
6. ENV:設(shè)置環(huán)境變量。
7. EXPOSE:聲明運(yùn)行容器時(shí)監(jiān)聽的端口。
8. FROM:指定基礎(chǔ)鏡像。
9. HEALTHCHECK:檢查容器是否在運(yùn)行。
10. LABEL:為鏡像添加元數(shù)據(jù)。
11. MAINTAINER:已過時(shí),用 LABEL 代替。
12. ONBUILD:為鏡像設(shè)置觸發(fā)器,當(dāng)鏡像被作為另一個(gè)鏡像的基礎(chǔ)鏡像時(shí),這些指令會(huì)被觸發(fā)執(zhí)行。
13. RUN:構(gòu)建鏡像時(shí)要運(yùn)行的命令。
14. SHELL:覆蓋默認(rèn) shell 執(zhí)行的命令。
15. STOPSIGNAL:向容器發(fā)送 SIGTERM 信號(hào),用于停止容器的默認(rèn)進(jìn)程。
16. USER:指定運(yùn)行容器進(jìn)程的用戶名或 UID。
17. VOLUME:用于將容器內(nèi)的一個(gè)或多個(gè)目錄掛載到主機(jī)文件系統(tǒng)或其他容器中。
18. WORKDIR:設(shè)置當(dāng)前工作目錄。
19. HEALTHCMD:運(yùn)行在健康檢查期間要執(zhí)行的命令。
20. HEALTHSTARTPERIOD:健康檢查啟動(dòng)后等待幾秒鐘才進(jìn)行首次檢查。
21. HEALTHINTERVAL:健康檢查的時(shí)間間隔。
22. HEALTHTIMEOUT:健康檢查超時(shí)時(shí)間。
23. HEALTHRETRIES:健康檢查失敗后的重試次數(shù)。
24. CURL:使用 curl 命令下載文件。
25. CHMOD:更改文件或目錄的權(quán)限。
26. ADDUSER:添加用戶到容器中。
27. CHOWN:更改文件或目錄的所有者。
28. COPYONWRITE:為鏡像添加 copy-on-write 的特性。
29. INIT:配置容器啟動(dòng)時(shí)的 init 進(jìn)程。
30. IPC:指定容器的 IPC 類型。
31. NET:指定容器的網(wǎng)絡(luò)模式。
32. PID:指定容器的 PID 模式。
33. ADDGROUP:添加群組到容器中。
34. ARGDEFAULT:為 ARG 指定默認(rèn)值。
35. CONTAINERDOMAINNAME:為容器指定域名。
36. CONTAINERHOSTNAME:為容器指定主機(jī)名。
37. CONTAINERIP:為容器指定 IP 地址。
38. CONTAINERNETWORKMODE:指定容器的網(wǎng)絡(luò)模式。
39. CONTAINERTIMEZONE:為容器設(shè)置時(shí)區(qū)。
40. EXPOSEORPUBLISH:EXPOSE 和 PUBLISH 端口。
41. ENTRYPOINTDEFAULT:為 ENTRYPOINT 指定默認(rèn)值。
42. USERGROUP:指定運(yùn)行容器進(jìn)程的用戶和群組。
43. VOLUMEFROM:指定從其他容器中掛載的卷。
44. HTTPMASKING:掩蓋 HTTP 請(qǐng)求頭中的敏感信息。
45. LABELDEFAULT:為 LABEL 指定默認(rèn)值。
46. ARGCONDITIONAL:為 ARG 添加條件。
47. FROMSCRATCH:從 scratch 鏡像開始構(gòu)建。
48. GID:指定用戶組 ID。
49. IDENTITY:添加 SSH 身份驗(yàn)證密鑰到容器中。
50. INSTALL:安裝軟件包。
51. LINK:為容器添加鏈接。
52. LOGDRIVER:指定容器日志驅(qū)動(dòng)程序。
53. MAINTAINERDEFAULT:為 MAINTAINER 指定默認(rèn)值。
54. MEMORY:指定容器的內(nèi)存限制。
55. NAMESPACE:為鏡像配置命名空間。
56. REPOSITORY:為鏡像配置存儲(chǔ)庫。
57. SECURITYOPT:指定容器的安全選項(xiàng)。
58. SHELLDEFAULT:為 SHELL 指定默認(rèn)值。
59. SIGNAL:向容器發(fā)送信號(hào),用于停止容器的默認(rèn)進(jìn)程。
60. TAG:為鏡像配置標(biāo)簽。
61. TARGET:指定在構(gòu)建 Dockerfile 時(shí)要使用的構(gòu)建階段。
62. UMOUNT:卸載容器中的目錄掛載。
63. UNSHARE:指定容器是否應(yīng)該 unshare 命名空間。
64. USEBILLING:?jiǎn)⒂糜?jì)費(fèi)模式。
65. USERDEFAULT:為 USER 指定默認(rèn)值。
66. UTS:指定容器的 UTS 名稱空間。
67. VOLUMEDEFAULT:為 VOLUME 指定默認(rèn)值。
68. ARGFILE:從文件中讀取 ARG 變量。
69. BUILDARG:設(shè)置運(yùn)行構(gòu)建時(shí)的參數(shù),類似于 ARG 指令。
70. CACHEFROM:指定構(gòu)建時(shí)要使用的緩存鏡像列表。
71. COMPOSE:應(yīng)用 Docker Compose 配置。
72. CONFIG:添加配置文件到容器。
73. CONTAINERNAME:指定容器名稱。
74. CPU:指定容器的 CPU 限制。
75. DEBUG:?jiǎn)⒂谜{(diào)試模式。
76. DEPLOY:指定 stack 文件的部署配置。
77. DOMAINNAME:為容器指定域名。
78. DOCKERFILE:指定 Dockerfile 名稱。默認(rèn)為 'Dockerfile'。
79. DOMAINSEARCH:為容器中的 DNS 解析配置搜索域名。
80. ENTRYPOINTSHELL:為 ENTRYPOINT 指定 shell。
81. ENVFILE:從文件中讀取環(huán)境變量。
82. EXPORTVARS:在進(jìn)入容器之前導(dǎo)出主機(jī)環(huán)境變量。
83. FILE:將文件添加到容器中。
84. FLUENTD:配置 Fluentd 日志驅(qū)動(dòng)程序。
85. FROMCACHE:選擇要使用的緩存版本的 FROM 語句。
86. HEALTHCHECKCMD:為健康檢查指定 CMD 命令。
87. HTTPPROXY:為容器設(shè)置 http 代理。
88. HTTPSVERIFY:指定 Docker 是否驗(yàn)證 https 證書。
89. INCLUDE:包含另一個(gè)文件。
90. INITPATH:覆蓋默認(rèn)的 init 路徑。
91. ISOLATION:指定容器的隔離級(jí)別。
92. LABELFILE:從文件中讀取元數(shù)據(jù)標(biāo)簽。
93. LINKSDEFAULT:為 LINKS 指定默認(rèn)值。
94. LOGCONF:為容器配置日志驅(qū)動(dòng)程序。
95. MAINTAINERFILE:從文件中讀取鏡像維護(hù)者信息。
96. MEMSWAP:指定容器的內(nèi)存和交換空間限制。
97. NETWORKALIASES:為容器設(shè)置網(wǎng)絡(luò)別名。
98. NOPROXY:配置容器的無代理列表。
99. PLATFORM:指定構(gòu)建鏡像的平臺(tái)。
100. REMOTEIMPORT:從遠(yuǎn)程位置導(dǎo)入文件或目錄到容器中。
這些指令可以幫助您定義如何構(gòu)建和配置 Docker 鏡像,根據(jù)您的實(shí)際需求來選擇合適的指令以構(gòu)建出優(yōu)質(zhì)的鏡像。
到此這篇關(guān)于docker構(gòu)建鏡像需使用的命令的文章就介紹到這了,更多相關(guān)docker構(gòu)建鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Dockerfile中yum install無法使用的問題及解決
在使用Dockerfile自定義CentOS 7容器過程中,可能會(huì)遇到容器內(nèi)無法使用yum命令的問題,首先,確認(rèn)主機(jī)是否能聯(lián)網(wǎng),其次,檢查在Dockerfile打包新容器時(shí),容器是否能聯(lián)網(wǎng),若發(fā)現(xiàn)容器無法聯(lián)網(wǎng),一種解決方法是編輯/etc/docker/daemon.json文件2024-11-11docker創(chuàng)建mongodb數(shù)據(jù)庫容器的方法
本文將通過docker創(chuàng)建一個(gè)mongodb數(shù)據(jù)庫容器,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-03-03如何監(jiān)控docker容器運(yùn)行狀態(tài) shell 腳本
這篇文章主要介紹了如何監(jiān)控docker容器運(yùn)行狀態(tài) shell 腳本的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03使用rpm安裝指定版本docker(1.12.6)的詳細(xì)步驟
為了防止安裝高版本的docker引發(fā)的錯(cuò)誤,需要安裝1.12.6版本的docker,下面小編給大家?guī)砹耸褂胷pm安裝指定版本的docker(1.12.6)的步驟,感興趣的朋友一起看看吧2021-08-08使用docker部署springboot項(xiàng)目到服務(wù)器的詳細(xì)過程
這篇文章主要介紹了docker部署springboot項(xiàng)目到服務(wù)器,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06使用Docker搭建Apache Kafka環(huán)境的詳細(xì)過程
這篇文章主要介紹了使用Docker搭建Apache Kafka環(huán)境,本文使用Docker技術(shù)創(chuàng)建單個(gè)Kafka節(jié)點(diǎn)和Kafka集群環(huán)境,并且使用可視化工具連接服務(wù)查看代理服務(wù)器的配置信息,需要的朋友可以參考下2022-10-10手把手教你實(shí)現(xiàn)Docker 部署 vue 項(xiàng)目
這篇文章主要介紹了手把手教你實(shí)現(xiàn)Docker 部署 vue 項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02