美文网首页
docker 不同架构下迁移问题

docker 不同架构下迁移问题

作者: dc的梦呓 | 来源:发表于2022-10-20 17:24 被阅读0次

遇到一个场景,在amd64架构服务器上的导出的docker镜像,需要导入到arm64上,会遇到问题,运行失败。此是由于不同cpu架构下docker的运行问题。可以先在相同的cpu架构上build,再导到相同架构上服务器,这是一种处理方法,但是若没有相同cpu架构的服务器,会比较麻烦。docker提供了一种解决方案,支持不同cpu架构的镜像构建,目前是实验性的,可以一试。

1、docker 版本

docker 版本需>=19.03

2、docker开启实验性功能:

docker客户端开启实验室特性
在客户端的配置文件/.docker/config.json中加入如下配置项,如果/.docker/config.json文件不存在,则创建该文件。

{
    "experimental": "enabled"
}

docker服务端开启实验室特性
在配置文件/etc/docker/daemon.json中加入如下配置项即可,如果/etc/docker/daemon.json文件不存在,则创建该文件。

{
    "experimental": true
}

注意:内容不一样,一个是 “enable”、一个是 true。
完成后,重新载入docker:

systemctl daemon-reload
systemctl restart docker

查看docker版本:

docker version
image.png

3、buildx 安装

下载机器对应的二进制安装包docker buildx download
将其拷贝至可执行目录下;

mkdir -p ~/.docker/cli-plugins
mv buildx-v0.9.1.linux-xxx ~/.docker/cli-plugins/docker-buildx
chmod +x ~/.docker/cli-plugins/docker-buildx

验证安装是否成功:

docker buildx version
docker buildx ls
image.png

4、安装架构模拟器

检查是否已安装:

$ docker buildx ls 
NAME/NODE     DRIVER/ENDPOINT   STATUS   PLATFORMS
default       docker
  default     default           running   linux/amd64

# 如果Platforms列只有一个本机架构,则需要继续执行下面步骤;如果已经包含了多种平台,且包含你想要的平台,则你无需再安装。

安装模拟器:

docker run --privileged --rm tonistiigi/binfmt --install all

5、build多平台

先创建一个新的构建器:

docker buildx create --use --name mybuilder

启动构建器:

docker buildx inspect mybuilder --bootstrap

构建多平台镜像:

docker buildx build --platform linux/amd64,linux/arm64 --push -t repo/hello .

构建后的镜像image中看不到,参考:Where did the built multi-platform image go? · Issue #166 · docker/buildx · GitHub
也可执行脚本:

for arch in amd64 arm64 arm  ; do 
    docker buildx build \
    --platform $arch \
    --output "type=docker,push=false,name=me/myimage:mytag-$arch,dest=myimage.tar" \
    $path_to_dockerfile/
done

参考资料:
Docker buildx 安装codefreestyle的博客-CSDN博客安装buildx

跨平台构建 Docker 镜像新姿势,x86、arm 一把梭 - 腾讯云开发者社区-腾讯云 (tencent.com)

How to Build Multi-Arch Docker Images - Speedscale

如何使用 docker buildx 构建跨平台 Go 镜像 | Shall We Code? (waynerv.com)

相关文章

  • docker 不同架构下迁移问题

    遇到一个场景,在amd64架构服务器上的导出的docker镜像,需要导入到arm64上,会遇到问题,运行失败。此是...

  • Docker入门

    Docker主要解决的问题主要解决软件环境迁移的问题 Docker概念与应用商店对比开箱即用 为什么docker更...

  • Dockerfile分离构建LNMP环境部署wordpress

    最近忙着写自己的项目,也把一个站点的bbs论坛打算迁移到Docker中,测试没发现啥大问题。在单台上面的架构如下;...

  • Docker简介

    什么是Docker?Docker是一个用于开发、迁移、运行的开发平台。它使你能够将你的应用程序从基础架构中分离,从...

  • Mongo 数据迁移

    迁移步骤 备份数据 还原数据docker下部署mongodb参考Docker 部署MongoDBubuntu下搭建...

  • Docker Desktop For Mac:TLS hands

    最近在折腾Mysql迁移到Docker,在docker search mysql:5.7的时候就遇到了问题,还真是...

  • docker 迁移 /var/lib/docker,解决/var

    目标:迁移docker镜像存储目录/var/lib/docker目录,解决/var目录存储空间过小的问题 实现步骤...

  • gitlab迁移docker+升级最新版本

    迁移思路: 1. kvm ==》docker ,需要解决80端口和22端口映射问题。 2. 数据备份迁移,老版本9...

  • Redis在Docker环境下无法主从复制问题

    今天在打算在开发环境利用docker布暑一套redis主从架构,期间出现了一此问题,在此记录一下。 架构如下: 过...

  • docker 更改默认目录

    停止 Docker: service docker stop 迁移/var/lib/docker目录到met 目录...

网友评论

      本文标题:docker 不同架构下迁移问题

      本文链接:https://www.haomeiwen.com/subject/bwpuzrtx.html