本文的重点是引入Dockerbuildx构建多平台镜像,将消息推送到专属仓库。原文根据示例代码非常详细,对大家的学习培训或者工作都有一定的参考价值。有必要的朋友陪我去了解一下。
因子
最近发现有ARM版的Docker,hub.docker.com上也有ARM版的Docker镜像,但是ARM版Docker镜像的构建是个难题。嵌入式程序流可以在PC上交叉编译,目前还不清楚Docker是否有交叉编译的计划。
计划
在这个阶段,Docker构建臂镜的方式如下。第三种类似交叉编译。
用Dockerbuildx
构建几个平台镜像
参考下面的几个链接。
https://docs.docker.com/engine/reference/commandline/manifest/
https://docs.docker.com/buildx/working-with-buildx/
https://engineering.docker.com/2019/06/getting-started-with-docker-for-arm-on-Linux/
采用了docker的两个实验功能,所以应用时必须开启实验功能。
Dockmanifest,manifest是包含镜像信息的文档。Manifestlist是一个镜像列表,用来存储不同os/arch的镜像信息内容。我们可以建立一个清单列表来偏置两个镜像,然后它可以应用于多个平台。
Dockerbuildx,buildx是Docker的一个软件,是下一代docker镜像构造。根据QEMU-用户静态中文翻译平台的指令体系,软件可以在x64上运行其他平台的程序流程。Buildx具体应用moby/buildkit:buildx-stable-1镜像构建多平台。
构建docker注册表的多平台版本
参考下面的连接来构建docker注册表映像。
https://community.arm.com/developer/tools-software/tools/b/tools-software-ides-blog/post/deploying-multi-architecture-docker-registry
构建一个dns服务器来处理buildx错误
Buildx软件不移动本地主机文件,所以需要带dns。这是一个错误,https://github.com/docker/buildx/issues/218,和社区无人照管。
解决方案:建立dns,将镜像的详细地址buildx.com偏向registry的设备,之后使用nginx。Ubuntu默认设置为systemd-resolved,在打开dnsmasq之前关闭。
使用nginx代理处理命名问题
推广nginx代理,HTTP和HTTPS也适用。Buildx是一个执行HTTPS的软件,不寻找封闭区域。
提醒资格证问题,资格证不是本网站域名。解决方法:重新形成资质证书,填写网站域名。
资格证难。我不信任自签名的资格证书,所以我把自签名的资格证书添加到buildx守护进程容器的资格证书的信任链中。https://github.com/docker/buildx/issues/80#issuecomment-533844117
Nginx经过两个设备的升级,可以处理手机客户端推送时的很多问题。
#nignx.conf配备 proxy_ignore_client_aborton;#忽视手机客户端报警 client_max_body_size0;#文件上传尺寸不限定 #云虚拟主机配备 server{ listen443; server_namebuildx.com; sslon; ssl_certificatecrt/server.crt; ssl_certificate_keycrt/server.key; ssl_session_timeout5m; ssl_protocolsTLSv1TLSv1.1TLSv1.2;#依照这一协议书配备 ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#依照这一模块配备 ssl_prefer_server_cipherson; location/{ proxy_passhttp://192.168.1.11:81; } } server{ listen80; server_namebuildx.com; location/{ proxy_passhttp://192.168.1.11:81; } }设置当地码头自然环境
本地Docker必须打开实验功能。
制作基本镜像
您可以从hub.docker.com获得几个平台的版本,形成清单列表,并提交给注册表。
#pullarm64版本、更名、提交。实际镜像是不是适用多平台,能够到hub.docker.com上看。 dockerpull--platformarm64centos:7 dockertagcentos:7buildx.com/base/centos-arm64:7 dockerpushbuildx.com/base/centos-arm64:7 #pullamd64版本、更名、提交 dockerpull--platformamd64centos:7 dockertagcentos:7buildx.com/base/centos-amd64:7 dockerpushbuildx.com/base/centos-amd64:7 #建立manifestlist、提交。 dockermanifestcreate--insecurebuildx.com/base/centos:7buildx.com/base/centos-amd64:7buildx.com/base/centos-arm64:7 dockermanifestpush--insecurebuildx.com/base/centos:7构建业务流程镜像
文章里的内容就这些了。期待对大家的学习和培训有所帮助,也期待大家的应用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)