在 X86_64(amd64) 平台上的docker支持打包构建多环境镜像并推送镜像到Harbor
我自己的电脑系统是X86_64(amd64)平台,我下载好Docker Desktop之后【具体下载步骤看上一章】,想构建多环境平台的镜像,并推送镜像到Harbar,具体实现过程如下:
- 打开Docker Desktop小鲸鱼图标应用,在设置中找到Docker Engine中配置镜像源,然后重启Docker Desktop应用,点击左下角,切换状态,点击Restart,重新启动服务。注意一定要重新启动配置的镜像源才会生效
"registry-mirrors": ["https://docker.m.daocloud.io/","https://huecker.io/","https://dockerhub.timeweb.cloud","https://noohub.ru/","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn","https://xx4bwyg2.mirror.aliyuncs.com","http://f1361db2.m.daocloud.io","https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]
同时贴上我这边的所有配置参数如下:
注意:insecure-registries中配置的是私有源地址,可根据需要自行配置
{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": true,"features": {"buildkit": true},"insecure-registries": ["harbor.xxxx.net"],"registry-mirrors": ["https://docker.m.daocloud.io/","https://huecker.io/","https://dockerhub.timeweb.cloud","https://noohub.ru/","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn","https://xx4bwyg2.mirror.aliyuncs.com","http://f1361db2.m.daocloud.io","https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]
}
- 查看docker状态,检查docker服务是否正常运行,并验证刚刚配置的镜像源是否生效,如果有正确输出刚刚配置的镜像源地址,则说明配置生效。如果没有,可返回上一步检查配置镜像源后,是否有重启
docker info
正常输出如下:
Client:Version: 28.3.2Context: desktop-linuxDebug Mode: falsePlugins:ai: Docker AI Agent - Ask Gordon (Docker Inc.)Version: v1.9.11Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-ai.exebuildx: Docker Buildx (Docker Inc.)Version: v0.26.1-desktop.1Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-buildx.execloud: Docker Cloud (Docker Inc.)Version: v0.4.11Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-cloud.execompose: Docker Compose (Docker Inc.)Version: v2.39.1-desktop.1Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-compose.exedebug: Get a shell into any image or container (Docker Inc.)Version: 0.0.42Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-debug.exedesktop: Docker Desktop commands (Docker Inc.)Version: v0.2.0Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-desktop.exeextension: Manages Docker extensions (Docker Inc.)Version: v0.2.29Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-extension.exeinit: Creates Docker-related starter files for your project (Docker Inc.)Version: v1.4.0Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-init.exemcp: Docker MCP Plugin (Docker Inc.)Version: v0.13.0Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-mcp.exemodel: Docker Model Runner (EXPERIMENTAL) (Docker Inc.)Version: v0.1.36Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-model.exesbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)Version: 0.6.0Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-sbom.exescout: Docker Scout (Docker Inc.)Version: v1.18.2Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-scout.exeServer:Containers: 0Running: 0Paused: 0Stopped: 0Images: 1Server Version: 28.3.2Storage Driver: overlay2Backing Filesystem: extfsSupports d_type: trueUsing metacopy: falseNative Overlay Diff: trueuserxattr: falseLogging Driver: json-fileCgroup Driver: cgroupfsCgroup Version: 2Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local splunk syslogCDI spec directories:/etc/cdi/var/run/cdiDiscovered Devices:cdi: docker.com/gpu=webgpuSwarm: inactiveRuntimes: io.containerd.runc.v2 nvidia runcDefault Runtime: runcInit Binary: docker-initcontainerd version: 05044ec0a9a75232cad458027ca83437aae3f4darunc version: v1.2.5-0-g59923efinit version: de40ad0Security Options:seccompProfile: builtincgroupnsKernel Version: 6.6.87.2-microsoft-standard-WSL2Operating System: Docker DesktopOSType: linuxArchitecture: x86_64CPUs: 12Total Memory: 7.62GiBName: docker-desktopID: a08de987-7756-4e24-bf3e-ad7df58ac2fcDocker Root Dir: /var/lib/dockerDebug Mode: falseHTTP Proxy: http.docker.internal:3128HTTPS Proxy: http.docker.internal:3128No Proxy: hubproxy.docker.internalLabels:com.docker.desktop.address=npipe://\\.\pipe\docker_cliExperimental: trueInsecure Registries:harbor.xxxx.nethubproxy.docker.internal:5555::1/128127.0.0.0/8Registry Mirrors:https://docker.m.daocloud.io/https://huecker.io/https://dockerhub.timeweb.cloud/https://noohub.ru/https://dockerproxy.com/https://docker.mirrors.ustc.edu.cn/https://docker.nju.edu.cn/https://xx4bwyg2.mirror.aliyuncs.com/http://f1361db2.m.daocloud.io/https://registry.docker-cn.com/http://hub-mirror.c.163.com/Live Restore Enabled: falseWARNING: DOCKER_INSECURE_NO_IPTABLES_RAW is set
最后执行构建并推送多环境镜像的命令:
docker buildx build --platform linux/amd64,linux/arm64 -f ./Dockerfile -t "harbor.xxxx.net/ailp/ee/frontend/app:v3.0.3.9" --push .
正常输出如下:
[+] Building 7.2s (11/11) FINISHED docker-container:multi-platform-builder=> [internal] load build definition from Dockerfile 0.0s=> => transferring dockerfile: 184B 0.0s=> [linux/arm64 internal] load metadata for harbor.xxxx.net/ailp/ee/frontend/base:v2 0.3s => [linux/amd64 internal] load metadata for harbor.xxxx.net/ailp/ee/frontend/base:v2 0.3s => [internal] load .dockerignore 0.0s=> => transferring context: 142B 0.0s => [linux/arm64 1/2] FROM harbor.xxxx.net/ailp/ee/frontend/base:v2@sha256:6ad3d6ed02c959a331f7b4ae644829af9a255 0.0s => => resolve harbor.xxxx.net/ailp/ee/frontend/base:v2@sha256:6ad3d6ed02c959a331f7b4ae644829af9a255d8c95ffc47b4 0.0s => [internal] load build context 0.1s => => transferring context: 132.21kB 0.1s => [linux/amd64 1/2] FROM harbor.xxxx.net/ailp/ee/frontend/base:v2@sha256:6ad3d6ed02c959a331f7b4ae644829af9a255 0.0s => => resolve harbor.xxxx.net/ailp/ee/frontend/base:v2@sha256:6ad3d6ed02c959a331f7b4ae644829af9a255d8c95ffc47b4 0.0s => CACHED [linux/amd64 2/2] COPY dist /usr/share/nginx/html 0.0s=> CACHED [linux/arm64 2/2] COPY dist /usr/share/nginx/html 0.0s => exporting to image 6.6s => => exporting layers 3.4s => => exporting manifest sha256:62869d8fc9b0ac0d0f7264f9908df7913c5a044447f09eb6ed55912e148dfef4 0.0s=> => exporting config sha256:e22509d4a4d5492e171e8c64682294d6f365d6c93da8339dfdfcb2ac5c1788cc 0.0s => => exporting attestation manifest sha256:ae5a3b66a0ea671f389301130a333db68b82aa606587b497faf8216698b4e640 0.0s => => exporting manifest sha256:68eafff9180ad6ca5b90baf644bf82d0f92ac308ede3db6904b1ddd4e9a7ccce 0.0s=> => exporting config sha256:7e9ee34b58434675a6006d34fcc194a1cab3bf5d8addc64dad25a3beb1887c36 0.0s => => exporting attestation manifest sha256:cf8f688899e2b5e12007bb537e99ff1b39e50a4d4de05a08f5385061bc027c20 0.1s => => exporting manifest list sha256:1a706ff8a56c57f545bd10807c55750b86a4b03ae2870d3b3f87992ac87450a0 0.0s => => pushing layers 2.0s=> => pushing manifest for harbor.xxxx.net/ailp/ee/frontend/app:v3.0.3.9@sha256:1a706ff8a56c57f545bd10807c55750 0.9s => [auth] ailp/ee/frontend/app:pull,push token for harbor.xxxx.net 0.0sView build details: docker-desktop://dashboard/build/multi-platform-builder/multi-platform-builder0/liuedj57irmckc7smjurv8sfm
打开Docker desktop 在Builds中可看到刚刚构建成功的版本
在Harbor中也能看到推送成功之后的镜像(amd64和arm64):