zoukankan      html  css  js  c++  java
  • Docker关键概念阐述

    要了解Docker需要对其体系结构中的几个关键概念有所了解,主要包括image、container、service、swarm、stack等。

    在介绍这几个概念时,会使用到一个测试环境,这个测试环境是一个由一台manager和一台worker构成的swarm,并且在两个node上都部署了weilu2/myrep:demo1这个镜像,只在manager这个node上部署了dockersamples/visualizer这个镜像。

    Image
    Image是一个轻量级的,独立的,可执行的包,其中包含了运行一个程序所必须的所有内容,包括代码,运行环境,类库,环境变量以及配置文件等。

    使用命令可以查看所有的image:

    docker images

    结果:

    REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
    friendlyhello              latest              a0a4a49f2713        22 hours ago        150MB
    weilu2/myrep               demo1               a0a4a49f2713        22 hours ago        150MB
    python                     2.7-slim            a15e375b7949        29 hours ago        138MB
    hello-world                latest              05a3bd381fc2        7 weeks ago         1.84kB
    dockersamples/visualizer   <none>              8dbf7c60cf88        3 months ago        148MB

    Container
    一个container是image的一个运行时实例,当image在内存中执行时就被称为container。

    使用命令可以查看所有的container:

    docker container ls

    结果:

    CONTAINER ID        IMAGE                             COMMAND             CREATED             STATUS              PORTS               NAMES
    739543688d4b        dockersamples/visualizer:stable   "npm start"         3 hours ago         Up 3 hours          8080/tcp            stlab_visualizer.1.fg2b1hqvnj2mq3m9w45yuz6kn
    bf9303546953        weilu2/myrep:demo1                "python app.py"     3 hours ago         Up 3 hours          80/tcp              stlab_web.4.0h9g8d449c63uz06gf3ugcy21
    16fb0dea04cb        weilu2/myrep:demo1                "python app.py"     3 hours ago         Up 3 hours          80/tcp              stlab_web.3.hkpsnerqii2kgp880ln5l1n8v

    通过观察结果可以发现,image部署在每一个node上就会形成一个container,因此可以理解为container是只在单个node上运行的image。

    Service
    一个服务是指程序其中的一个部分,比如对于一个大型应用来说,文件存储作为一个单独的服务提供使用,一个服务可以包含若干个container,服务的规模是可以伸缩的。

    可以使用命令查看Service:

    docker service ls

    结果:

    ID                  NAME                MODE                REPLICAS            IMAGE                             PORTS
    thz266xdqokf        stlab_visualizer    replicated          1/1                 dockersamples/visualizer:stable   *:8080->8080/tcp
    agqm6iq2jtlu        stlab_web           replicated          5/5                 weilu2/myrep:demo1                *:80->80/tcp

    通过对比前面的image、container以及这个service的结果,可以发现其三者之间的关系,一个service实际上是指一个image运行的所有container的总称。不管这个image运行在多少个node上。

    Swarm

    Swarm是指一组运行着docker的机器构成的集群。在一个swarm中包含若干个Node(节点),其中有一个swarm manager节点,作为管理整个swarm的存在,其余还有若干个节点作为worker存在。

    一台机器同一时间只能存在于一个swarm中。

    Node

    Swarm中的机器被称为节点,可以使用命令查看:

    docker node ls

    结果:

    ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
    w0mk0httmn11nencbmw9yk0xp *   centos7-1           Ready               Active              Leader
    yn8btfa3qvcozwcneh15hh9ju     centos7-2           Ready               Active              

    其中centos7-1是manager,根据后面的标识可以看出来。管理swarm的所有命令必须在manager这个节点上执行才有效果,包括该条命令。

    Stack

    Stack是指一组共享依赖的相关的服务。

    可以使用命令查看stack:

    docker stack ls

    结果:

    NAME                SERVICES
    stlab               2

    根据这个结果可以看到这个stack中包含两个services,实际上就是上面使用service ls命令查看到的两个service。

    使用命令可以查看某个stack下包含的service:

    docker stack services stlab

    最后一个参数是指stack的名字,结果如下:

    ID                  NAME                MODE                REPLICAS            IMAGE                             PORTS
    agqm6iq2jtlu        stlab_web           replicated          5/5                 weilu2/myrep:demo1                *:80->80/tcp
    thz266xdqokf        stlab_visualizer    replicated          1/1                 dockersamples/visualizer:stable   *:8080->8080/tcp

    Task

    Task是指在service中运行的一个container。可以使用命令查看某个stack下的task:

    docker stack ps stlab

    结果:

    ID                  NAME                     IMAGE                             NODE                DESIRED STATE       CURRENT STATE          ERROR                              PORTS
    moi9ubcbq6j9        stlab_web.1              weilu2/myrep:demo1                centos7-2           Running             Running 4 hours ago                                       
    fg2b1hqvnj2m        stlab_visualizer.1       dockersamples/visualizer:stable   centos7-1           Running             Running 3 hours ago                                       
    pu2ax0o6rq5f         \_ stlab_visualizer.1   dockersamples/visualizer:stable   centos7-1           Shutdown            Rejected 4 hours ago   "No such image: dockersamples/…"   
    l6peeaqkufkm        stlab_web.2              weilu2/myrep:demo1                centos7-2           Running             Running 4 hours ago                                       
    hkpsnerqii2k        stlab_web.3              weilu2/myrep:demo1                centos7-1           Running             Running 4 hours ago                                       
    0h9g8d449c63        stlab_web.4              weilu2/myrep:demo1                centos7-1           Running             Running 4 hours ago                                       
    jo9c0fld9foq        stlab_web.5              weilu2/myrep:demo1                centos7-2           Running             Running 4 hours ago          
  • 相关阅读:
    Mac环境下svn的使用
    ionic动态切换主题皮肤
    NodeJS中的require和import
    ionic3.x开发小坑记录(一)
    ios微信浏览器中video视频播放问题
    微信内置浏览器在使用video标签时(安卓)默认全屏的原因及解决办法
    转《发布ionic应用到App Store的完整步骤 》
    Tomcat内存问题解决办法
    linux系统的文件保护
    linux系统一些信息(待整理)
  • 原文地址:https://www.cnblogs.com/weilu2/p/docker_key_concept.html
Copyright © 2011-2022 走看看