最近接手一个国外项目,用的rust语言,部署在AWS的ECS上面。
我们开发在开发环境build发布到集群以后,报错docker: not found。
一开始以为是容器里面没有安装成功docker,检查dockerfile没有发现异常。
docker build以后本地测试镜像里面docker命令可以正常运行。
由于这个项目的部署没有采用自动化,而且服务与服务之间的部署都是靠多个脚本去触发。
一开始怀疑ECS上面运行的镜像不是我们本地推送的镜像,经过一些列的排查,发现使用的tag是正确的。
由于这个项目build需要很久,push镜像也需要很久,就自己写了一个dockerfile build测试,但是发布以后可以正常找到docker命令。
就在没有方向的时候,开发说这个项目之前是部署在amd架构的服务器上面的,最近项目方才改到了arm架构上面,会不会是因为这个。
看了使用的build命令
buildx 默认使用的 构建器( builder ) 驱动是 docker driver,它不支持同时构建多个 platform 的镜像。
需要使用 docker buildx create 创建docker-container driver的构建器。
docker run --privileged --rm tonistiigi/binfmt --install all
docker buildx create --name mybuilder --driver docker-container --use
docker buildx inspect --bootstrap