docker-compose build和 docker build有什么不同?
docker-compose build
docker build
假设在一个修改过的项目路径中有一个 docker-compose.yml文件:
docker-compose.yml
还有
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 文件格式 给你的参考资料。
因此,基本上 docker-compose build将读取您的 docker-compose.yml,查找包含 build:语句的所有服务,并为每个服务运行 docker build。
build:
每个 build: 都可以指定要传递给 docker 的 Dockerfile、上下文和 args。
Dockerfile
以一个 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命令应该是这样的:
web
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 build和 docker-compose build之间的区别,还有几个词要补充。 两者都有使用现有图像作为图层缓存来构建图像的选项。
--cache-from <image>
docker-composer
build
cache_from
不幸的是,到目前为止,在这个级别上,一个图像作为图层缓存(ID 不兼容)与另一个图像不兼容。 然而,docker-compose V1.25.0(2019-11-18)引入了一个实验特性 组合 _ DOCKER _ CLI _ BUILD,使 docker-compose使用本地的 docker 构建器(因此,由 docker build制作的图像可以用作 docker-compose build的层缓存)