Плагины и сервисы

В режиме swarm можно создать службу, позволяющую подключаться к сетям или монтировать тома, поддерживаемые подключаемыми модулями. Swarm планирует службы на основе доступности плагинов на узле.

Плагины тома

В этом примере подключаемый модуль тома установлен на рабочем потоке swarm, и с помощью этого подключаемого модуля создаётся том. В диспетчере создаётся сервис с соответствующими параметрами монтирования. Можно заметить, что служба запланирована для запуска на рабочем узле с указанным плагином тома и томом. Обратите внимание, что node1 является менеджером, а node2 — рабочим.

  1. Подготовьте менеджера. В узле 1:

    $ docker swarm init
    Swarm initialized: current node (dxn1zf6l61qsb1josjja83ngz) is now a manager.
    
  2. Присоединяйтесь к swarm, устанавливает плагин и создаёт том на воркере. В узле 2:

    $ docker swarm join \
    --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
    192.168.99.100:2377
    
    $ docker plugin install tiborvass/sample-volume-plugin
    latest: Pulling from tiborvass/sample-volume-plugin
    eb9c16fbdc53: Download complete
    Digest: sha256:00b42de88f3a3e0342e7b35fa62394b0a9ceb54d37f4c50be5d3167899994639
    Status: Downloaded newer image for tiborvass/sample-volume-plugin:latest
    Installed plugin tiborvass/sample-volume-plugin
    
    $ docker volume create -d tiborvass/sample-volume-plugin --name pluginVol
    
  3. Создаёт сервис с помощью плагина и тома. В узле1:

    $ docker service create --name my-service --mount type=volume,volume-driver=tiborvass/sample-volume-plugin,source=pluginVol,destination=/tmp busybox top
    
     $ docker service ls
     z1sj8bb8jnfn  my-service   replicated  1/1       busybox:latest
    

    docker service ls показывает запущенный экземпляр службы 1.

  4. Наблюдайте, как задача становится запланированной в узле 2:

    $ docker ps --format '{{.ID}}\t {{.Status}} {{.Names}} {{.Command}}'
    83fc1e842599     Up 2 days my-service.1.9jn59qzn7nbc3m0zt1hij12xs "top"
    

Сетевые плагины

В этом примере подключаемый модуль глобальной сети установлен как на диспетчере swarm, так и на рабочем месте. Сервис создаётся с реплицированными экземплярами с помощью установленного плагина. Мы будем наблюдать, как доступность плагина определяет создание сети и планирование контейнеров.

Обратите внимание, что node1 является менеджером, а node2 — рабочим.

  1. Устанавливает глобальный сетевой подключаемый модуль как для менеджера, так и для рабочего. На узле1 и узле2:

    $ docker plugin install bboreham/weave2
     Plugin "bboreham/weave2" is requesting the following privileges:
     - network: [host]
     - capabilities: [CAP_SYS_ADMIN CAP_NET_ADMIN]
     Do you grant the above permissions? [y/N] y
     latest: Pulling from bboreham/weave2
     7718f575adf7: Download complete
     Digest: sha256:2780330cc15644b60809637ee8bd68b4c85c893d973cb17f2981aabfadfb6d72
     Status: Downloaded newer image for bboreham/weave2:latest
     Installed plugin bboreham/weave2
    
  2. Создаёт сеть с помощью плагина в менеджере. На узле1:

    $ docker network create --driver=bboreham/weave2:latest globalnet
    
     $ docker network ls
     NETWORK ID          NAME                DRIVER                   SCOPE
     qlj7ueteg6ly        globalnet           bboreham/weave2:latest   swarm
    
  3. Создаёт службу в диспетчере и устанавливает для реплик значение 8. Обратите внимание, что контейнеры планируются как в диспетчере, так и в рабочем процессе.

    На узле 1:

    $ docker service create --network globalnet --name myservice --replicas=8 mrjana/simpleweb simpleweb
    w90drnfzw85nygbie9kb89vpa
    
    $ docker ps
     CONTAINER ID        IMAGE                                                                                      COMMAND             CREATED             STATUS              PORTS               NAMES
     87520965206a        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         5 seconds ago       Up 4 seconds                            myservice.4.ytdzpktmwor82zjxkh118uf1v
     15e24de0f7aa        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         5 seconds ago       Up 4 seconds                            myservice.2.kh7a9n3iauq759q9mtxyfs9hp
     c8c8f0144cdc        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         5 seconds ago       Up 4 seconds                            myservice.6.sjhpj5gr3xt33e3u2jycoj195
     2e8e4b2c5c08        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         5 seconds ago       Up 4 seconds                            myservice.8.2z29zowsghx66u2velublwmrh
    

    На узле 2:

    $ docker ps
     CONTAINER ID        IMAGE                                                                                      COMMAND             CREATED             STATUS                  PORTS               NAMES
     53c0ae7c1dae        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         2 seconds ago       Up Less than a second                       myservice.7.x44tvvdm3iwkt9kif35f7ykz1
     9b56c627fee0        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         2 seconds ago       Up Less than a second                       myservice.1.x7n1rm6lltw5gja3ueikze57q
     d4f5927ba52c        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         2 seconds ago       Up 1 second                                 myservice.5.i97bfo9uc6oe42lymafs9rz6k
     478c0d395bd7        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         2 seconds ago       Up Less than a second                       myservice.3.yr7nkffa48lff1vrl2r1m1ucs
    
  4. Уменьшает количество экземпляров. На узле1:

      $ docker service scale myservice=0
    myservice scaled to 0
    
  5. Отключить и удаляет плагин на воркере. На узле2:

      $ docker plugin rm -f bboreham/weave2
    bboreham/weave2
    
  6. Снова увеличивает количество экземпляров. Обратите внимание, что все контейнеры запланированы на мастере, а не на рабочем, потому что плагин больше не доступен на рабочем.

    На узле 1:

      $ docker service scale myservice=8
    myservice scaled to 8
    
    $ docker ps
    CONTAINER ID        IMAGE                                                                                      COMMAND             CREATED             STATUS              PORTS               NAMES
     cf4b0ec2415e        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         39 seconds ago      Up 36 seconds                           myservice.3.r7p5o208jmlzpcbm2ytl3q6n1
     57c64a6a2b88        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         39 seconds ago      Up 36 seconds                           myservice.4.dwoezsbb02ccstkhlqjy2xe7h
     3ac68cc4e7b8        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         39 seconds ago      Up 35 seconds                           myservice.5.zx4ezdrm2nwxzkrwnxthv0284
     006c3cb318fc        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         39 seconds ago      Up 36 seconds                           myservice.8.q0e3umt19y3h3gzo1ty336k5r
     dd2ffebde435        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         39 seconds ago      Up 36 seconds                           myservice.7.a77y3u22prjipnrjg7vzpv3ba
     a86c74d8b84b        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         39 seconds ago      Up 36 seconds                           myservice.6.z9nbn14bagitwol1biveeygl7
     2846a7850ba0        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         39 seconds ago      Up 37 seconds                           myservice.2.ypufz2eh9fyhppgb89g8wtj76
     e2ec01efcd8a        mrjana/simpleweb@sha256:317d7f221d68c86d503119b0ea12c29de42af0a22ca087d522646ad1069a47a4   "simpleweb"         39 seconds ago      Up 38 seconds                           myservice.1.8w7c4ttzr6zcb9sjsqyhwp3yl
    
    
    On node 2:
    
    .. code:: console
    
       $ docker ps
     CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES