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

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

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 架构版本,你可以尝试以下方法:

  • 查找是否有适用于 amd64 架构的镜像:检查镜像仓库,看看是否有适用于 amd64 架构的镜像版本。

  • 构建适用于 amd64 架构的镜像:如果你有 Dockerfile,可以在 amd64 架构的主机上重新构建镜像:

    docker buildx build --platform linux/amd64 -t registry.cn-hangzhou.aliyuncs.com/ichangyou/mfefficiency-backend:1.0.0 .
    

    然后重新运行容器。

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

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

  • 启用 QEMU

    确保你的 Docker 安装了 QEMU 用户模式仿真层,通常 Docker Desktop 在 macOS 和 Windows 上已经默认启用。在 Linux 上,可以安装并启用 QEMU:

    docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    
  • 然后再运行 ARM 镜像

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

遇到问题

在阿里云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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容