最近接手一個國外項目,用的rust語言,部署在AWS的ECS上面。
我們開發(fā)在開發(fā)環(huán)境build發(fā)布到集群以后,報錯docker: not found。
一開始以為是容器里面沒有安裝成功docker,檢查dockerfile沒有發(fā)現(xiàn)異常。
docker build以后本地測試鏡像里面docker命令可以正常運行。
由于這個項目的部署沒有采用自動化,而且服務(wù)與服務(wù)之間的部署都是靠多個腳本去觸發(fā)。
一開始懷疑ECS上面運行的鏡像不是我們本地推送的鏡像,經(jīng)過一些列的排查,發(fā)現(xiàn)使用的tag是正確的。
由于這個項目build需要很久,push鏡像也需要很久,就自己寫了一個dockerfile build測試,但是發(fā)布以后可以正常找到docker命令。
就在沒有方向的時候,開發(fā)說這個項目之前是部署在amd架構(gòu)的服務(wù)器上面的,最近項目方才改到了arm架構(gòu)上面,會不會是因為這個。
看了使用的build命令
buildx 默認使用的 構(gòu)建器( builder ) 驅(qū)動是 docker driver,它不支持同時構(gòu)建多個 platform 的鏡像。
需要使用 docker buildx create 創(chuàng)建docker-container driver的構(gòu)建器。
docker run --privileged --rm tonistiigi/binfmt --install all
docker buildx create --name mybuilder --driver docker-container --use
docker buildx inspect --bootstrap