离线环境下使用 Docker Buildx 与 Docker Registry 实现多平台镜像构建

在软件开发与部署过程中,我们经常需要构建适用于不同平台和架构的 Docker 镜像。然而,在离线环境下,由于无法访问互联网,构建多平台镜像变得颇具挑战。本文将介绍如何在离线环境下使用 Docker Buildx 与 Docker Registry 实现多平台镜像构建。 在离线环境下,我们无法安装 QEMU 环境,所以只能采用基于容器的 BuildX 环境,而基于容器的 Buildx 环境并不会从本地的Docker中查询镜像,而是从远端拉取镜像。因此,我们需要事先准备好所需的镜像,并在本地搭建一个 Docker Registry 用于存储和分发这些镜像。 通过结合使用 Docker Buildx 与本地 Docker Registry,我们可以在离线环境下高效地构建和分发多平台 Docker 镜像。 详细步骤与命令解释 1. 准备所需镜像 首先,我们需要准备两个关键镜像: registry:latest:用于搭建本地 Docker Registry。 moby/buildkit:buildx-stable-1:包含了 Docker Buildx 所需的 BuildKit 和 QEMU,用于支持多平台构建。 2. 启动 Docker Registry 使用以下命令启动一个本地 Docker Registry: docker run -itd -v $(pwd)/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest -v $(pwd)/registry:/var/lib/registry:将宿主机上的 $(pwd)/registry 目录挂载到容器内的 /var/lib/registry 目录,用于持久化存储镜像数据。 -p 5000:5000:将容器内的 5000 端口映射到宿主机的 5000 端口,允许从宿主机访问 Registry。 --restart=always:设置容器在启动时总是重启,确保 Registry 服务的可用性。 --name registry:为容器指定一个名称,方便后续管理。 3....

四月 28, 2024 · 2 分钟 · Mioto Yaku

离线安装 Docker 和 Docker Compose 详细教程

Docker 是一种广泛使用的容器化平台,它可以让开发者将应用程序和依赖打包到一个可移植的容器中,从而简化了应用程序的部署和管理。Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。本文将详细介绍如何在离线环境下安装 Docker 和 Docker Compose。 准备工作 在开始安装之前,请确保您的系统满足以下要求: Linux 操作系统(本文以 CentOS 7 为例) 可以使用 root 用户或具有 sudo 权限的用户进行操作 已经下载了 Docker 和 Docker Compose 的二进制程序包 下载 Docker 二进制程序包 由于是离线安装,我们需要提前下载 Docker 的二进制程序包。您可以在有网络连接的机器上访问以下地址下载对应版本的程序包: https://download.docker.com/linux/static/stable/x86_64/docker-26.1.0.tgz 请将 x86_64 替换为您系统的实际架构,可以使用 uname -m 命令查看。 安装 Docker 将下载好的 Docker 二进制程序包上传到目标机器上,并解压: tar -xvf docker-26.1.0.tgz 将 Docker 二进制文件移动到 /usr/local/bin 目录: mv docker/* /usr/local/bin/ 为 Docker 二进制文件创建软链接到 /usr/bin 目录: ln -s /usr/local/bin/docker /usr/bin/docker ln -s /usr/local/bin/dockerd /usr/bin/dockerd ln -s /usr/local/bin/docker-proxy /usr/bin/docker-proxy ln -s /usr/local/bin/docker-init /usr/bin/docker-init ln -s /usr/local/bin/ctr /usr/bin/ctr ln -s /usr/local/bin/runc /usr/bin/runc ln -s /usr/local/bin/containerd /usr/bin/containerd ln -s /usr/local/bin/containerd-shim-runc-v2 /usr/bin/containerd-shim-runc-v2 下载 Docker 的 systemd 服务文件: wget https://raw....

四月 28, 2024 · 1 分钟 · Mioto Yaku

私有-docker-registry-搭建

简介 这个东西可能并没有你想象中的那么完美, 适合个人使用, 上传后无法删除镜像, 但是有第三方工具帮你删除后面会讲. 如果这几点你都不介意的话, 可以继续往下看了!!! docker 的基础操作我都不会讲, 如果不太了解的话建议去官网学习 必备的程序 docker-ce, docker-compose. 本机搭建 registry 的默认端口为 5000 如果想将 hub.docker.com 上的 alpine 做个镜像. docker pull alpine:latest docker tag alpine:latest localhost:5000/alpine:latest docker push localhost:5000/alpine:latest --- version: "2" services: registry: image: registry:latest restart: always volumes: - registry:/var/lib/registry volumes: registry: 配置前端 registry-frontend 是 registry 的前端, 如果想详细设置可以去 konradkleine/docker-registry-frontend 这里看. 效果图如下: --- version: "2" services: registry: image: registry:latest restart: always volumes: - registry:/var/lib/registry registry-frontend: image: konradkleine/docker-registry-frontend:v2 environment: ENV_DOCKER_REGISTRY_HOST: registry ENV_DOCKER_REGISTRY_PORT: "5000" ENV_MODE_BROWSE_ONLY: "true" depends_on: - registry volumes: registry: 配置域名与认证 我使用的是 caddy 作为我的反向代理服务器, 当然你也可以使用 nginx 等....

八月 19, 2018 · 1 分钟 · Mioto Yaku

使用docker自动部署hexo

使用这种实现自动部署 hexo 必须有台自己的服务器, 如果没有的话我也没办法~~ 原理 我实现的原理其实很简单. 当 source 被提交后, 触发 webhook 然后通过执行 bash script 自动进行编译部署 实现 给 hexo 准备个仓库, 例: github.com/xxxx/hexo-source, 如果你有私有仓库 如 gogs gitlib 等都可以 在 hexo 的根目录创建一个 deploy.sh 的脚本 #/bin/bash set -ev export TZ='Asia/Shanghai' npm install hexo-cli -g npm install hexo g -d 制作 node-caddy 的 docker, 当然也可以使用我已经写好的. yakumioto/node-caddy, 并编写 Caddyfile, 因为我使用的是自己部署的 Gogs 所以引用了 key :80 { gzip git { repo git@git.mioto.me:yakumioto/mioto.me.git branch master key /root/.ssh/id_rsa hook /webhook miotoyaku then bash ....

十一月 26, 2017 · 1 分钟 · Mioto Yaku

docker caddy 克隆私有仓库遇到的问题

问题描述 我使用的是 gogs 作为自己私有的 git server. 正常的将 .ssh 目录直接导入到了 docker 中. 然后启动 docker 报错如下 Warning: Permanently added the RSA host key for IP address 'xx.xx.xx.xx' to the list of known hosts. 想必经常玩 vps 的人对这个提示并不陌生.. 我们每次是有 ssh 尝试连接一台我们从没有连接过服务器都会出现, 但是在 docker 中如何避免这个提示 解决 其实就是要跳过这个验证, 网上一搜基本就能找到. 将 StrictHostKeyChecking 直接配置到 .ssh/config 中 就可以了 # 文件 .ssh/config # 以 github.com 为例 自行替换成自己的 git server 地址 Host github.com StrictHostKeyChecking no 这样请求的时候就会跳过跳过验证直接 clone 代码了

十一月 4, 2017 · 1 分钟 · Mioto Yaku