近段时间刚好有相关需求上传docker到hub,顺便记录学习一下:
1. 构建指定版本,并上传
sh
docker build --platform=linux/amd64 -f dockerfile_s01 -t myDocker .
# 打标签,docker images的名字为myLocalDockerName
docker tag myLocalDockerName DOCKER_USERNAME/YOURPROGRAME:myDocker-amd
# myDocker为上传上去的名字
docker push DOCKER_USERNAME/YOURPROGRAME:myDocker-amd
2. 使用manifest
当有多个架构时,需要push多个文件,使用者需要自己寻找自己对应的架构镜像,非常麻烦,manifest可以自动根据架构拉取对应的镜像。
首先把自己的两个不同架构镜像按照第1步上传,假设上传的名字为:myDocker-arm、myDocker-amd
2.1创建manifest列表
sh
docker manifest create DOCKER_USERNAME/TEST_PROJECT \
DOCKER_USERNAME/YOURPROGRAME:myDocker-amd \
DOCKER_USERNAME/YOURPROGRAME:myDocker-arm
2.2 设置manifest列表
两个镜像都要设置
sh
docker manifest annotate DOCKER_USERNAME/TEST_PROJECT \
DOCKER_USERNAME/YOURPROGRAME:myDocker-arm \
--os linux --arch arm64 --variant v8
sh
docker manifest annotate DOCKER_USERNAME/TEST_PROJECT \
DOCKER_USERNAME/YOURPROGRAME:myDocker-amd \
--os linux --arch amd64
2.3 推送manifest列表
sh
docker manifest push DOCKER_USERNAME/TEST_PROJECT
2.4 其他操作命令
查看命令
sh
docker manifest inspect DOCKER_USERNAME/TEST_PROJECT
如果添加错了,可以删除manifest并重新创建
sh
docker manifest rm DOCKER_USERNAME/TEST_PROJECT@<digest>
参考链接: