如何配置Docker Buildx Build默认启用--load选项兼容原有构建脚本?
解决方案:无需修改脚本让Buildx默认加载镜像到本地
目前Docker Buildx没有官方提供的配置项能直接把--load设为docker buildx build的默认参数——因为--load是为单架构构建后显式加载到本地Docker守护进程设计的,Buildx默认行为是将构建结果存到缓存或推送到镜像仓库。
不过可以通过以下方式实现原有脚本零修改:
用Shell别名自动注入
--load参数
在你的M1 MacBook的Shell配置文件(比如~/.zshrc或~/.bashrc)中添加以下别名:alias docker='function _docker() { if [[ "$1" == "build" ]]; then command docker buildx build --load "${@:2}" else command docker "$@" fi }; _docker'执行
source ~/.zshrc(或对应的配置文件)使别名生效后,原有脚本里的docker build命令会自动被替换为docker buildx build --load,其他Docker命令不受任何影响。兼容Linux用户的优化
如果要让脚本跨平台兼容,还可以给别名加架构判断,只在ARM64的Mac上生效:if [[ "$(uname -m)" == "arm64" ]]; then alias docker='function _docker() { if [[ "$1" == "build" ]]; then command docker buildx build --load "${@:2}" else command docker "$@" fi }; _docker' fi这样Linux用户无需额外安装Buildx,依然使用原生的
docker build命令。
总结:不需要修改原有脚本,通过Shell别名的方式就能实现你的需求,这是目前最简便的替代方案。
内容的提问来源于stack exchange,提问作者Paul Li
相关产品推荐
相关产品推荐

