Docker学习__基本概念

其他知识点,会在后续学习过程中在做完善。

docker分为两个版本:

  • docker-ee 企业版(付费)
  • docker-ce 社区版(开源免费)

docker架构(docker architecture)分为3个部分:

  1. docker的客户端(client)
  2. docker的服务端(server)
    • docker的守护进程(daemon)
    • docker的容器(container)
    • docker的镜像(image)
  3. docker的镜像仓库(registry)

不论是Client端还是Server端,都是由docker一个程序提供。

  其中的一个子程序叫做daemon,表示为守护进程。运行daemon此主机就变成了守护进程服务器。

镜像(Image): 

对Linux而言:
1.内核启动
2.挂载root文件系统,为其提供用户空间支持。
  注:Docker镜像(Image),相当于是一个root文件系统。
Docker 镜像是一个特殊的文件系统:
1.提供了:容器运行时所需的程序、库、资 源、配置等文件,
2.包含了:一些为运行时准备的一些配置参数(如匿名卷、环境 变量、用户等)。
注意:Docker镜像不包含任何动态数据,其内容在构建之后也不会被改变,内容是只读的
1.镜像是怎么构建的?
镜像构建是一层层构建的。前一层是后一层的基础,每一层构建完就不会在发生发改变,后一层上的
任何改变只发生在自己这一层。
2.为什么使用分层存储?
因为镜像包含操作系统完整的root文件系统,其体积庞大,因此在Docker设计时,就充分利用Union FS的技术,
将其实际为分层存储的架构。镜像只是一个虚拟概念,它由多层文件系统联合组成。
3.镜像是否可以复用?
分层存储的特征使得镜像可以复用,使用之前构建好的镜像作为基础层,进一步添加新的层,定制自
己所需的内容,构建新的镜像。
4.构建镜像时需要注意:
镜像构建时,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。

容器(container):

  1.容器可以被创建,启动,停止,删除,暂停等。

  2.容器实际是进程,但与直接在宿主机执行的进程的不同,容器进程运行于属于自己的独立的命名空间。

  3.容器内的进程是运行在一个隔离的环境里,使用起来就像是在一个独立于宿主的系统下操作一样。

  4.容器可以拥有自己的root文件系统,网络配置,进程空间,用户ID空间。这种特性使得容器封装的应

     用比直接在宿主运行更加安全。

  5.容器也是分层存储。每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,

     这是为容器运行时读写而准备的存储层是容器存储层。

 
仓库(registries):

     镜像构建完成后,可以很容易在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像

  我们需要一个集中的存储,分发镜像的服务,Docker registries就是这样的服务。一个Docker registries中

  可以包含多个仓库;每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

    通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应用软件的各个版本,我们可

  以通过<仓库名>:<标签>的格式来指定具体是一个软件哪个版本的镜像,如不给出标签,将以latest作为默认标签。

  以nginx镜像为例,nginx是仓库的名字,其内包含有不同的版本标签,如,1.14,1.17我们可以通过nginx:1.15,

  或者ubuntu:16.04来具体指定所需哪个版本的镜像,如果忽略了标签,比如ubundu,那将视为ubuntu:latest。

    仓库名经常以两段式路径形式出现,比如jwilder/nginx-proxy,前者往往意味着Docker registries多用户

  环境下的用户名,后者则往往是对应的软件名。但这并非绝对,取决于所使用的具体Docker registries的软件或服务。

  

相关推荐