我了解到,如果我在目錄中有以下內容
Dockerfile
FROM fedora
ENV VAR=42
CMD ["bash"]
以及以下撰寫檔案
碼頭工人-compose.yml
version: "3.0"
services:
app:
build: .
image: ubuntu
Docker 應該從中構建一個鏡像fedora并命名它ubuntu。但相反,它似乎只是拉取了 ubuntu 影像(如果我注釋掉image: ubuntu它會拉取 fedora 影像)。這是為什么?
docker docs:如果影像不存在,Compose 會嘗試拉取它,除非您還指定了構建,在這種情況下,它使用指定的選項構建它并使用指定的標簽對其進行標記。
uj5u.com熱心網友回復:
我進行了測驗,它對我有用,但我確實需要更改撰寫檔案內容以使服務成為地圖,因為你輸入的是我得到的:“services.build 必須是一個映射”。
version: "3.0"
services:
so_test:
build: .
image: ubuntu
但我的 Dockerfile 是一樣的:
FROM fedora
ENV VAR=42
CMD ["bash"]
構建日志:
[ ] Running 2/2
? so_test Pulled 9.3s
? 5f3d23ccb99f Pull complete 3.8s
[ ] Building 8.0s (6/6) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 72B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/fedora:latest 1.3s
=> [auth] library/fedora:pull token for registry-1.docker.io 0.0s
=> [1/1] FROM docker.io/library/fedora@sha256:40ba585f0e25c096a08c30ab2f70ef3820b8ea5a4bdd16da0edbfc0a6952fa57 6.6s
=> => resolve docker.io/library/fedora@sha256:40ba585f0e25c096a08c30ab2f70ef3820b8ea5a4bdd16da0edbfc0a6952fa57 0.0s
=> => sha256:cfe295ee216d5995136f055659294ebc2dcbd736f94c5ac14dffb39fa2eebb27 529B / 529B 0.0s
=> => sha256:788739295edac7b7b34351db644c8a5506e7de56af398985c59bae8d87d45a1e 2.00kB / 2.00kB 0.0s
=> => sha256:3f28ea9d8c33c40fa95a05f63764cc6e8ef9d9449fd75da415eca42543b80f52 53.62MB / 53.62MB 4.8s
=> => sha256:40ba585f0e25c096a08c30ab2f70ef3820b8ea5a4bdd16da0edbfc0a6952fa57 1.20kB / 1.20kB 0.0s
=> => extracting sha256:3f28ea9d8c33c40fa95a05f63764cc6e8ef9d9449fd75da415eca42543b80f52 1.6s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:f5f920b43d06c51352da33d13114986564abdfb5ce7e9583d97a414b3e17654a 0.0s
=> => naming to docker.io/library/ubuntu
Docker Desktop 容器鏡像輸出截圖
我很想嘗試這個,因為一開始我不理解 Docker 檔案中的措辭,但后來理解了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/415763.html
標籤:
