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
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
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:
0 Comentarios
Dejanos tu comentario para seguir mejorando!