目录
前言
docker真的是个大坑.............,看了这么久文档,忽然发现自己连这四个概念都不清楚..........
Image
docker文档给出的定义如下:
结合这篇博客看:docker的image是什么
image大致是这么一个东西:
- 是一个虚拟文件系统,在运行时与宿主机的内核共同构成linux的虚拟环境,所以在进入到容器后,会发现里面有linux的文件结构
- 定义了容器运行时需要执行的命令,这部分大概指的是Dockerfile中的cmd以及entrypoint构建指令指令,指的是我们想在linux虚拟环境上运行什么程序
我的理解是image其实就是一个模板,里面定义了linux的文件系统,同时指定了希望在linux虚拟环境上运行的程序
Containers
docker文档给出的定义如下:
container大致是这么一个东西:
- 运行image后对应的实例
container由以下几个部分组成
- 一个Docker镜像
- 根据docker镜像以及内核形成的linux可执行环境(这是我自己的理解)
我的理解是container其实就是一个linux虚拟环境,这个虚拟环境是根据image这个模板构建出来的,如果把image比成设计图纸,那么container就是设计图纸的具体实现
Service
docker文档中的定义:
在docker的getstart文档中是这么介绍service的
这里有点乱,我举得这两份资料表达的意思差不多,稍微理一下:
- 一个service只运行一个image
- service可以根据一个image实例化多个容器,以便让主机分配更多的计算资源给服务进程
- service规定了镜像运行的一些规则,例如应该开放哪个端口,需要把容器复制多少份以增加服务处理能力等等
如果把土地比作计算资源,容器比作别墅,那么service就相当于一个别墅区,为了满足更多人购买别墅的需求,别墅区会建造更多的别墅(实例化更多容器),此时占用的土地也就越多(占用的计算资源),别墅区当然也会有自己的一套管理方法(规定镜像运行的一些规则),例如建造多少个出口(暴露多少个端口给外界)
swarm
docker文档的定义:
其实就是多个运行docker的主机聚集在一起形成一个集群,使用Swarm操作集群,会使用户感觉就像是在一台主机上进行操作,这个比较好理解,就不打比方了
如有错误,欢迎指出