前言:上一篇文章给大家拆解了Docker的定义,以及容器和虚拟机的核心区别,很多新手留言说“入门有方向了,但镜像、容器、仓库这三个词总混,不知道具体是啥、怎么用”。

确实,镜像(Image)、容器(Container)、仓库(Repository)是Docker的三大核心组件,也是新手入门的“第一道门槛”——搞懂这三个组件的关系和用法,就相当于掌握了Docker的80%基础,后续学习Dockerfile、Docker Compose都会事半功倍。

用“通俗类比+实操命令+实例拆解”的方式,把每个组件讲透,看完就能上手操作,还会补充新手常踩的坑,帮大家少走弯路。建议收藏+关注,跟上Docker系列入门教程,后续会持续更新实操案例,从零到一上手Docker,再也不用到处拼凑资料!

先搞懂核心逻辑:三个组件的关系(一句话总结)

新手不用一开始就死记硬背,先记住这句话,后续慢慢印证:仓库存镜像,镜像造容器,容器跑应用

通俗类比:把Docker想象成“快递行业”——仓库就是快递驿站(专门存快递),镜像就是快递包裹(里面装着应用和它的所有“家当”,即依赖环境),容器就是快递拆开后,里面的物品能直接使用的状态(镜像启动后,变成可运行的应用环境)。

再举个具体例子:我们从Docker Hub(官方仓库)下载Nginx镜像(快递包裹),然后用这个镜像创建容器(拆开快递,使用里面的Nginx),容器启动后,就能直接访问Nginx服务——这就是三个组件的核心用法,环环相扣,缺一不可。

详解一:镜像(Image——容器的模板,只读不修改

1. 通俗定义(新手能听懂)

镜像就是Docker的“模板”,是一个只读的文件集合,里面包含了运行某个应用程序所需的所有内容:代码、运行时环境(比如JDK、Python解释器)、系统工具、库文件、配置文件等。

简单说,镜像就是“做好的半成品”——比如Nginx镜像,里面已经提前装好了Nginx程序、默认配置、依赖库,你不用再手动下载、安装、配置,直接用它就能创建容器,启动Nginx服务。

重点提醒:镜像一旦创建,就只读不可修改——你不能直接修改镜像里的配置文件、添加依赖,只能基于原镜像,创建新的镜像(后续讲Dockerfile会详细说)。

2. 新手易理解的类比

镜像就相当于“手机系统安装包”——安装包是只读的,你不能直接修改安装包里的内容;你可以用这个安装包,在多台手机上安装同一个系统(就像用一个镜像,创建多个容器);如果想修改系统(比如装新软件),只能在安装好的系统上操作,不会改变原来的安装包。

3. 实操实例(直接复制命令,上手体验)

结合上一篇的基础,我们用简单的命令,操作镜像,感受它的用法(前提:已安装Docker,没安装的关注我,后续更新极简安装步骤):

  1. 拉取镜像:从仓库(默认Docker Hub)下载镜像,这是最常用的操作。
           
    命令:docker pull nginx:latest
    解释:pull是“拉取”的意思,nginx是镜像名称,latest是“最新版本”(也可以指定具体版本,比如nginx:1.24,更稳定,新手推荐指定版本);
           
    效果:执行命令后,Docker会自动从Docker Hub下载Nginx最新镜像,下载完成后,镜像就存放在本地了。
  1. 查看本地镜像:查看自己电脑/服务器上,已下载的所有镜像。
           
    命令:docker images
    效果:执行后会显示镜像名称、版本、镜像ID、创建时间、大小(Nginx镜像大概几十MB,非常轻便)。
  1. 删除本地镜像:删除不需要的镜像,释放空间(注意:删除前,要先删除依赖该镜像的所有容器,否则删不掉)。
           
    命令:docker rmi nginx:latest
    解释:rmi是“删除镜像”的意思;如果提示删除失败,先执行docker ps -a查看所有容器,删除依赖该镜像的容器(docker rm 容器ID/容器名称),再删除镜像。
  1. 查看镜像详情:查看某个镜像的具体信息(比如镜像包含的文件、创建记录)。
           
    命令:docker inspect nginx:latest
    解释:inspect是“查看详情”的意思,新手可以大概看看,了解镜像的结构,不用深入研究每一行内容。

4. 新手避坑点(重点!)

  • 坑1:盲目拉取latest版本——latest是最新版本,但可能不稳定,适合测试;生产环境、新手练习,建议指定具体版本(比如nginx:1.24、mysql:5.7),避免版本兼容问题。
  • 坑2:删除镜像提示失败——忘记删除依赖该镜像的容器,必须先删除容器,再删除镜像(记住:容器依赖镜像,镜像不依赖容器)。
  • 坑3:觉得镜像越大越好——错!镜像越小,下载速度越快、占用资源越少,好的镜像会精简不必要的文件,新手尽量选择官方镜像(名称不带前缀),更安全、更轻便。

详解二:容器(Container——镜像的运行实例,可读写可操作

1. 通俗定义(新手能听懂)

容器是基于镜像创建的运行实例,是一个“可读写、可操作的隔离环境”——它相当于把只读的镜像“激活”,变成一个能运行应用的独立空间,里面包含了运行中的进程、独立的文件系统(基于镜像的只读文件系统,加上一层可读写层)。

重点提醒:

  • 一个镜像,可以创建多个容器——比如用Nginx镜像,能创建10个容器,每个容器都是独立的,互不干扰(比如修改一个容器的Nginx配置,不会影响其他容器)。
  • 容器是“动态的”——可以启动、停止、重启、删除,容器运行时,会在镜像的只读层上,添加一层可读写层,所有对容器的修改(比如修改配置、创建文件),都只存在于这层可读写层,不会影响原镜像。

2. 新手易理解的类比

容器就相当于“用手机安装包,安装好的手机系统”——一个安装包(镜像),可以在多台手机上安装多个系统(多个容器);每个手机系统都是独立的(你在A手机上装软件、改设置,不会影响B手机);你可以给手机开机(启动容器)、关机(停止容器)、恢复出厂设置(删除容器,重新创建),所有操作都不会改变原来的安装包(镜像)。

3. 实操实例(核心命令,必练!)

容器的操作是Docker入门的核心,新手一定要多敲几遍命令,记住用法,下面的命令全程可复制,跟着操作:

  1. 创建并启动容器:最核心的命令,基于镜像,创建并启动容器(一步到位)。
    命令:docker run -d -p 80:80 --name my-nginx nginx:latest
    逐词解释(新手必看):
           
    - docker run:创建并启动容器的命令;
           
    - -d:后台运行容器(不会占用当前终端,关闭终端,容器依然运行);
    - -p 80:80:端口映射——把本地电脑的80端口,映射到容器的80端口(这样你访问本地80端口,就能访问到容器里的Nginx服务);
           
    - --name my-nginx:给容器起一个名字(方便后续操作,比如停止、删除容器,不用记复杂的容器ID);
           
    - nginx:latest:基于哪个镜像创建容器(必须是本地已有的镜像,没有的话,Docker会自动先拉取镜像,再创建容器);
           
    效果:执行命令后,容器启动成功,访问本地http://localhost(或127.0.0.1),就能看到Nginx的欢迎页,说明容器运行正常。
  1. 查看运行中的容器:查看当前正在运行的所有容器。
           
    命令:docker ps
    效果:显示容器ID、容器名称、使用的镜像、启动时间、状态、端口映射等信息(能看到我们刚才创建的my-nginx容器,状态是“Up”,表示正在运行)。
  1. 查看所有容器:包括正在运行的、已经停止的所有容器(新手容易忽略,比如容器停止后,用docker ps看不到,就用这个命令)。
           
    命令:docker ps -a
  1. 停止容器:停止正在运行的容器(容器停止后,不会删除,只是不运行,后续可以重新启动)。
           
    命令:docker stop my-nginx(也可以用容器ID,比如docker stop 123456)
  1. 重启容器:重启已经停止的容器。
           
    命令:docker start my-nginx
  1. 进入容器内部:进入容器的终端,操作容器内部的文件、执行命令(比如修改Nginx配置)。
           
    命令:docker exec -it my-nginx /bin/bash
    解释:exec是“执行命令”的意思,-it是“交互式终端”(能输入命令、查看输出),/bin/bash是进入容器的bash终端;
          
    效果:执行后,终端会切换到容器内部,你可以执行ls(查看文件)、cd /etc/nginx(进入Nginx配置目录)等命令,修改配置后,重启容器就能生效。
  1. 删除容器:删除不需要的容器(容器删除后,里面的修改会全部丢失,无法恢复,删除前建议停止容器)。
           
    命令:docker rm my-nginx
    如果想强制删除正在运行的容器(不推荐,容易出问题):docker rm -f my-nginx

4. 新手避坑点(重点!)

  • 坑1:忘记加-d参数,容器启动后,关闭终端就停止——一定要加-d,让容器后台运行,避免频繁重启。
  • 坑2:端口映射错误,无法访问容器服务——比如启动Nginx容器,没加-p 80:80,或者映射的端口被其他程序占用,都会导致无法访问;可以用netstat命令,查看端口是否被占用。
  • 坑3:进入容器后,修改配置不生效——修改配置后,必须重启容器(docker restart 容器名称),配置才能生效,新手容易忘记这一步。
  • 坑4:容器删除后,以为镜像也被删除——容器和镜像相互独立,删除容器,不会影响镜像;删除镜像,必须先删除依赖它的容器。

详解三:仓库(Repository——镜像的中转站,集中存储与分发

1. 通俗定义(新手能听懂)

仓库就是集中存储和分发镜像的中转站,相当于Docker的“镜像超市”——开发者可以把自己构建的镜像,上传到仓库,供其他人下载使用;新手可以从仓库,下载别人已经构建好的镜像(比如官方的Nginx、MySQL镜像),不用自己手动构建,节省时间。

重点区分两个概念(新手易混):

  • 仓库(Repository):存储同一类型镜像的集合(比如Nginx仓库,里面存储了不同版本的Nginx镜像);
  • 仓库注册中心(Registry):管理多个仓库的服务(比如Docker Hub,是官方的仓库注册中心,里面有无数个仓库,包含各种应用的镜像)。

简单说:Docker Hub是“大型超市”(仓库注册中心),里面有“Nginx货架”“MySQL货架”(仓库),每个货架上,有不同规格的“商品”(不同版本的镜像)。

2. 常见的仓库类型(新手必知)

新手不用掌握所有仓库,重点了解3种常见类型,足够日常使用:

  1. 官方公共仓库:Docker Hub
    地址:https://hub.docker.com/(无需注册,也能下载公开镜像;注册后,可以上传自己的镜像);
           
    特点:镜像最齐全、最官方、最安全,是新手下载镜像的首选;缺点:服务器在国外,下载速度可能较慢(国内可以用镜像加速器,后续补充)。
  1. 国内公共仓库(镜像加速器)
    常见的:阿里Docker镜像服务、网易Docker镜像服务、华为云Docker镜像服务;
           
    特点:是Docker Hub的“国内镜像”,下载速度极快,适合国内用户;用法和Docker Hub一致,只是需要简单配置加速器(关注我,后续更新配置步骤)。
  1. 私有仓库
    定义:企业或个人,自己搭建的仓库,只供内部使用(比如企业内部,把自己开发的应用镜像,上传到私有仓库,供公司员工下载部署);
           
    特点:安全性高,适合企业场景;新手入门阶段,暂时不用接触,后续学完基础,再了解搭建方法。

3. 实操实例(仓库核心操作)

仓库的操作,新手重点掌握“下载镜像”(pull),后续熟练后,再学习“上传镜像”(push),下面是核心操作实例:

  1. Docker Hub下载镜像(最常用,和前面镜像的操作一致):
           
    命令:docker pull mysql:5.7(下载MySQL 5.7版本镜像);
           
    命令:docker pull redis:6.2(下载Redis 6.2版本镜像);
           
    解释:如果不指定仓库地址,Docker默认从Docker Hub下载镜像。
  1. 从国内仓库下载镜像(以阿里镜像为例):
           
    命令:docker pull registry.cn-hangzhou.aliyuncs.com/library/nginx:latest
           
    解释:registry.cn-hangzhou.aliyuncs.com是阿里镜像的地址,library是官方镜像库,nginx是镜像名称,latest是版本;
           
    优点:下载速度比Docker Hub快很多,国内用户推荐配置加速器后,直接用docker pull命令,自动从国内仓库下载。
  1. 上传镜像到Docker Hub(新手了解,后续实操再练):
           
    步骤1:注册Docker Hub账号(https://hub.docker.com/);
           
    步骤2:本地终端登录Docker Hub:docker login -u 用户名 -p 密码
           
    步骤3:给本地镜像打标签(必须和Docker Hub用户名一致):docker tag nginx:latest 用户名/nginx:latest
           
    步骤4:上传镜像:docker push 用户名/nginx:latest
           
    效果:上传完成后,登录Docker Hub,就能看到自己上传的镜像,供其他人下载。

4. 新手避坑点(重点!)

  • 坑1:Docker Hub下载速度慢,就以为是自己操作错了——不是操作问题,是服务器在国外,配置国内镜像加速器,就能解决(后续更新配置步骤,关注不迷路)。
  • 坑2:上传镜像失败,提示“未授权”——忘记登录Docker Hub,或者镜像标签和Docker Hub用户名不一致,必须先登录,再给镜像打正确的标签,才能上传。
  • 坑3:盲目下载非官方镜像——非官方镜像可能包含恶意程序,不安全;新手下载镜像,优先选择“官方镜像”(Docker Hub上,镜像名称不带前缀,且标注“Official Image”)。

总结:三大组件核心回顾(新手必背)

看完这篇文章,新手一定要记住以下3点,彻底搞懂三大组件:

  1. 镜像:只读模板,包含应用和所有依赖,相当于“安装包”,不能直接修改,只能用来创建容器;
  1. 容器:镜像的运行实例,可读写、可操作,相当于“安装好的系统”,能运行应用,可启动、停止、删除;
  1. 仓库:镜像的中转站,相当于“超市”,用来存储和分发镜像,新手主要从这里下载镜像。

核心逻辑再强调一遍:仓库存镜像,镜像造容器,容器跑应用——这是Docker的核心流程,后续所有操作,都围绕这个流程展开。

最后说一句:Docker入门,重点不在于“背概念”,而在于“多实操”——把今天的命令,每一条都敲3-5遍,感受镜像、容器、仓库的关系,慢慢就会熟练。

后续我会持续更新Docker系列教程,下一篇给大家讲“Docker常用命令汇总(新手必备,收藏即用)”,还会补充镜像加速器配置、Docker安装步骤,以及Dockerfile构建自定义镜像,一步步带大家从零到一上手Docker。

觉得这篇文章有用的话,收藏+关注,评论区扣“Docker组件”,我会把整理好的“三大组件核心命令手册”(PDF版),免费分享给大家,助力大家快速记住命令,上手实操!

关注我,后续持续输出Docker、运维、开发相关干货,新手也能轻松跟上,少走弯路~

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐