SSF0SSF0
首页
前端
  • Node
  • Go
  • C#
  • MySql
  • Bash
  • Git
  • Docker
  • VuePress
  • CI/CD
  • 服务器
  • 网站
  • 学习资料
  • 软件
Timeline
Github
标签
分类
首页
前端
  • Node
  • Go
  • C#
  • MySql
  • Bash
  • Git
  • Docker
  • VuePress
  • CI/CD
  • 服务器
  • 网站
  • 学习资料
  • 软件
Timeline
Github
标签
分类
  • Bash

    • Bash 获取路径在不同类型电脑的区别
  • Git

    • Git 使用 ssh 与 https 的区别
    • Git 回滚、重置与变基
    • 文件名大小写发生变化的坑
    • Git 提交信息规范解读与实践指南
    • Git 历史邮箱统一 + 推送 GitHub 后的远程分支处理指南
  • Docker

    • Docker 命令大全
    • nginx 镜像部署静态文件
    • Docker 运行命令说明
    • 使用 node 镜像运行本地项目
    • 挂载和卷的区别
    • Docker 打包多平台镜像
    • Docker 使用 mysql
    • Docker 容器网络访问问题总结
  • VuePress

    • 使用 VuePress 搭建个人博客概括
  • CI/CD

    • blog 使用 Github-Actions 部署 docker 服务器
  • 服务器

    • 腾讯云使用 ssh 连接服务器(Linux 实例)
    • ssl 证书安装到 docker 服务器
    • 操作系统与架构
    • ssh 连接时长问题
  • 掌握 hosts 文件:本地开发、域名重定向与回调处理完全指南
  • Cloudflare DNS与代理:完全指南

Docker 打包多平台镜像

1. 首先激活 Docker 的多平台构建功能

Docker 的多平台构建功能需要 Docker BuildKit 的支持,BuildKit 是 Docker 的一个实验性功能,需要手动启用。

  • 临时开启:在执行构建命令前添加环境变量,如 DOCKER_BUILDKIT=1 docker buildx build -t 镜像:标签 --platform linux/arm64 .

  • 配置文件开启:在 Docker 的配置文件中添加以下内容:

vim /etc/docker/daemon.json
#添加配置
{
  "experimental": true
}

2. 安装 docker buildx

buildx 是 Docker 的扩展,通常默认包含在 Docker Desktop 中,但如果你在 Linux 上使用 Docker 或需要手动安装,可以参考以下方法:

在 Docker Desktop 上:

Docker Desktop 自带了 buildx,你可以通过以下命令检查是否已经安装:

docker buildx version

如果已经安装,你会看到 buildx 的版本信息,如果没有安装,你可以通过以下命令安装:

docker buildx install

3. 使用 builder

docker buildx create --name mybuilder --use
  • --name mybuilder:指定 builder 的名称为 mybuilder。

  • --use 将 mybuilder 设置为默认 builder。

4. 查看支持的构建器

docker buildx inspect --bootstrap
  • --bootstrap:自动配置 builder,使其支持多平台构建。

5. 构建镜像

docker buildx build --platform linux/amd64,linux/arm64 -t myimage:latest --push .

关键参数解释:

  • --platform:指定要构建的目标平台。例如 linux/amd64 用于构建 x86_64 架构的 Linux 镜像。如果你要支持多平台,还可以传入多个架构,如 linux/amd64,linux/arm64。

  • -t:标记镜像的名称和标签,例如 hefengshun/https-ssl:1.0.0。

  • --push:将构建的镜像推送到镜像仓库。

  • --load:将构建的镜像加载到本地 Docker 镜像列表中,这样可以在本地直接运行。

  • --cache-from 和 --cache-to(可选):这两个参数用于缓存构建,减少后续构建时间,特别是在使用 CI/CD 构建管道时。

常见问题与注意点:

  • 没有 --push 或 --load:如果你没有指定这两个参数,镜像不会被推送到仓库或加载到本地,默认是将构建结果保留在缓存中,这就是为什么你在 docker images 中看不到镜像的原因。

  • 证书路径:确保 Dockerfile 中的路径和本地文件路径相对应,特别是 SSL 证书和配置文件的路径。

  • 多平台支持:buildx 的一个重要功能是多平台构建,确保你启动了 buildx 实例,并使用了 --platform 参数来构建适用于不同架构的镜像。

6. 关于打包时的网络问题

  • 如果使用代理,需要配置 Docker 的代理,在 Docker Desktop 中,可以在设置中找到代理设置,然后配置代理服务器地址和端口 ❌ 这个配置了好像没什么用。

  • 打包时代理则需要打开增强模式,否则会报错,但是打开增强模式后,网页好像就打不开,打开网页需要关闭增强模式 🌟。

  • 而且切换代理后,需要重新开一个 shell 窗口,否则代理配置不生效 🤔, 或者有上一次配置代理的缓存。

alt text

最后更新时间:
贡献者: 何风顺
上一页
挂载和卷的区别
下一页
Docker 使用 mysql