近段时间刚好有相关需求上传docker到hub,顺便记录学习一下:
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
当有多个架构时,需要push多个文件,使用者需要自己寻找自己对应的架构镜像,非常麻烦,manifest可以自动根据架构拉取对应的镜像。
首先把自己的两个不同架构镜像按照第1步上传,假设上传的名字为:myDocker-arm、myDocker-amd
docker manifest create DOCKER_USERNAME/TEST_PROJECT \
DOCKER_USERNAME/YOURPROGRAME:myDocker-amd \
DOCKER_USERNAME/YOURPROGRAME:myDocker-arm
两个镜像都要设置
docker manifest annotate DOCKER_USERNAME/TEST_PROJECT \
DOCKER_USERNAME/YOURPROGRAME:myDocker-arm \
--os linux --arch arm64 --variant v8
docker manifest annotate DOCKER_USERNAME/TEST_PROJECT \
DOCKER_USERNAME/YOURPROGRAME:myDocker-amd \
--os linux --arch amd64
docker manifest push DOCKER_USERNAME/TEST_PROJECT
查看命令
docker manifest inspect DOCKER_USERNAME/TEST_PROJECT
如果添加错了,可以删除manifest并重新创建
docker manifest rm DOCKER_USERNAME/TEST_PROJECT@<digest>
参考链接:
https://yeasy.gitbook.io/docker_practice/image/manifest