docker?build與Dockerfile問題
docker build與Dockerfile
docker build常用命令
docker build . # 默認(rèn)使用當(dāng)前目錄下Dockerfile docker build . -f centosdockerfile # 其他名稱dockerfile,需要指定 docker build -t ghostwritten/app . # 指定鏡像名 docker build -t ghostwritten/app:1.0.2 -t ghostwritten/app:latest . # 指定多個(gè)tag # Dockerfile文件中的每條指令會(huì)被獨(dú)立執(zhí)行,并會(huì)創(chuàng)建一個(gè)新鏡像,Docker 會(huì)重用已生成的中間鏡像,以加速docker build的構(gòu)建速度,也可以通過--cache-from指定 docker build -t ghostwritten/app --cache-from 31f630c65071 . docker build -t ghostwritten/app --no-cache . # 不使用緩存
Dockerfile
FROM # 構(gòu)建自己所需鏡像使用的基礎(chǔ)鏡像 MAINTAINER # 即將構(gòu)建鏡像的作者,格式為: 姓名<郵箱> ENV # 設(shè)置環(huán)境變量 USER # 為RUN、CMD、ENTRYPOINT執(zhí)行命令指定運(yùn)行用戶 WORKDIR # 鏡像啟動(dòng)后在哪個(gè)工作目錄 RUN # 鏡像構(gòu)建時(shí)需要的命令 COPY # 拷貝文件或目錄到鏡像中 ADD # 需要向鏡像中注入的配置文件或者壓縮包等 VOLUME # 掛載的目錄,可以是匿名掛載或者具名掛載 EXPOSE # 聲明容器中運(yùn)行的服務(wù)的端口 CMD # 容器啟動(dòng)的時(shí)候運(yùn)行的指令,若寫多個(gè)的話,只有一個(gè)生效,可以運(yùn)行時(shí)在容器外部重新指定 ENTRYPOINT # 與CMD命令類似,但ENTRYPOINT可以在容器外追加命令 ONBUILD # 當(dāng)構(gòu)建一個(gè)被繼承DockerFile,這時(shí)會(huì)運(yùn)行ONBUILD命令
docker build 指定dockerfile
docker build命令會(huì)根據(jù)Dockerfile文件及上下文構(gòu)建新Docker鏡像。
構(gòu)建上下文是指Dockerfile所在的本地路徑或一個(gè)URL(Git倉(cāng)庫(kù)地址)。
構(gòu)建上下文環(huán)境會(huì)被遞歸處理,所以,構(gòu)建所指定的路徑還包括了子目錄,而URL還包括了其中指定的子模塊。
將當(dāng)前目錄做為構(gòu)建上下文時(shí),可以像下面這樣使用docker build命令構(gòu)建鏡像:
$ docker build . Sending build context to Docker daemon ?6.51 MB ...
說明:構(gòu)建會(huì)在Docker后臺(tái)守護(hù)進(jìn)程(daemon)中執(zhí)行,而不是CLI中。構(gòu)建前,構(gòu)建進(jìn)程會(huì)將全部?jī)?nèi)容(遞歸)發(fā)送到守護(hù)進(jìn)程。大多情況下,應(yīng)該將一個(gè)空目錄作為構(gòu)建上下文環(huán)境,并將Dockerfile文件放在該目錄下。
在構(gòu)建上下文中使用的Dockerfile文件,是一個(gè)構(gòu)建指令文件。為了提高構(gòu)建性能,可以通過.dockerignore文件排除上下文目錄下,不需要的文件和目錄。
Dockerfile一般位于構(gòu)建上下文的根目錄下,也可以通過-f指定該文件
$ docker build -f /path/to/a/Dockerfile .
構(gòu)建時(shí),還可以通過-t參數(shù)指定構(gòu)建成后,鏡像的倉(cāng)庫(kù)、標(biāo)簽等:
docker build -f Dockerfile.test -t image-train-test .
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- docker?build?-t?和?docker?build?-f?區(qū)別解析
- docker-compose up -d和docker-compose up --build的區(qū)別
- Docker Buildx構(gòu)建多平臺(tái)鏡像的實(shí)現(xiàn)
- 使用docker build kit構(gòu)建樹莓派上可用的Docker鏡像
- Docker自動(dòng)化構(gòu)建Automated Build實(shí)現(xiàn)過程圖解
- Docker buildx構(gòu)建多平臺(tái)鏡像并推送到私有倉(cāng)庫(kù)的方法
- Docker build命令使用小結(jié)
相關(guān)文章
使用docker-compose.yml構(gòu)建鏡像的方法
docker-compose是docker提供的一個(gè)命令行工具,用來定義和運(yùn)行由多個(gè)容器組成的應(yīng)用,這篇文章主要介紹了使用docker-compose.yml構(gòu)建鏡像的方法,需要的朋友可以參考下2023-05-05完美解決docker安裝mysql后Navicat連接不上的問題
這篇文章主要介紹了完美解決docker安裝mysql后Navicat連接不上的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03DOCKERFILE學(xué)習(xí)及使用注意事項(xiàng)
Dockerfile 由一行行命令語(yǔ)句組成,并且支持以 # 開頭的注釋行。一般的,Dockerfile分為四部分:基礎(chǔ)鏡像信息、維護(hù)者信息、鏡像操作指令、容器啟動(dòng)時(shí)執(zhí)行指令2017-02-02如何將Docker的構(gòu)建時(shí)間減少40%(推薦)
這篇文章主要介紹了如何將Docker的構(gòu)建時(shí)間減少40%,本文描述了我們?cè)趦?yōu)化CI管道后獲得的一些新見解,需要的朋友可以參考下2023-11-11docker容器間互相訪問(docker bridge網(wǎng)絡(luò))
本文主要介紹了docker容器間互相訪問(docker bridge網(wǎng)絡(luò)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Docker學(xué)習(xí)之?dāng)?shù)據(jù)卷和Dockerfile詳解
在容器化應(yīng)用的開發(fā)和部署過程中,數(shù)據(jù)的持久化和共享是一個(gè)重要的問題,下面這篇文章主要給大家介紹了關(guān)于Docker學(xué)習(xí)之?dāng)?shù)據(jù)卷和Dockerfile的相關(guān)資料,需要的朋友可以參考下2024-04-04docker批量啟動(dòng)關(guān)閉所有容器的操作
這篇文章主要介紹了docker批量啟動(dòng)關(guān)閉所有容器的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03docker-compose java.net.UnknownHostException問題
這篇文章主要介紹了docker-compose java.net.UnknownHostException問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05