我自己的电脑系统是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.2
Context: desktop-linux
Debug Mode: false
Plugins:
ai: Docker AI Agent - Ask Gordon (Docker Inc.)
Version: v1.9.11
Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-ai.exe
buildx: Docker Buildx (Docker Inc.)
Version: v0.26.1-desktop.1
Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-buildx.exe
cloud: Docker Cloud (Docker Inc.)
Version: v0.4.11
Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-cloud.exe
compose: Docker Compose (Docker Inc.)
Version: v2.39.1-desktop.1
Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-compose.exe
debug: Get a shell into any image or container (Docker Inc.)
Version: 0.0.42
Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-debug.exe
desktop: Docker Desktop commands (Docker Inc.)
Version: v0.2.0
Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-desktop.exe
extension: Manages Docker extensions (Docker Inc.)
Version: v0.2.29
Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-extension.exe
init: Creates Docker-related starter files for your project (Docker Inc.)
Version: v1.4.0
Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-init.exe
mcp: Docker MCP Plugin (Docker Inc.)
Version: v0.13.0
Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-mcp.exe
model: Docker Model Runner (EXPERIMENTAL) (Docker Inc.)
Version: v0.1.36
Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-model.exe
sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
Version: 0.6.0
Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-sbom.exe
scout: Docker Scout (Docker Inc.)
Version: v1.18.2
Path: C:\Users\shiqiaoyun\.docker\cli-plugins\docker-scout.exe
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 1
Server Version: 28.3.2
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
CDI spec directories:
/etc/cdi
/var/run/cdi
Discovered Devices:
cdi: docker.com/gpu=webgpu
Swarm: inactive
Runtimes: io.containerd.runc.v2 nvidia runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 05044ec0a9a75232cad458027ca83437aae3f4da
runc version: v1.2.5-0-g59923ef
init version: de40ad0
Security Options:
seccomp
Profile: builtin
cgroupns
Kernel Version: 6.6.87.2-microsoft-standard-WSL2
Operating System: Docker Desktop
OSType: linux
Architecture: x86_64
CPUs: 12
Total Memory: 7.62GiB
Name: docker-desktop
ID: a08de987-7756-4e24-bf3e-ad7df58ac2fc
Docker Root Dir: /var/lib/docker
Debug Mode: false
HTTP Proxy: http.docker.internal:3128
HTTPS Proxy: http.docker.internal:3128
No Proxy: hubproxy.docker.internal
Labels:
com.docker.desktop.address=npipe://\\.\pipe\docker_cli
Experimental: true
Insecure Registries:
harbor.xxxx.net
hubproxy.docker.internal:5555
::1/128
127.0.0.0/8
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/
Live Restore Enabled: false
WARNING: 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.0s
View build details: docker-desktop://dashboard/build/multi-platform-builder/multi-platform-builder0/liuedj57irmckc7smjurv8sfm
打开Docker desktop 在Builds中可看到刚刚构建成功的版本
在Harbor中也能看到推送成功之后的镜像(amd64和arm64):