笔记|M芯片MAC (arm64) docker上使用 export / import / commit 构建amd64镜像

很简单的起因,我的东西最终需要跑在amd64上,但是因为mac的架构师arm64,所以直接构建好的代码是没办法跨平台运行的。直接在arm64上pull下来的docker镜像也都是arm64架构。

检查镜像架构:

bash 复制代码
docker inspect 8135f475e221 | grep 'Architecture'

效果如下:

先讲一下拉取amd64镜像的方法,因为拉取的时候默认是arm64:

bash 复制代码
docker pull --platform linux/amd64 ubuntu:18.04

这里以ubuntu镜像为例子,加上参数 --platform linux/amd64 即可,效果可以看一下:

接着一段文字描述:用该镜像起了一个简单的容器,里面安装一下vim lsof等命令,之后用以下两个命令进行导出导入,结果新的镜像则变成了arm64:

bash 复制代码
docker export 88888888 > 1.tar
cat 1.tar | docker import - my-ubuntu:18.04

新的镜像为arm64:

以下为解决方法

添加前置参数 DOCKER_DEFAULT_PLATFORM=linux/amd64 示例如下:

bash 复制代码
DOCKER_DEFAULT_PLATFORM=linux/amd64 docker run -itd ubuntu:18.04 bash

然后去里面做你想做的事情,接下来是导出,和之前一致:

bash 复制代码
docker export 4956aba71840 > 1.tar

导入,需要注意:

bash 复制代码
cat 1.tar| DOCKER_DEFAULT_PLATFORM=linux/amd64 docker import - my-ubuntu:18.04


也可以尝试一下docker commit,commit命令会保留部分的元数据,但是不包括历史信息。亲测直接commit可以出amd64:

done.

相关推荐
学渣6765627 分钟前
venv和pyenv在mac上
macos
_Jyuan_3 小时前
镜头内常见的马达类型(私人笔记)
经验分享·笔记·数码相机
丰锋ff5 小时前
考研英一学习笔记 2018年
笔记·学习·考研
岂是尔等觊觎5 小时前
软件设计师教程——第一章 计算机系统知识(下)
经验分享·笔记·其他
不学无术の码农5 小时前
Ubuntu 22.04 (WSL2) 上使用 Docker 安装 Nacos 3.0.0
ubuntu·docker
Oll Correct5 小时前
计算机二级WPS Office第三套电子表格
笔记
咸鱼2333号程序员6 小时前
Linux ifconfig命令详解
linux·服务器·网络
秦jh_6 小时前
【Linux网络】应用层协议HTTP
linux·运维·服务器·网络·网络协议·tcp/ip·http
睡不着还睡不醒6 小时前
【笔记】unsqueeze
笔记
LouSean6 小时前
Unity按钮事件冒泡
经验分享·笔记·学习·unity·游戏引擎