Docker hub、Docker image、push、pull 有什么区别

发布于:2025-08-09 ⋅ 阅读:(18) ⋅ 点赞:(0)

        最近工作过程中被领导指出不清楚拉取和推的区别,求助度娘的过程中发现暂时没有准确的梳理,故整理完结果匆匆赶来更新一篇博客。

        但本人未从事开发行业,本文内容也属于整理,如有存在不足请各位师傅及时指出。

什么是 Docker?

        简单来说,Docker 是一个开源的应用容器引擎,它能让开发者把应用程序和其依赖的各种库、配置等打包到一个可移植的容器中。这个容器就像一个独立的 “小箱子”,里面包含了应用运行所需的全部环境,不管把它放到什么操作系统(比如 Windows、Linux、macOS)上,只要安装了 Docker,这个应用都能以相同的方式运行。

        举个生活中的例子,就像外卖送餐。

        餐品(应用程序)做好后,会被放在外卖盒(容器)里,里面可能还会有餐具、调料(依赖环境),不管是骑电动车、自行车还是步行(不同运行环境),这个外卖盒里的餐品都能保持原样送到用户手中。

        Docker 解决的就是传统开发中 “在我电脑上能运行,到你那怎么就不行了” 的环境一致性问题,大大简化了应用的部署、迁移和扩展流程。


Docker Image(Docker 镜像)

        可以把它看作是一个包含了应用程序、运行环境、配置文件等所有东西的 “模板”,是静态的。

        比如你开发了一个简单的网页应用,包含 HTML 文件、CSS 样式和 JavaScript 脚本,还有运行它需要的 Nginx 服务器环境,把这些打包在一起形成的文件就是一个 Docker 镜像。

        专业来讲,它是由一系列层(layers)组成的只读模板,这些层叠加起来构成了运行应用所需的完整文件系统。


Docker Hub

        这是一个公共的 “镜像仓库”,就像大家共用的一个大仓库,里面存放着各种各样的 Docker 镜像,供大家下载使用。

        比如你想搭建一个 MySQL 数据库服务,不用自己从头制作镜像,直接去 Docker Hub 上搜索 “mysql”,就能找到官方或其他开发者上传的 MySQL 镜像。

        它是 Docker 官方提供的最大的公共镜像 registry(注册中心),方便开发者分享和获取镜像。


Push(推送)与 Pull(拉取)

  • Push(推送):当你制作好了一个自己的 Docker 镜像,想把它存到 Docker Hub 上,方便自己在其他地方使用或者分享给别人,这个上传的过程就叫 push。比如你刚才制作的那个网页应用镜像,通过命令 “docker push 你的用户名 / 镜像名:版本号”,就能把它推送到你在 Docker Hub 的账户下。

  • Pull(拉取):和 push 相反,从 Docker Hub 或者其他镜像仓库把别人的镜像下载到自己电脑上的过程就是 pull。比如你在另一台电脑上想运行之前那个网页应用,就可以用命令 “docker pull 你的用户名 / 镜像名:版本号” 把镜像拉取下来。

操作 数据流向 核心作用 关键前提
pull 远程 → 本地 获取镜像,用于本地运行容器 远程有镜像,有读取权限
push 本地 → 远程 上传镜像,用于共享或备份 本地有镜像,有写入权限

    • pull 常用于

      • 初始化环境:新机器部署时,拉取基础镜像(如 Nginx、Python)。
      • 更新镜像:获取镜像的最新版本(如 docker pull ubuntu:latest)。
      • 使用他人镜像:直接拉取开源社区或团队共享的镜像,无需重复构建。
    • push 常用于

      • 共享镜像:将自己开发的应用镜像推送到团队私有仓库,供同事使用。
      • 部署联动:CI/CD 流程中,构建好的镜像推送到仓库后,服务器自动拉取并部署。
      • 备份镜像:将重要镜像上传到远程仓库,避免本地丢失。

    Docker Container(Docker 容器)

            它是从 Docker 镜像创建出来的运行实例,就像用模板做出的具体产品,是动态的。

            比如基于你那个网页应用镜像启动一个容器,这个容器就会运行起你的网页应用,你可以通过浏览器访问。容器可以被启动、停止、删除等操作,而且它和宿主机(运行 Docker 的电脑)以及其他容器相互隔离,保证了应用运行环境的一致性。


    实例演示

            你想在电脑上运行一个 WordPress 博客系统。

            首先,你可以去 Docker Hub 上 pull 官方的 WordPress 镜像和 MySQL 镜像(因为 WordPress 需要数据库支持)。然后,基于 MySQL 镜像创建一个容器,配置好数据库;再基于 WordPress 镜像创建一个容器,并连接到 MySQL 容器。

            这样,你的 WordPress 博客系统就通过 Docker 容器运行起来了。

            如果后续你对 WordPress 的配置做了修改,想保存下来,就可以把这个运行中的容器打包成一个新的 Docker 镜像,然后 push 到 Docker Hub 上,方便以后在其他地方使用这个修改后的镜像来创建容器。

            如有不准确请各位师傅及时指出!感恩!


    网站公告

    今日签到

    点亮在社区的每一天
    去签到