Docker buildx构建多平台镜像并推送到私有仓库的方法

2020-06-17 07:24:56易采站长站整理

ssl_certificate_key crt/server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://192.168.1.11:81;
}
}

server {
listen 80;
server_name buildx.com;
location / {
proxy_pass http://192.168.1.11:81;
}
}

设置本地Docker环境

本地Docker需要开启实验功能。

在/etc/docker/daemon.json中配置 “experimental”: true,重启Docker。开启Docker daemon的实验功能。
在本地执行export DOCKER_CLI_EXPERIMENTAL=enabled,开启Docker Client的实验功能。
使用docker version查看实验功能是否开启。
执行docker run –rm –privileged docker/binfmt:820fdd95a9972a5308930a2bdfb8573dd4447ad3,开启内核binfmt_misc功能,可以在当前平台上执行多平台的程序。
查看是否支持aarch64程序。cat /proc/sys/fs/binfmt_misc/qemu-aarch64
此时本地的docker可以运行各种平台的docker容器。比如arm64。可以使用如下命令测试。


# 拉取arm64版本镜像并运行
docker pull --platform arm64 alpine:3.10
docker run --rm -it alpine:3.10 sh

制作基础镜像

可以从hub.docker.com中获取多个平台的版本,生成manifest list,上传的registry中。


# pull arm64版本、改名、上传。 具体镜像是否支持多平台,可以到hub.docker.com上看。
docker pull --platform arm64 centos:7
docker tag centos:7 buildx.com/base/centos-arm64:7
docker push buildx.com/base/centos-arm64:7
# pull amd64版本、改名、上传
docker pull --platform amd64 centos:7
docker tag centos:7 buildx.com/base/centos-amd64:7
docker push buildx.com/base/centos-amd64:7
# 创建manifest list、上传。
docker manifest create --insecure buildx.com/base/centos:7 buildx.com/base/centos-amd64:7 buildx.com/base/centos-arm64:7
docker manifest push --insecure buildx.com/base/centos:7

构建业务镜像


# buildx 可以指定多个平台,但是要求Dockerfile中的FROM镜像必须有对应版本的。
# buildx 打包的镜像不会在本地存储,加--push,上传docker仓。或者可以使用--output指定输出方式。
docker buildx build --platform linux/amd64,linux/arm64 -t buildx.com/base/java-base:openjdk-8-centos7 . --push

您可能感兴趣的文章:docker 查询或获取私有仓库(registry)中的镜像的方法Docker私有仓库管理和删除本地仓库中的镜像Docker上传镜像至私有仓库的方法示例使用Docker registry镜像创建私有仓库的方法