docker有两个命令可以完成镜像构建,分别是:
docker buildx build ...
docker build ...
那么他们的区别是什么呢?
通过查阅相关文档,buildx是Docker 官方提供的一个构建工具,可以和Docker Engine 19.03及之后的版本一起使用;自Docker Engine 23.0和Docker Desktop 4.19起,buildx是docker的默认构建客户端。
在Docker Engine 23以后的版本上,通过命令行的帮助信息可以看到,两个命令其实是别名关系
也就是说,两者是等价的,但实际验证发现,部分参数的默认值却不一样,比如--builder参数,docker buildx build的默认值是当前builder(命令:docker buildx ls可以查看,名称结尾带*的是当前builder);而docker build的--builder默认值是default。所以,以下两条构建命令完全等效
docker buildx build --platform linux/arm64,linux/amd64 -t curl:1.0 .
docker build --builder mybld --platform linux/arm64,linux/amd64 -t curl:1.0 .
但是需要注意,是docker buildx build和docker build等价,并不是docker buildx和docker build等价,因为buildx除了镜像构建,还有构建器管理(docker buildx create/rm/stop)等功能;不过docker也都为它们做了别名映射,即docker buildx *** = docker builder ***,所以,以下三条命令是完全等效的的
docker buildx build --platform linux/arm64,linux/amd64 -t curl:1.0 .
docker builder build --builder mybld --platform linux/arm64,linux/amd64 -t curl:1.0 .
docker build --builder mybld --platform linux/arm64,linux/amd64 -t curl:1.0 .
一句话总结:
docker buildx build等效于docker build --builder