centos 拉取阿里云私有镜像并运行

2024-08-14  本文已影响0人  _浅墨_

在阿里云服务器执行镜像:

docker pull registry.cn-hangzhou.aliyuncs.com/ichangyou/mfefficiency-backend:1.0.0

docker run -d --restart always -p 8001:8001 registry.cn-hangzhou.aliyuncs.com/ichangyou/mfefficiency-backend:1.0.0

因为是在 macbook pro m1 系统打包的 docker 镜像,在centos 直接运行竟然不成功!

报错:

docker run -d --restart always -p 8001:8001 registry.cn-hangzhou.aliyuncs.com/ichangyou/mfefficiency-backend:1.0.0
WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64/v4) and no specific platform was requested

这个警告表示你尝试运行的 Docker 镜像是为 ARM 架构(linux/arm64/v8)构建的,而你的主机是基于 x86_64 架构(linux/amd64/v4)。由于这两个架构不匹配,镜像可能无法在你的主机上正常运行。

默认情况下,在 x86_64 架构的机器上构建的 Docker 镜像将会是 x86_64 架构的。
你可以使用以下命令来查看镜像的架构信息:

docker inspect mfefficiency-backend:1.0.0 | grep Architecture

解决方法:

1. 使用 --platform 参数指定正确的平台

如果你确定要在 x86_64(amd64)架构上运行该镜像,可以尝试强制指定平台为 amd64

docker run -d --platform linux/amd64 --restart always -p 8001:8001 registry.cn-hangzhou.aliyuncs.com/ichangyou/mfefficiency-backend:1.0.0

注意:强制运行 ARM 镜像在 x86_64 主机上可能会失败,因为某些镜像可能依赖特定的硬件架构。如果你遇到问题,可以考虑使用 QEMU 来模拟 ARM 架构(QEMU 的支持需要 Docker Desktop 或者 Docker 上启用跨架构支持)。

2. 查找或构建适用于 amd64 的镜像

如果该镜像在阿里云上没有 amd64 架构版本,你可以尝试以下方法:

3. 使用 QEMU 进行跨架构运行

如果你确实需要运行 ARM 架构的镜像,可以使用 QEMU 来模拟 ARM 环境。

遇到问题

在阿里云centos服务器安装并启用 QEMU这一步又报错,主要是因为qiang的缘故,网络不通。

我的解决方法是,先在我的 macbook 拉取 multiarch/qemu-user-static镜像,并将其上传到阿里云私有仓库,然后再在阿里云centos服务器安装并启用 QEMU :

1. 拉取镜像

首先,从 Docker Hub 拉取 multiarch/qemu-user-static:latest 镜像:

docker pull multiarch/qemu-user-static:latest

2. 登录阿里云容器镜像服务

登录到你的阿里云容器镜像服务(ACR):

docker login --username=your-username registry.cn-hangzhou.aliyuncs.com

请将 your-username 替换为你的阿里云账号用户名,系统会提示你输入密码。

3. 标记镜像

将拉取的镜像标记为阿里云私有镜像仓库的格式。假设你的仓库名称为 your-repo,镜像名称为 qemu-user-static

docker tag multiarch/qemu-user-static:latest registry.cn-hangzhou.aliyuncs.com/your-repo/qemu-user-static:latest

4. 推送镜像到阿里云

将镜像推送到阿里云的私有镜像仓库:

docker push registry.cn-hangzhou.aliyuncs.com/your-repo/qemu-user-static:latest

5. 确认上传成功

你可以登录到阿里云容器镜像服务的控制台,查看镜像是否成功上传。

这样,你就完成了从 Docker Hub 拉取 multiarch/qemu-user-static:latest 镜像并将其上传到阿里云私有镜像仓库的过程。

具体实践:

docker pull multiarch/qemu-user-static:latest

docker login --username=changyou0730@163.com registry.cn-hangzhou.aliyuncs.com

docker tag multiarch/qemu-user-static:latest registry.cn-hangzhou.aliyuncs.com/ichangyou/qemu-user-static:latest

docker push registry.cn-hangzhou.aliyuncs.com/ichangyou/qemu-user-static:latest
上一篇 下一篇

猜你喜欢

热点阅读