Docker 中如何实现镜像的推送和拉取

在 Docker 中,镜像的推送(push)和拉取(pull)是通过与**Docker 镜像仓库(Registry)**交互完成的。默认仓库是 Docker Hub,但你也可以使用私有仓库(Harbor、Nexus、AWS ECR 等)。


一、核心命令

操作命令示例说明
登录仓库docker login登录 Docker Hub 或私有仓库
标记镜像docker tag 源 目标给镜像加目标仓库标识
推送镜像docker push 仓库/镜像名上传镜像到仓库
拉取镜像docker pull 镜像名从仓库下载镜像

二、推送镜像步骤详解

1. 登录仓库

docker login

默认是登录 Docker Hub。若使用私有仓库:

docker login your-registry.com

2. 给镜像打标签(tag)

假设本地有镜像:my-app:1.0

docker tag my-app:1.0 username/my-app:1.0
  • 如果是私有仓库:
docker tag my-app:1.0 myregistry.com/dev/my-app:1.0

3. 推送镜像

docker push username/my-app:1.0

私有仓库:

docker push myregistry.com/dev/my-app:1.0

三、拉取镜像

docker pull username/my-app:1.0

私有仓库镜像:

docker pull myregistry.com/dev/my-app:1.0

四、常见私有仓库支持

仓库类型地址示例特点
Docker Hubdocker.io默认公开仓库
Harborharbor.mycompany.com企业常用,权限+审计强
AWS ECRxxxx.dkr.ecr.us-west-1.amazonaws.com/repo云端集成强
GitHub Packagesghcr.io/用户名/镜像名GitHub CI/CD 一体化

五、查看和管理镜像

docker images                  # 查看本地镜像
docker rmi 镜像ID              # 删除镜像
docker image ls                # 同上

六、本地搭建镜像仓库(Registry)

docker run -d -p 5000:5000 --name registry registry:2

推送示例:

docker tag my-app localhost:5000/my-app
docker push localhost:5000/my-app

七、配置 Docker 信任私有仓库(非 HTTPS)

如果是 HTTP 仓库(如 localhost 或自建仓库),需修改:

vim /etc/docker/daemon.json

{
  "insecure-registries": ["localhost:5000"]
}

systemctl restart docker

八、进阶技巧

技巧/问题说明
镜像压缩推送慢docker save + gzip 压缩传输
不用每次 login配置 ~/.docker/config.json
CI/CD 自动推送Jenkins/GitLab CI 中嵌入 loginpush
清理本地旧镜像docker image prune 自动清理

九、镜像导出/导入(离线推送)

# 导出镜像
docker save my-app:1.0 > my-app.tar

# 拷贝到目标机器后导入
docker load < my-app.tar

十、总结一张图

          docker tag                  docker push
本地镜像 --------------> myregistry.com/my-app:1.0 -------------> 镜像仓库

镜像仓库 <--------------------------------------------- docker pull
                         拉取镜像

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思静鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值