Header Ads Widget

Ticker

6/recent/ticker-posts

Contenedores múltiples de Docker

 

Una vez que aprenda cómo poner un contenedor en funcionamiento en Docker, puede pasar a ejecutar y administrar varios contenedores en el mismo motor de Docker para su entorno. Al igual que con cualquier otra cosa, practicar la instalación de contenedores, interactuar con ellos y derribarlos una vez hecho lo hará sentirse cómodo con el proceso y el flujo de trabajo para administrar contenedores. En este tutorial, practicaremos configurando 3 contenedores individuales. Uno será MySQL, otro Nginx y el último Apache.


Contenedor MySQL

Primero, podemos hacer girar un contenedor MySQL en Docker.

Docker container run -d -p 3306: 3306 --name db -e MYSQL_RANDOM_ROOT_PASSWORD = yes mysql
No se puede encontrar la imagen 'mysql: latest' localmente
último: Extrayendo de la biblioteca / mysql
d121f8d1c412: Extracción completa
f3cebc0b4691: Extracción completa
1862755a0b37: Tire completo
489b44f3dbb4: Extracción completa
690874f836db: Extracción completa
baa8be383ffb: Pull complete
55356608b4ac: Tire completo
dd35ceccb6eb: extracción completa
162d8291095c: Tire completo
5e500ef7181b: extracción completa
af7528e958b6: Extracción completa
Resumen: sha256: e1bfe11693ed2052cb3b4e5fa356c65381129e87e38551c6cd6ec532ebe0e808
1309c4b670f02dfffe5ef3ae0c405867fdad81b61bb3a60f08018273d035830b

Contenedor Apache

Ahora que MySQL está en funcionamiento, comencemos el servidor web Apache.

Docker container run -d -p 8080: 80 --name servidor web httpd
No se puede encontrar la imagen 'httpd: latest' localmente más reciente: extrayendo de la biblioteca / httpd d121f8d1c412: ya existe 
9cd35c2006cf: Tire completo 
b6b9dec6e0f8: Extracción completa
fc3f9b55fcc2: Extracción completa
802357647f64: extracción completa
Resumen: sha256: 5ce7c20e45b407607f30b8f8ba435671c2ff80440d12645527be670eb8ce1961
Estado: imagen más reciente descargada para httpd: última
d2659ccf4b39ad461b0352af1b096f5835726c8042f32916febd948e0c819482

Contenedor Nginx

El último contenedor que lanzaremos es un contenedor Nginx .


contenedor docker ejecutar -d -p 80:80 --nombre proxy nginx
No se puede encontrar la imagen 'nginx: última' localmente
último: Extrayendo de la biblioteca / nginx
d121f8d1c412: Ya existe
ebd81fc8c071: extracción completa
655316c160af: tirar completo
d15953c0e0f8: Extracción completa
2ee525c5c3cc: Tire completo
Resumen: sha256: c628b67d21744fce822d22fdcc0389f6bd763daac23a6b77147d0712ea7102d0
Estado: imagen más reciente descargada para nginx: última
5f65da618b6aae8e9cd223f7bba046c2efaf9573753fd9c40cdabca12593adfe

Lista de contenedores

Ok, todos esos pasos anteriores fueron bien. Veamos los contenedores en ejecución con el comando docker container ls .

contenedor docker ls
ID DE CONTENEDOR COMANDO DE IMAGEN ESTADO CREADO NOMBRES DE PUERTOS
5f65da618b6a nginx "/docker-entrypoint.…" Hace 11 segundos Hasta 10 segundos 0.0.0.0:80->80/tcp proxy
d2659ccf4b39 httpd "httpd-foreground" hace 27 segundos Hasta 26 segundos 0.0.0.0:8080->80/tcp servidor web
1309c4b670f0 mysql "docker-entrypoint.s…" Hace 40 segundos Hasta 37 segundos 0.0.0.0:3306->3306/tcp, 33060 / tcp db

Puerto de prueba 80

Podemos probar el puerto 80 en el que se ejecuta nuestro contenedor Nginx usando tanto curl en la línea de comando como en un navegador web. ¡Luciendo bien!

curl http: // localhost

Código de estado: 200
Estado Descripción: OK
Contenido: <! DOCTYPE html>
                    <html>
                    <cabeza>
                    <title> ¡Bienvenido a nginx! </title>
                    <estilo>
                        cuerpo {
                            margen: 0 automático;
                            familia de fuentes: Tahoma, Verdana, Arial, sans-serif;
                        } </style> <... RawContent: HTTP / 1.1 200 OK Conexión: mantener vivo
                    Rangos de aceptación: bytes
                    Longitud del contenido: 612
                    Tipo de contenido: texto / html
                    Fecha: miércoles, 30 de septiembre de 2020 20:58:08 GMT
                    ETag: "5f32b03b-264"
                    Última modificación: martes, 11 de agosto de 2020 ...
Formularios: {}
Encabezados: {[Connection, keep-alive], [Accept-Ranges, bytes], [Content-Length, 612], [Content-Type, text / html] ...}
Imágenes: {}
InputFields: {}
Enlaces: {@ {innerHTML = nginx.org; innerText = nginx.org; externalHTML = <A href="http://nginx.org/"> nginx.org </A>; externalText = nginx.org; tagName = A;
                    href = http: //nginx.org/}, @ {innerHTML = nginx.com; innerText = nginx.com; externalHTML = <A href="http://nginx.com/"> nginx.com </A>;
                    externalText = nginx.com; tagName = A; href = http: //nginx.com/}}
ParsedHtml: System .__ ComObject
RawContentLength: 612

nginx se ejecuta como contenedor


Puerto de prueba 8080

La prueba del puerto 8080 para el servidor Apache sigue el mismo proceso, ya sea con curl o con el navegador. Apache responde con un simple "¡Funciona!"

curl http: // localhost: 8080

Código de estado: 200
Estado Descripción: OK
Contenido: <html><body> <h1> ¡Funciona! </h1> </body> </html>

RawContent: HTTP / 1.1 200 OK
                    Keep-Alive: tiempo de espera = 5, máximo = 100
                    Conexión: Keep-Alive
                    Rangos de aceptación: bytes
                    Longitud del contenido: 45
                    Tipo de contenido: texto / html
                    Fecha: miércoles, 30 de septiembre de 2020 21:03:11 GMT
                    ETag: "2d-432a5e4a73a80 ...
Formularios: {}
Encabezados: {[Keep-Alive, timeout = 5, max = 100], [Connection, Keep-Alive], [Accept-Ranges, bytes], [Content-Length, 45] ...}
Imágenes: {}
InputFields: {}
Enlaces : {}
ParsedHtml: System .__ ComObject
Contenido crudo Longitud: 45

apache ejecutándose como contenedor


Detener todos los contenedores

Queremos limpiar nuestro entorno Docker, así que detengamos todos los contenedores en ejecución por su nombre.

Docker container stop db webserver proxy
db
Servidor web
apoderado

Confirmar que los contenedores están salidos

El estado se muestra como salido para que sepamos que los contenedores no se están ejecutando.

contenedor docker ls -a
ID DE CONTENEDOR COMANDO DE IMAGEN ESTADO CREADO NOMBRES DE PUERTOS
5f65da618b6a nginx "/docker-entrypoint.…" Hace 11 minutos Salió (0) Hace 59 segundos proxy
d2659ccf4b39 httpd "httpd-foreground" hace 12 minutos Salió (0) hace 58 segundos servidor web
1309c4b670f0 mysql "docker-entrypoint.s…" hace 12 minutos Salió (0) hace 58 segundos db

Quitar los contenedores

No es necesario que guardes estos contenedores si hemos terminado con el ejercicio, así que sigamos adelante y retírelos.

contenedor docker rm db servidor web proxy
db
Servidor web
apoderado

Los contenedores se han ido

Confirmando que los continaers tanto corriendo como no corriendo se han ido.

docker container ls -a 
ID DE CONTENEDOR IMAGEN COMANDO ESTADO CREADO PUERTOS NOMBRES

Eliminar imágenes

Mientras limpiamos las cosas, también podemos eliminar las imágenes que usamos para alimentar los contenedores.

imagen acoplable ls
TAMAÑO CREADO DE ID DE IMAGEN DE ETIQUETA DE REPOSITORIO
httpd latest 417af7dc28bc Hace 2 semanas 138MB
nginx último 7e4d58f0e5f3 Hace 2 semanas 133MB
mysql último e1d7dc9731da Hace 2 semanas 544MB


imagen de docker rm httpd nginx mysql
Eliminado: sha256: ba0c2ff8d3620c0910832424efef02787214013b1c5b1d9dc9d87d638e2ceb71
Eliminado: sha256: db9c97c9ad968b91c4499e5cca7435a155bfef6f5fb9c6cd5543481e47ff4f71
Eliminado: sha256: 8cdd4c6014e71c2f6ff38dadcaec2003b955230d38831e85db5a44fa38320e6b

Las imágenes se han ido

Por último, buscamos imágenes en nuestro entorno Docker y, efectivamente, no hay ninguna. Tenemos un ambiente agradable y limpio para trabajar una vez más.

docker image ls 
ETIQUETA DE REPOSITORIO ID DE IMAGEN TAMAÑO CREADO

Resumen

Podemos ver que lanzar más de un contenedor no es tan difícil. En los ejemplos anteriores, pudimos poner en funcionamiento varios contenedores, probar sus servicios y luego detenerlos y eliminarlos de Docker. Algunas conclusiones incluyen:

  • docker container ls -a y docker ps -a hacen lo mismo. Ambos muestran todos los contenedores, ya sean en ejecución o detenidos.
  • Al agregar -d a docker run, le indica al contenedor que se ejecute en modo separado. En otras palabras, se ejecuta en segundo plano. No se muestran registros en el terminal host cuando se configura de esta manera.
  • Docker container run -p 80:80 -d nginx y docker container run -p 8080: 80 -d nginx activará dos contenedores Nginx. No hay ningún conflicto aunque ambos estén escuchando en el puerto 80 del contenedor. Los números de la izquierda que son el puerto de host son diferentes (80 vs 8080).

  • Publicar un comentario

    0 Comentarios