核心三步是登录仓库、打标签、执行推送:必须先用docker login登录目标Registry,再用docker tag将本地镜像重命名为完整路径格式(含仓库地址、命名空间和标签),最后执行docker push;未登录或标签不合规将直接失败。
用 docker push 命令推送镜像,核心就三步:登录仓库、打标签、执行推送。不登录或标签不对,命令会直接失败。
推送前得让 Docker 知道你是谁:
docker login,然后输入用户名和密码docker login my-registry.com:5000
docker login registry.cn-hangzhou.aliyuncs.com
Docker 不会自动帮你补全仓库地址,本地镜像名(如 myapp)不能直接推送。得用 docker tag 改成目标格式:
docker tag myapp:1.0 username/myapp:1.0
docker tag myapp:1.0 my-registry.com/project/myapp:v1.2
docker tag nginx:latest registry.cn-hangzhou.aliyuncs.com/my-ns/nginx:v1
注意:路径中不能含大写字母、下划线或中文;latest 标签不建议用于生产环境。
打完标签后,直接运行 docker push 加上完整镜像名:
docker push username/myapp:1.0docker push my-registry.com/project/myapp:v1.2docker push registry.cn-hangzhou.aliyuncs.com/my-ns/nginx:v1成功时会逐层显示 Pushed,最后提示 digest;失败时常见原因包括:未登录、权限不足、网络不通、镜像名拼写错误或命名空间不存在。
避免白忙活:
docker images 确认本地存在要推送的镜像及对应标签docker run -it --rm 镜像名 快速验证镜像能否正常启动--no-cache(但实际效果有限,主要影响构建,非推送)