1.更新docker版本到大於或等於19.03
sudo apt install -y apt-transport-https
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce
2.設置環境變量
export DOCKER_CLI_EXPERIMENTAL=enabled
3.啟用binfmt_misc
docker run --rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d
4.驗證是 binfmt_misc 否開啟
ls -al /proc/sys/fs/binfmt_misc/
cat /proc/sys/fs/binfmt_misc/qemu-aarch64
5.新建構建器
docker buildx create --use --name mybuilder
6.啟動構建起
docker buildx inspect mybuilder --bootstrap
7.查看構建器及其所支持的cpu架構
docker buildx ls
8.創建Dockerfile
9.構建跨平台鏡像
docker buildx build -t 鏡像名 --platform=linux/arm,linux/arm64,linux/amd64 [Dockerfile所在的路徑] --push
注:提示需要登錄Dokcer Hub。貌似只能拉取Dokcer Hub里的鏡像構建跨平台鏡像,而不能用自己本地的鏡像構建。
注:開了binfmt_misc后,linux/armd64架構的宿主機上可以運行armf架構的docker容器(例如,把樹莓派上的系統打包並導入成docker鏡像,再創建容器。開啟binfmt_misc后,容器可正常運行。如果不開啟binfmt_misc,會報錯:standard_init_linux.go:211: exec user process caused “exec format error”)