如何将本地 Docker 镜像推送到你的 Docker Hub 仓库?
一、确认你的 Docker Hub 仓库信息
你已创建了两个仓库:
- 公共仓库:
cc
(公开可见,所有人都可以拉取) - 个人仓库:
mygo
(默认私有,只有你或授权用户可访问)
仓库地址格式为:
<你的Docker Hub用户名>/<仓库名>:<标签>
假设你的 Docker Hub 用户名为 001w
,仓库地址分别是:
- 公共仓库:
001w/cc
- 个人仓库:
001w/mygo
二、推送镜像到公共仓库 001w/cc
✅ 步骤 1:标记本地镜像
将本地镜像(如 myapp1:latest
)打上目标仓库的标签:
docker tag myapp1:latest 001w/cc:latest
✅ 步骤 2:推送镜像到 Docker Hub
docker push 001w/cc:latest
✅ 步骤 3:验证推送结果
访问 https://hub.docker.com/r/001w/cc 查看是否成功。
三、推送镜像到个人仓库 001w/mygo
✅ 步骤 1:标记本地镜像
将本地镜像(如 myapp:latest
)打上目标仓库的标签:
docker tag myapp:latest 001w/mygo:latest
✅ 步骤 2:推送镜像到 Docker Hub
docker push 001w/mygo:latest
✅ 步骤 3:验证推送结果
访问 https://hub.docker.com/r/001w/mygo 查看是否成功。
四、常见错误与解决方案
错误命令 | 错误原因 | 正确操作 |
---|---|---|
docker push 001w/cc:myapp1:latest | 标签格式错误(多个冒号) | 应为:docker push 001w/cc:latest |
docker push 001w/mygo:latest 报错 denied: requested access to the resource is denied | 权限不足(未登录或仓库不存在) | 确保已登录 Docker Hub 并确认仓库存在 |
docker tag myapp:latest 001w/mygo | 缺少 :latest 标签 | 应为:docker tag myapp:latest 001w/mygo:latest |
五、完整示例流程
# 登录 Docker Hub(如果尚未登录)
docker login
# 标记并推送公共仓库 cc
docker tag myapp1:latest 001w/cc:latest
docker push 001w/cc:latest
# 标记并推送个人仓库 mygo
docker tag myapp:latest 001w/mygo:latest
docker push 001w/mygo:latest
六、注意事项
公共仓库 vs 私有仓库:
- 公共仓库(
cc
):所有人都可以拉取。 - 私有仓库(
mygo
):默认私有,需手动设置为公共(在 Docker Hub 页面上切换)。
- 公共仓库(
标签管理:
- 使用语义化标签(如
v1.0.0
)而非latest
,避免版本混乱。 示例:
docker tag myapp:latest 001w/mygo:v1.0.0 docker push 001w/mygo:v1.0.0
- 使用语义化标签(如
清理无效标签(可选):
如果之前打过错误标签,可以删除:docker rmi 001w/cc:myapp1 # 删除错误标签
七、总结
推送公共仓库
cc
:docker tag myapp1:latest 001w/cc:latest docker push 001w/cc:latest
推送个人仓库
mygo
:docker tag myapp:latest 001w/mygo:latest docker push 001w/mygo:latest
验证方式:
- 访问 Docker Hub 页面查看镜像是否已上传。
- 使用
docker pull 001w/cc:latest
或docker pull 001w/mygo:latest
测试拉取。
常见问题:
- 标签格式错误:确保格式为
<用户名>/<仓库名>:<标签>
。 - 权限不足:确保已登录 Docker Hub。
- 仓库不存在:确保已在 Docker Hub 上创建仓库。
- 标签格式错误:确保格式为
✅ 最终目标
确保你的镜像能通过以下命令拉取和运行:
docker pull 001w/cc:latest
docker run -it --rm 001w/cc:latest
docker pull 001w/mygo:latest
docker run -it --rm 001w/mygo:latest