sql >> Base de Datos >  >> RDS >> Database

Uso de Docker en Azure Container Service con Swarm Cluster

En el primer artículo, "Creación de un clúster de Docker Swarm en Azure Container Service", analizamos la creación de un clúster de Docker Swarm en Azure Container Service (ACS). Cada máquina virtual (maestra o agente) tiene Docker ejecutándose cuando se crea el Swarm. En este artículo de continuación, analizaremos el uso de Docker en el Swarm creado en Azure Container Service. Analizaremos el uso de Docker independiente y un servicio de modo Docker Swarm. Este artículo tiene las siguientes secciones:

  • Configuración del entorno
  • Lista de información de Docker
  • Ejecución de una imagen de Docker Hello World
  • Ejecutar una imagen de Nginx Docker
  • Listado de contenedores Docker
  • Acceso al contenedor Nginx Docker en un navegador
  • Eliminar un contenedor Docker
  • Inicializar el modo Docker Swarm
  • Creación de un servicio Docker
  • Listado de los servicios de Docker
  • Listado de tareas de servicio de Docker
  • Listado de contenedores Docker para el servicio Docker
  • Exploración de registros generados por un contenedor de servicio de Docker
  • Conclusión

Configuración del entorno

Use el mismo entorno que en el primer artículo, "Creación de un clúster Docker Swarm en Azure Container Service". Cree un clúster Swarm en ACS, como se describe en el artículo. En este artículo, utilizaremos el clúster Swarm que consta de tres nodos maestros y un nodo agente para ejecutar un contenedor Docker independiente y un servicio de modo Docker Swarm.

Información de ventana acoplable

Inicie Cloud Shell como se explica en el artículo "Creación de un clúster Docker Swarm en Azure Container Service". Conéctese a una máquina virtual maestra de Swarm utilizando una clave privada SSH RSA, un nombre de usuario y una dirección IP pública de la maestra, como se explicó también en el artículo anterior. El comando SSH para conectarse a la VM maestra es el siguiente; la clave privada SSH RSA, el nombre de usuario y la dirección IP pública serían diferentes para diferentes usuarios.

ssh -i /home/deepak/.ssh/id_rsa -p 2200 [email protected]

Se establece una conexión y se muestra un símbolo del sistema para la máquina virtual maestra.

[email protected]:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2200 [email protected] a Ubuntu 14.04.4 LTS (GNU/Linux 3.19.0-65-genérico x86_64) * Documentación:https://help.ubuntu.com/ Información del sistema al martes 10 de octubre a las 22:40:17 UTC de 2017 Carga del sistema:0,27 Procesos:131 Uso de /:4,2 % de 28,80 GB Usuarios conectados:0 Uso de memoria :2 % de dirección IP para eth0:172.16.0.5 Intercambio de uso:0 % de dirección IP para docker0:172.17.0.1 Grafique estos datos y administre este sistema en:https://landscape.canonical.com/ Obtenga soporte en la nube con Ubuntu Advantage Cloud Invitado:http://www.ubuntu.com/business/services/cloud Nueva versión '16.04.3 LTS' disponible. Ejecute 'do-release-upgrade' para actualizarlo. Último inicio de sesión:martes 10 de octubre a las 22:40:17 de 2017 desde 40.78.30.37

Se configuraron tres nodos principales en el Swarm aprovisionado en el artículo "Creación de un clúster de Docker Swarm en Azure Container Service". La cantidad de máquinas virtuales maestras puede ser 1, 3 o 5. Cuando se ejecutan varias máquinas virtuales maestras, el comando SSH para conectarse a cada una de las máquinas virtuales maestras es el mismo excepto por el puerto SSH, que es 2200 para 1 maestro, 2201 para el maestro 2, 2202 para el maestro 3, 2203 para el maestro 4 y 2204 para el maestro 5. Con tres máquinas virtuales maestras, los puertos SSH utilizados son 2200, 2201 y 2202. Para conectarse a una maestra 2, el comando SSH es el siguiente:

[email protected]:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2201 [email protected]

Y, el comando SSH para conectarse al maestro 2 es el siguiente:

[email protected]:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2202 [email protected]

El demonio de Docker se ejecuta en 172.16.0.5:2375 . Para mostrar información de todo el sistema, ejecute docker info dominio. Se lista la salida (parcial) del comando:

[email protected]:~$ docker -H 172.16.0.5:2375 infoContainers:0 En ejecución:0 En pausa:0 Detenido:0Imágenes:0Rol:PrimaryStrategy:spreadNodes:1 swarm-agent-D50F2361000001:10.0.0.5:2375Is Administrador:falso Versión de kernel:3.19.0-65-genericSistema operativo:linuxArquitectura:amd64CPU:2Memoria total:7.145GiB

Ejecución de una imagen de Docker Hello World

Cada una de las máquinas virtuales en un ACS Swarm es un host Docker y se puede ejecutar un contenedor Docker independiente en cualquiera de las máquinas virtuales Swarm. Como ejemplo, ejecute la imagen Docker "hello-world" en una máquina virtual maestra.

[email protected]:~$ docker run hello-worldNo se puede encontrar la imagen 'hello-world:latest' localmentelatest:Extraer de la biblioteca/hello-world5b0f327be733:Extraer resumen completo:sha256:b2ba691d8aac9e5ac3644c0788e3d3823f9e97f757f01d2 imagen-Status newered1ddc6eb5858 world:latest ¡Hola de Docker! Este mensaje muestra que su instalación parece estar funcionando correctamente. Para generar este mensaje, Docker realizó los siguientes pasos:1. El cliente de Docker se comunicó con el demonio de Docker. 2. El demonio Docker extrajo la imagen "hola mundo" del Docker Hub. 3. El demonio Docker creó un nuevo contenedor a partir de esa imagen que ejecuta el ejecutable que produce el resultado que está leyendo actualmente. 4. El demonio de Docker transmitió esa salida al cliente de Docker, que la envió a su terminal. Para intentar algo más ambicioso, puede ejecutar un contenedor de Ubuntu con:$ docker run -it ubuntu bashComparta imágenes, automatice flujos de trabajo y más con un ID de Docker gratuito:https://cloud.docker.com/Para obtener más ejemplos e ideas, visite:https://docs.docker.com/engine/userguide/[email protected]:~$

La imagen de Docker hola-mundo se ejecuta en la VM maestra de Swarm y no en Swarm. La máquina virtual maestra es solo una de las máquinas virtuales del enjambre. Docker Swarm está escuchando el punto final 172.16.0.5:2375. Para ejecutar contenedores Docker en Swarm, se debe proporcionar el punto final de Swarm, como veremos en la siguiente sección. Cuando un contenedor Docker se ejecuta en un Swarm, el maestro Swarm asigna un agente Swarm para ejecutar el contenedor Docker.

Ejecutar una imagen de Nginx Docker

El hola-mundo La imagen de Docker utilizada en la sección anterior es una imagen de Docker muy básica sin mucha dockerización y solo genera un mensaje. En esta sección, ejecutaremos un contenedor independiente con la imagen de Docker nginx para un servidor Nginx. El siguiente comando crea un contenedor Docker llamado hello-nginx y expone el puerto 80 en el host.

docker run --name hola-nginx -d -p 80:80 nginx

La salida de docker run aparece el comando:

[email protected]:~$ docker run --name hello-nginx -d -p 80:80 nginxNo se puede encontrar la imagen 'nginx:latest' localmentelatest:Extraer de la biblioteca/nginxbc95e04b23c0:Extraer complete110767c6efff:Extraer completef081e0c4df75:Extraer Completyigest:sha256:004ac1d5e791e705f12a17c80d7bb1e8f7f01aa7dca7deee 6e65a03465392072Status:descarga nueva imagen para nginx:Últimab3679edba090ff41482f3544b4b4b4b45d2929c29c29c29c29c204c29c29c204c29c29c29c29c29c29c29c29c29c29c29c29c29c29c29c29c29c29c45454545454545454545454545454545454545429TNET854COTNEM 

La ejecución de docker anterior El comando ejecuta un contenedor Docker en la VM maestra de Swarm. La ejecución de docker El comando se puede ejecutar en Swarm proporcionando la IP y el puerto del punto final de Swarm de la siguiente manera:

[email protected]:~$ docker -H 172.16.0.5:2375 ejecutar --name hola-nginx -d -p 80:80 nginxddcbc335988f7b5dba762b436bfde4c22d01144d67313813ba140a5391bac8df

Listado de contenedores Docker

Enumere los contenedores de Docker en una VM maestra con docker ps dominio. El hola-nginx El contenedor Docker aparece en la lista. Un contenedor de administrador de Swarm, que no es creado por el usuario pero es un contenedor del sistema, se crea cuando se crea un Swarm.

Nota del editor: Tenga en cuenta que muchas de las siguientes listas de códigos son demasiado amplias para mostrarse correctamente. Desplace el cuadro de código hacia la derecha para ver la lista completa.
[email protected]:~$ docker psCONTENEDOR ID IMAGEN COMANDO CREADO ESTADO PUERTOS NOMBRESb3679edba090 nginx "nginx -g 'daemon..." Hace 3 segundos Subir 2 segundos 0.0.0.0:80->80/tcp hello-nginxf82ebb6efa4f swarm:1.1.0 "/swarm manage --r..." Hace 5 minutos Hasta 3 minutos 0.0.0.0:2375->2375/tcp containers_swarm_1

Los contenedores de Docker en el extremo de Swarm se pueden enumerar de la siguiente manera:

[email protected]:~$ docker -H 172.16.0.5:2375 ps -aCONTENEDOR ID IMAGEN COMANDO CREADO ESTADO PUERTOS NOMBRESddcbc335988f nginx "nginx -g 'daemon..." Hace 36 segundos Hasta 35 segundos 10.0.0.5:80->80/tcp swarm-agent-D50F2361000001/hola-nginx

El contenedor Docker se ejecuta en un agente Swarm como lo indica el nombre del contenedor Docker swarm-agent-D50F2361000001/hello-nginx .

Acceso al contenedor Nginx Docker en un navegador

Como se discutió anteriormente, cuando un contenedor de Docker se ejecuta en Swarm usando el punto final de Swarm, el maestro de Swarm programa el contenedor en uno de los agentes de Swarm en Swarm. Para acceder al servidor Nginx que se ejecuta en el contenedor Docker en el extremo Swarm, se debe usar la IP pública del agente Swarm. El Swarm que hemos usado tiene solo un agente Swarm. La IP pública del agente Swarm se puede obtener de la lista de Recursos, como se muestra en la Figura 1.


Figura 1: Dirección IP pública del agente de enjambre

Alternativamente, haga clic en el balanceador de carga del agente Swarm en los Recursos , como se muestra en la Figura 2.


Figura 2: Equilibrador de carga de agente de enjambre

En la página de detalles del agente Swarm, obtenga la dirección IP (consulte la Figura 3).


Figura 3: Dirección IP del Agente Swarm

La dirección IP también se puede obtener de la página de detalles del balanceador de carga del agente Swarm, como se muestra en la Figura 4.


Figura 4: IP pública de Swarm Agent en la página Load Balancer

En un navegador en una máquina local, navegue hasta la dirección IP pública del agente Swarm. Se muestra la página de bienvenida del servidor Nginx, como se muestra en la Figura 5.


Figura 5: Invocar el servidor Nginx en un navegador

Eliminación de un contenedor Docker

Para eliminar un contenedor Docker, ejecute docker rm dominio. No se puede eliminar un contenedor de Docker en ejecución. Primero, detenga el contenedor Docker hello-nginx corriendo en el Enjambre.

[email protected]:~$ docker -H 172.16.0.5:2375 detener hola-nginxhola-nginx

Posteriormente, el contenedor detenido se puede eliminar con docker rm .

[email protected]:~$ docker -H 172.16.0.5:2375 rm hola-nginxhola-nginx

Inicializar el modo Docker Swarm

Como se mencionó anteriormente, Azure Container Service Swarm no tiene el modo Swarm habilitado de forma predeterminada. El modo Swarm debe inicializarse con docker swarm init comando.

[email protected]:~$ docker swarm init --advertise-addr 52.176.1.213Swarm inicializado:el nodo actual (ia4uj7431stu8y0j5h2yvdp27) ahora es un administrador.

Para agregar un trabajador a este enjambre, ejecute el siguiente comando:

docker swarm join --tokenSWMTKN-1-5ksj7uqccgv1vnnmie09qmt191ldpupof4ihg4vhm083c20xsh -6uyq5653uo62e521bcoatzyyz52.176.1.213:2377

Para agregar un administrador a este enjambre, ejecute 'docker swarm join-token manager' y siga las instrucciones.

Enumere los nodos del modo Swarm con docker node ls dominio. El nodo del administrador de Swarm aparece en la lista.

[email protected]:~$ docker node lsID HOSTNAME STATUS DISPONIBILIDAD MANAGER STATUSia4uj7431stu8y0j5h2yvdp27 * swarm-master-D50F2361-0 Listo Líder activo

Creación de un servicio Docker

Habiendo inicializado el modo Docker Swarm, cree un servicio Docker con docker service create dominio. Como ejemplo, cree un servicio de Docker que consta de dos réplicas usando la imagen de Docker alpine y haga ping a docker.com.

[email protected]:~$ docker service create--replicas 2 --name helloworld alpine ping docker.comtg1ywqiyei3jw9prco6890ol1

Como otro ejemplo, cree un servicio de Docker con la imagen de Docker tutum/hello-world y exponga el servicio en el host en el puerto 8080.

[email protected]:~$ docker service create> --name hello-world> --publish 8080:80> --replicas 2> tutum/hello-world3e38c1595cddg0ckmoyasrnnu

Listado de los servicios de Docker

Enumere los servicios de Docker con docker service ls dominio. Se enumeran los dos servicios creados en la sección anterior.

[email protected]:~$ docker service lsID NOMBRE MODO REPLICAS IMAGEN PUERTOS3e38c1595cdd hello-world replicado 2/2 tutum/hello-world:latest *:8080->80/tcptg1ywqiyei3j helloworld replicado 2/2 alpino:último

Listado de tareas de servicio de Docker

Enumere las tareas de servicio de Docker para helloworld servicio basado en la imagen Docker alpine .

[email protected]:~$ docker service ps helloworldID NOMBRE NODO DE IMAGEN ESTADO DESEADO ESTADO ACTUAL ERROR PUERTOS0mal82mskbge helloworld.1 alpine:latest swarm-master-D50F2361-0 En ejecución En ejecución 33 segundos agoiqz0bqkldxs2 helloworld.2 alpine:latest swarm- master-D50F2361-0 En ejecución En ejecución Hace 32 segundos

Enumere las tareas de servicio de Docker para hello-world servicio basado en tutum/hello-world Imagen acoplable.

[email protected]:~$ docker service ps hello-worldID NOMBRE NODO DE IMAGEN ESTADO DESEADO ESTADO ACTUAL ERROR PUERTOSyok48ja4o835 hello-world.1 tutum/hello-world:latest swarm-master-D50F2361-0 En ejecución En ejecución 38 segundos agox5tvcuglwzd0 hello-world.2 tutum/hello-world:latest swarm-master-D50F2361-0 En ejecución En ejecución hace 38 segundos

Listado de contenedores Docker para el servicio Docker

Los contenedores de Docker para un servicio de Docker en un host de Docker en Swarm se pueden enumerar con docker ps comando.

[email protected]:~$ docker psID DEL CONTENEDOR IMAGEN COMANDO CREADO ESTADO PUERTOS NOMBRESb6b069102300 tutum/hello-world:latest "/bin/sh -c 'php-f..." Hace 6 minutos Hasta 6 minutos 80/ tcp hello-world.2.x5tvcuglwzd05olktbf3tpfqe62e26d4bc0ff tutum/hello-world:latest "/bin/sh -c 'php-f..." Hace 6 minutos Hasta 6 minutos 80/tcp hello-world.1.yok48ja4o835nc7cog8hhjlr7db4827da350b alpine:latest " pingdocker.com" hace 7 minutos Hasta 7 minutos helloworld.2.iqz0bqkldxs2sg8ny50je7e7y92dab9f7ae97 alpine:latest "pingdocker.com" Hace 7 minutos Hasta 7 minutos helloworld.1.0mal82mskbgecbcwh3op18nrr

Contenedores Docker para hello-world y holamundo los servicios se enumeran.

Exploración de registros generados por un contenedor de servicios de Docker

Los registros generados, si los hay, en un contenedor de Docker para un servicio de Docker se pueden enumerar con los registros de Docker dominio. Como ejemplo, obtenga el ID del contenedor para un servicio basado en imágenes alpinas y enumere los registros:

[email protected]:~$ docker registra db4827da350bPING docker.com (34.201.187.190):56 bytes de datos

Como indica el resultado, se hace ping al dominio docker.com y se intercambian 56 bytes de datos.

Conclusión

En este artículo, analizamos el uso de Docker en un clúster de Docker Swarm en Azure Container Service. Utilizamos contenedores Docker independientes y servicios Docker en Swarm. Un clúster de Swarm en ACS expone un extremo de Swarm para ejecutar un contenedor Docker independiente. Cuando los contenedores de Docker se ejecutan en el extremo de Swarm, Swarm ejecuta contenedores de Docker independientes en los agentes de Swarm. El modo Swarm no está habilitado de forma predeterminada y debe inicializarse en una VM maestra de Swarm.