{"id":1678,"date":"2026-06-03T18:25:07","date_gmt":"2026-06-03T10:25:07","guid":{"rendered":"https:\/\/www.izhuhn.cn\/?p=1678"},"modified":"2026-06-03T18:25:07","modified_gmt":"2026-06-03T10:25:07","slug":"centos7-x86_64-%e4%b8%8a%e6%9e%84%e5%bb%ba-arm64-docker-%e9%95%9c%e5%83%8f%e7%ae%80%e8%ae%b0-2","status":"publish","type":"post","link":"https:\/\/www.izhuhn.cn\/index.php\/2026\/06\/03\/centos7-x86_64-%e4%b8%8a%e6%9e%84%e5%bb%ba-arm64-docker-%e9%95%9c%e5%83%8f%e7%ae%80%e8%ae%b0-2\/","title":{"rendered":"CentOS7 x86_64 \u4e0a\u6784\u5efa ARM64 Docker \u955c\u50cf\u7b80\u8bb0"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u4e00\u3001\u80cc\u666f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u9700\u8981\u5728 CentOS 7.6\uff08\u5185\u6838 3.10\uff09x86_64 \u865a\u62df\u673a\u4e0a\u6784\u5efa ARM64 \u67b6\u6784\u7684 Docker \u955c\u50cf\u3002\u65b9\u6848\u9009\u7528 Docker Buildx + QEMU \u7528\u6237\u6001\u6a21\u62df\uff0c\u5bf9\u6bd4\u4e86 binfmt_misc + qemu-user-static \u548c\u539f\u751f ARM64 \u673a\u5668\u4e24\u6761\u8def\uff0c\u524d\u8005\u96f6\u786c\u4ef6\u6210\u672c\u9002\u5408 CI\/CD \u573a\u666f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u73af\u5883\u6982\u51b5\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5bbf\u4e3b\u673a: Hyper-V \u865a\u62df\u673a, CentOS 7.6.1810, kernel 3.10.0<\/li>\n<li>Docker 26.1.4, Buildx v0.14.1<\/li>\n<li>QEMU 7.2.0 (qemu-aarch64-static)<\/li>\n<li>8 vCPU, 5.5GB RAM, 57GB \u53ef\u7528\u78c1\u76d8<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u3001\u8e29\u5751\u4e0e\u8981\u70b9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">**\u57511: CentOS 7 kernel 3.10 \u4e0d\u652f\u6301 binfmt_misc \u7684 F (fix binary) \u6807\u5fd7\u3002**<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F \u6807\u5fd7\u5141\u8bb8\u5185\u6838\u5728\u6ce8\u518c\u89e3\u91ca\u5668\u65f6\u76f4\u63a5\u6253\u5f00\u4e8c\u8fdb\u5236\u6587\u4ef6\uff0c\u5bb9\u5668\u5185\u5373\u4f7f\u6ca1\u6709 qemu \u4e5f\u80fd\u7528\u3002\u666e\u901a OC \u6807\u5fd7\u8981\u6c42\u5bb9\u5668 filesystem \u5185\u80fd\u8bbf\u95ee\u89e3\u91ca\u5668\u8def\u5f84\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u89e3\u51b3\u65b9\u6848\uff1a`docker run` \u65f6 bind mount qemu-static \u4e8c\u8fdb\u5236\u8fdb\u53bb\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run --rm --platform linux\/arm64 \\\n  -v \/usr\/bin\/qemu-aarch64-static:\/usr\/bin\/qemu-aarch64-static \\\n  your-image:tag<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">**\u57512\uff1aBuildKit \u5bb9\u5668\u7f51\u7edc\u9694\u79bb\u5bfc\u81f4 Docker Hub \u8d85\u65f6\u3002**<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">docker-container \u9a71\u52a8\u7684 BuildKit \u8fd0\u884c\u5728\u72ec\u7acb\u5bb9\u5668\u5185\uff0c\u4e0d\u8d70\u5bbf\u4e3b Docker daemon \u7684 registry-mirrors \u914d\u7f6e\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u89e3\u51b3\u65b9\u6848\uff1a\u521b\u5efa buildkitd.toml \u914d\u7f6e\u6587\u4ef6\uff0c\u6307\u5b9a\u955c\u50cf\u52a0\u901f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>[registry.\"docker.io\"]\n  mirrors = [\"https:\/\/docker.m.daocloud.io\"]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa builder \u65f6\u6302\u8f7d\u914d\u7f6e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker buildx create --name arm64-builder \\\n  --driver docker-container \\\n  --config \/etc\/buildkit\/buildkitd.toml \\\n  --platform linux\/amd64,linux\/arm64 --use<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e09\u3001\u6700\u7ec8\u73af\u5883\u914d\u7f6e<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">3.1 binfmt \u6ce8\u518c<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>mount binfmt_misc -t binfmt_misc \/proc\/sys\/fs\/binfmt_misc\necho ':qemu-aarch64:M::\\x7fELF\\x02\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\xb7\\x00:\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xfe\\xff\\xff\\xff:\/usr\/bin\/qemu-aarch64-static:OC' &gt; \/proc\/sys\/fs\/binfmt_misc\/register<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3.2 Builder \u914d\u7f6e<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker buildx create --name arm64-builder --driver docker-container \\\n  --config \/etc\/buildkit\/buildkitd.toml \\\n  --platform linux\/amd64,linux\/arm64 --use\ndocker buildx inspect --bootstrap arm64-builder<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3.3 \u4e00\u952e\u6062\u590d\u811a\u672c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c06 `\/usr\/local\/bin\/arm64-build-recover.sh` \u8bbe\u4e3a\u5f00\u673a\u81ea\u542f\u540e\uff0c\u6bcf\u6b21\u91cd\u542f\u6267\u884c\u5373\u53ef\u6062\u590d\u5168\u90e8\u73af\u5883\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n# ARM64 Build Environment Recovery\nuntil docker info &gt;\/dev\/null 2&gt;&amp;1; do sleep 1; done\nif [ ! -f \/proc\/sys\/fs\/binfmt_misc\/qemu-aarch64 ]; then\n    mount binfmt_misc -t binfmt_misc \/proc\/sys\/fs\/binfmt_misc\n    echo ':qemu-aarch64:M::\\x7fELF\\x02\\x01\\x01\\x00...:\/usr\/bin\/qemu-aarch64-static:OC' &gt; \/proc\/sys\/fs\/binfmt_misc\/register\nfi\ndocker buildx inspect --bootstrap arm64-builder<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">BuildKit \u5bb9\u5668 restart policy \u4e3a unless-stopped\uff0cDocker \u542f\u52a8\u540e\u81ea\u52a8\u62c9\u8d77\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u56db\u3001\u672c\u5730\u955c\u50cf\u590d\u7528\uff08\u514d\u91cd\u65b0\u4e0b\u8f7d\uff09<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">4.1 \u5229\u7528 BuildKit \u7f13\u5b58<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">BuildKit \u4f1a\u81ea\u52a8\u7f13\u5b58\u4e2d\u95f4\u5c42\u548c base image\uff0c\u518d\u6b21\u6784\u5efa\u65f6\u79d2\u7ea7\u5b8c\u6210\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u9996\u6b21\u6784\u5efa\uff08\u62c9\u53d6 base image + npm install \u4f9d\u8d56\uff09\ndocker buildx build --builder arm64-builder --platform linux\/arm64 \\\n  -t my-app:v1 --load .   # \u8017\u65f6 ~2min\n\n# \u7b2c\u4e8c\u6b21\uff08\u4ee3\u7801\u6539\u52a8\uff0c\u4f9d\u8d56\u672a\u53d8\uff09\ndocker buildx build --builder arm64-builder --platform linux\/arm64 \\\n  -t my-app:v2 --load .   # \u8017\u65f6 ~3s\uff0cCACHED<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8f93\u51fa\u4e2d\u7684 CACHED \u6807\u8bb0\u8868\u793a\u590d\u7528\u5df2\u7f13\u5b58\u5c42\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.2 Docker \u5c42\u7f13\u5b58\u590d\u7528<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5df2\u62c9\u53d6\u7684\u57fa\u7840\u955c\u50cf\u548c\u6784\u5efa\u4ea7\u7269\u5b58\u50a8\u5728\u672c\u5730\uff0c\u4e0d\u4f1a\u91cd\u590d\u4e0b\u8f7d\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u67e5\u770b\u672c\u5730 ARM64 \u955c\u50cf\ndocker images --filter \"reference=arm64*\"\n\n# \u5bfc\u51fa\u955c\u50cf\u5b9e\u73b0\u79bb\u7ebf\u5206\u53d1\ndocker save arm64-demo-app:v1 | gzip &gt; arm64-demo-app.tar.gz\n\n# \u53e6\u4e00\u53f0\u673a\u5668\u5bfc\u5165\uff08\u65e0\u9700\u7f51\u7edc\uff09\ndocker load &lt; arm64-demo-app.tar.gz<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4.3 \u6784\u5efa\u5230\u672c\u5730\u4e0d push<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528 `--load` \u53c2\u6570\u76f4\u63a5\u5c06\u955c\u50cf\u52a0\u8f7d\u5230\u672c\u5730 Docker\uff0c\u4e0d\u7ecf\u8fc7\u8fdc\u7a0b\u4ed3\u5e93\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker buildx build --builder arm64-builder --platform linux\/arm64 \\\n  -t my-image:local --load .<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4.4 \u591a\u5e73\u53f0\u540c\u65f6\u6784\u5efa<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker buildx build --builder arm64-builder \\\n  --platform linux\/amd64,linux\/arm64 \\\n  -t registry.example.com\/my-app:latest --push .<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e94\u3001Demo \u9a8c\u8bc1<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6784\u5efa\u4e86\u4e00\u4e2a\u5177\u5907\u591a\u4f9d\u8d56\u7684 Node.js \u5e94\u7528\u4f5c\u4e3a\u9a8c\u8bc1\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dockerfile \u7279\u70b9\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u591a\u9636\u6bb5\u6784\u5efa\uff08builder + production\uff09<\/li>\n<li>\u975e root \u7528\u6237\u8fd0\u884c<\/li>\n<li>HEALTHCHECK \u5065\u5eb7\u68c0\u67e5<\/li>\n<li>npm \u4f7f\u7528 npmmirror \u955c\u50cf\u6e90\u52a0\u901f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e94\u7528\u4f9d\u8d56\uff1aexpress\u3001axios\u3001redis\u3001winston\uff0c\u5171 119 \u4e2a\u5305\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6784\u5efa\u7ed3\u679c\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u955c\u50cf\u5927\u5c0f\uff1a139MB (\u57fa\u7840\u5c42 + 119 \u4e2a npm \u5305)<\/li>\n<li>\u6784\u5efa\u8017\u65f6\uff1a~60s\uff08\u542b npm install\uff09<\/li>\n<li>\u4e8c\u6b21\u6784\u5efa\uff08\u4ee3\u7801\u66f4\u65b0\uff0c\u4f9d\u8d56\u4e0d\u53d8\uff09\uff1a3s\uff08\u5168\u90e8 CACHED\uff09<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u884c\u9a8c\u8bc1\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ docker run --platform linux\/arm64 -v \/usr\/bin\/qemu-aarch64-static:\/usr\/bin\/qemu-aarch64-static arm64-demo-app:v1\ninfo: Server started on port 3000 arch=arm64\n\n$ curl http:\/\/localhost:3000\/health\n{\"uptime\":3.97,\"memory\":{...},\"arch\":\"arm64\"}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u67b6\u6784\u786e\u8ba4\u4e3a arm64\uff0c\u5e94\u7528\u6b63\u5e38\u8fd0\u884c\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u516d\u3001\u91cd\u542f\u673a\u5668\u6216\u5bb9\u5668\u540e\u6062\u590d<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u673a\u5668\u91cd\u542f\u540e<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u7ef4\u540c\u5b66\u5df2\u914d\u7f6e\u597d\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Docker \u5df2\u8bbe\u4e3a\u5f00\u673a\u81ea\u542f (`systemctl enable docker`)<\/li>\n<li>BuildKit \u5bb9\u5668 restart policy \u4e3a unless-stopped\uff0cDocker \u542f\u52a8\u540e\u81ea\u52a8\u62c9\u8d77<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u624b\u52a8\u6267\u884c\u9a8c\u8bc1\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u5feb\u901f\u9a8c\u8bc1\u73af\u5883\n\/usr\/local\/bin\/arm64-build-recover.sh\n\n# \u8f93\u51fa \"ARM64 Build Environment Ready\" \u5373\u6062\u590d\u6210\u529f<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u4ec5\u91cd\u542f BuildKit \u5bb9\u5668<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker restart buildx_buildkit_arm64-builder0\ndocker buildx inspect --bootstrap arm64-builder<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u5f7b\u5e95\u91cd\u5efa Builder<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker buildx rm arm64-builder\ndocker buildx create --name arm64-builder --driver docker-container \\\n  --config \/etc\/buildkit\/buildkitd.toml \\\n  --platform linux\/amd64,linux\/arm64 --use\ndocker buildx inspect --bootstrap arm64-builder<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b80\u8bb0\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001\u80cc\u666f \u9700\u8981\u5728 CentOS 7.6\uff08\u5185\u6838 3.10\uff09x86_64 \u865a\u62df\u673a\u4e0a\u6784\u5efa ARM64 \u67b6\u6784\u7684 Docker \u955c\u50cf\u3002\u65b9\u6848\u9009 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1678","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/posts\/1678","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/comments?post=1678"}],"version-history":[{"count":1,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/posts\/1678\/revisions"}],"predecessor-version":[{"id":1679,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/posts\/1678\/revisions\/1679"}],"wp:attachment":[{"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/media?parent=1678"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/categories?post=1678"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/tags?post=1678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}