gpt4 book ai didi

php - Dockerfile FROM vs Docker-compose IMAGE

转载 作者:行者123 更新时间:2023-12-02 18:27:51 25 4
gpt4 key购买 nike

我目前正在学习 Docker。阅读文档和几篇文章后,我显然有更多的问题而不是答案。目前对我来说最有趣的是:两者之间有什么区别?

FROM some:docker-image

在 Dockerfile 和
image: digitalocean.com/php 

在 docker-compose.yml

我明白他们应该抓取图像并从中创建一个容器。我不明白的是,如果我们同时指定两者会发生什么,例如:
version: '3'
services:
#PHP Service
app:
build:
context: .
dockerfile: Dockerfile
image: digitalocean.com/php

docker-compose.yml 和 Dockerfile 都指定了图像。
当这些图像不同时会发生什么?
docker-compose.yml 会永远赢吗?它会只使用这个“顶部”图像吗?
它们会以某种方式重叠吗?
或者,也许我都弄错了?

我确实看到了 this但我仍然不确定我是否理解发生了什么。

最佳答案

区别是构建 对比 运行

将图像视为应用程序,将容器视为运行应用程序的进程。运行应用程序不会改变应用程序。运行容器同样不会改变镜像。图像来自 Dockerfiles使用 docker build并且是执着的。容器由 docker run 根据需要创建, docker-compose 、kubernetes 或来自图像的类似工具,并且是临时的。
Dockerfiledocker build 使用命令来构建一个新的镜像。
Dockerfile第一行通常用 FROM 指定基本图像,即 FROM nginx .后续 RUN Dockerfile 中的行提供 docker build 的附加步骤将在 shell 中执行,在 FROM 的上下文中图像,以创建新图像。请注意 Dockerfile不指定新图像的名称。相反,新图像在 -t some/name 中命名。选项 docker builddocker-compose.yml文件指定一组图像作为组合服务的一部分一起下载和运行。例如,docker-compose.yml一个博客可能由一个网络服务器图像、一个应用程序图像和一个数据库图像组成,并且不仅会指定图像,还可能会指定它们的通信方式。

由于 docker builds 和 docker compose 是单独的操作,因此不存在冲突或差异检测。 docker-compose.yml控制将要下载和运行的内容,您还可以构建您喜欢的任何内容。

另外,正如@David Maze 在评论中提到的:

If you use both options then Docker Compose will build the image as specified and then tag it using the image: name; this can be confusing if you're putting a "standard" image name there.



我的猜测是如果你这样做,你最终可能会得到一个图像,比如 nginx在您自己的机器上与 Dockerhub 镜像不匹配。不要那样做。相反,为您构建的任何图像使用唯一名称。

关于php - Dockerfile FROM vs Docker-compose IMAGE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56997793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com