Crear-Sevicio-Swarm

Swarm

Nota: Los contenedores Docker se lanzan por medio de Servicios, tenemos dos tipos de Servicios: (servicios globales) y (servicios replicados) al crear un Servicios, se iniciar tareas la cual se ejecuta para realiza el trabajo, por lo tanto podemos decir que servicio es una descripción de una tarea que queremos ejecutar.

-. Los Servicios-Swarm utilizan un modelo declarativo , lo que significa que usted define el estado deseado del servicio y confía en Docker para mantener este estado.

Este Estado que podemos definir :

  1. . El nombre de la imagen y la etiqueta que deben ejecutarse los contenedores de Servicio
  2. . Cuantos contenedores participan en el Servicio
  3. . Si algún puerto está expuesto a clientes fuera del Swarm
  4. . Si el Servicio debe iniciarse automáticamente cuando se inicia Docker
  5. . El comportamiento específico que ocurre cuando se reinicia el servicio (si se usa un reinicio continuo)
  6. . Características de los Nodos donde se puede ejecutar el Servicio (como restricciones de recursos y preferencias de ubicación)

Crea un Servicio

. Para crear un Servicio de réplica única sin configuración adicional, solo necesita proporcionar el nombre de la imagen. Iniciamos un servicio Nginx con un nombre generado aleatoriamente y sin puertos publicados, solo con fines didácticos

Nota: Nginx es un servidor Web/proxy inverso ligero de alto rendimiento y un proxy para protocolos de correo electronico.

In: root@juan-Aspire-ES1-512:/# docker service create nginx

  1. Out: xuq78lmuq5hu608jn4t7bi7ch
  2. Out: overall progress: 1 out of 1 tasks
  3. Out: 1/1: running [==================================================>]
  4. Out: verify: Service converged

-. El Servicio está programado en un Nodo disponible. Para confirmar que el Servicio se creó e inició correctamente, use el (docker service ls) comando:

In: root@juan-Aspire-ES1-512:/# docker service ls

  1. ID                          NAME                        MODE          REPLICAS      IMAGE         PORTS
  2. xuq78lmuq5hu    nervous_tereshkova     replicated             1/1           nginx:latest

-. Los Servicios creados no siempre se ejecutan de inmediato. Un Servicio puede estar en estado pendiente si su imagen no está disponible, si ningún nodo cumple con los requisitos que configura para el servicio, u otros motivos.

-. Para proporcionar un nombre para su Servicio, use la ( –name) bandera:

In: root@juan-Aspire-ES1-512:/# docker service create –name my_web nginx

  1. Out: bchs0uzlqj80lx8w3xl5b1g1x
  2. Out: overall progress: 1 out of 1 tasks
  3. Out: 1/1: running [==================================================>]
  4. Out: verify: Service converged

In. root@juan-Aspire-ES1-512:/# docker service ls

  1. ID                            NAME                           MODE               REPLICAS       IMAGE          PORTS
  2. bchs0uzlqj80         my_web                         replicated           1/1                     nginx:latest
  3. xuq78lmuq5hu      nervous_tereshkova       replicated           1/1                     nginx:latest

. Al igual que con los contenedores independientes, puede especificar un comando que los contenedores del Servicio deben ejecutar, agregándolo después del nombre de la Imagen. Este ejemplo inicia un Servicio llamado helloworld que usa una alpine imagen y ejecuta el comando ping docker.com:

Nota: Alpine Linux es una distribución de Linux diseñada para ser pequeña, simple y segura

In: root@juan-Aspire-ES1-512:/# docker service create –name helloworld alpine ping docker.com

  1. Out: rlauxo0ac6vyehixa6hp23n2l
  2. Out: overall progress: 1 out of 1 tasks
  3. Out: 1/1: running [==================================================>]
  4. Out: verify: Service converged

In: root@juan-Aspire-ES1-512:/# docker service ls

  1. ID                              NAME                         MODE             REPLICAS      IMAGE          PORTS
  2. rlauxo0ac6vy         helloworld                    replicated         1/1                    alpine:latest
  3. bchs0uzlqj80          my_web                       replicated         1/1                    nginx:latest
  4. xuq78lmuq5hu       nervous_tereshkova    replicated          1/1                    nginx:latest

. Se puede especificar una Etiqueta de Image para que la utilice el Servicio. Este ejemplo modifica el anterior para usar la alpine:3.6 etiqueta: (tenemos que eliminar el anterior helloworld nos dará error):

In: root@juan-Aspire-ES1-512:/# docker service rm rlauxo0ac6vy

  1. Out: rlauxo0ac6vy

In: root@juan-Aspire-ES1-512:/# docker service create –name helloworld alpine:3.6 ping docker.com

  1. Out: fksy13az5hr7w2wnd2w7skih2
  2. Out: overall progress: 1 out of 1 tasks
  3. Out: 1/1: running [==================================================>]
  4. Out: verify: Service converged

In: root@juan-Aspire-ES1-512:/# docker service ls

  1. ID                              NAME                           MODE         REPLICAS       IMAGE               PORTS
  2. fksy13az5hr7          helloworld                     replicated     1/1                     alpine:3.6
  3. bchs0uzlqj80          my_web                         replicated     1/1                     nginx:latest
  4. xuq78lmuq5hu       nervous_tereshkova       replicated     1/1                     nginx:latest

Nota: Como punto final de esta parte un diagrama para ilustar lo expuestos.

Actualizar-Servicio

-. Puede cambiar casi todo lo relacionado con un Servicio existente usando el (docker service update) comando. Cuando actualiza un Servicio, Docker detiene sus contenedores y los reinicia con la nueva configuración.

. Dado que Nginx es un servicio web, funciona mucho mejor si publica el puerto 80 para clientes fuera del Swarm. Puede especificar esto cuando crea el Servicio, usando el indicador ( -p) o ( –publish) . Al actualizar un servicio existente, la bandera es ( –publish-add) . También hay una ( –publish-rm) bandera para eliminar un puerto que se publicó anteriormente.

El Servicio my_web actualizar el puerto 80 :

In: root@juan-Aspire-ES1-512:/# docker service ls

  1. ID                             NAME         MODE            REPLICAS        IMAGE           PORTS
  2. oeuh0wqqivm8      my_web      replicated        1/1                      nginx:latest

In: root@juan-Aspire-ES1-512:/# docker service update –publish-add 80 my_web

  1. Out: my_web
  2. Out: overall progress: 1 out of 1 tasks
  3. Out: 1/1: running [==================================================>]
  4. Out: verify: Service converged

In: root@juan-Aspire-ES1-512:/# docker service ls

  1. ID                              NAME          MODE          REPLICAS        IMAGE           PORTS
  2. oeuh0wqqivm8      my_web         replicated      1/1                      nginx:latest     *:30000->80/tcp

In: root@juan-Aspire-ES1-512:/# docker service update –help

Nota: Puede actualizar casi todos los detalles de configuración de un servicio existente, incluido el nombre de la imagen y la etiqueta que ejecuta . (docker service update –help)

Eliminar-Servicio

-. Para eliminar un Servicio, use el (docker service remove (rm)) comando. Puede eliminar un Servicio por su ID o nombre, como se muestra en el resultado del (docker service ls) comando. El siguiente comando elimina el my_web Servicio.

In: root@juan-Aspire-ES1-512:/# docker service ls

  1. ID                             NAME           MODE       REPLICAS        IMAGE                PORTS
  2. oeuh0wqqivm8      my_web        replicated    1/1                      nginx:latest          *:30000→80/tcp

In: root@juan-Aspire-ES1-512:/# docker service remove my_web

  1. Out: my_web

 

Recapitulando:

Tenemos en este apuntes la creación de los Servicios-Swarm la Actualizar-Servicios y la Eliminación de los Servicios.

Referencias: (Entorno-Moreluz)

Referencias: (Docker)