什么是’码头组合构建’和’码头构建’的区别?

docker-compose builddocker build有什么不同?

假设在一个修改过的项目路径中有一个 docker-compose.yml文件:

docker-compose build

还有

docker build
114278 次浏览

docker-compose build将在 docker-compose.yml文件中构建服务。

Https://docs.docker.com/compose/reference/build/

docker build将构建由 Dockerfile 定义的映像。

Https://docs.docker.com/engine/reference/commandline/build/

可以将 docker-compose看作是 docker CLI 的包装器(实际上它是 python 中的另一个实现,如 在评论中说) ,这样可以节省时间,避免500个字符长的代码行(同时还可以启动多个容器)。它使用一个名为 docker-compose.yml的文件来检索参数。

您可以找到 docker-compose 文件格式 给你的参考资料。

因此,基本上 docker-compose build将读取您的 docker-compose.yml,查找包含 build:语句的所有服务,并为每个服务运行 docker build

每个 build: 都可以指定要传递给 docker 的 Dockerfile、上下文和 args。

以一个 docker-compose.yml文件示例结束:

version: '3.2'


services:
database:
image: mariadb
restart: always
volumes:
- ./.data/sql:/var/lib/mysql


web:
build:
dockerfile: Dockerfile-alpine
context: ./web
ports:
- 8099:80
depends_on:
- database

当调用 docker-compose build时,只有 web目标需要构建映像。docker build命令应该是这样的:

docker build -t web_myproject -f Dockerfile-alpine ./web

基本上,docker-compose 是使用 docker 的一种更好的方法,而不仅仅是一个 docker 命令。

如果这里的问题是,如果 docker-compose 构建命令,将构建一个包含多个映像的 zip 类型的东西,否则将与通常的 Dockerfile 分开构建,那么这种想法是错误的。

Docker-compose build,将通过在 Docker-compose. yml 中进入单独的服务条目来构建单独的映像。

使用 docker 映像,命令,我们可以看到所有单独的映像也被保存。

真正的魔术是码头作曲。

这个程序基本上将创建一个相互连接的容器网络,这些容器可以使用类似于主机名的容器名彼此通信。

加上第一个答案。

您可以在服务定义下给出映像名称和容器名称。

例如,对于下面的 docker 构建示例中的名为“ web”的服务,您可以显式地给出图像名称和容器名称,这样 docker 就不必使用默认值。

否则,docker 将使用的映像名称将是文件夹(Directory)和服务名称的串联。例如 myprojectdir _ web

因此,最好显式地放置在执行 docker build 命令时将生成的所需映像名称。

例如:。 图片来源: mywebserviceImage Container _ name: my-webServiceImage-Container

示例 docker-compose. yml 文件:

version: '3.2'
services:
web:
build:
dockerfile: Dockerfile-alpine
context: ./web
ports:
- 8099:80
image: mywebserviceImage
container_name: my-webServiceImage-Container
depends_on:
- database

关于 docker builddocker-compose build之间的区别,还有几个词要补充。 两者都有使用现有图像作为图层缓存来构建图像的选项。

不幸的是,到目前为止,在这个级别上,一个图像作为图层缓存(ID 不兼容)与另一个图像不兼容。 然而,docker-compose V1.25.0(2019-11-18)引入了一个实验特性 组合 _ DOCKER _ CLI _ BUILD,使 docker-compose使用本地的 docker 构建器(因此,由 docker build制作的图像可以用作 docker-compose build的层缓存)