{"id":17,"date":"2024-05-27T13:32:23","date_gmt":"2024-05-27T11:32:23","guid":{"rendered":"https:\/\/cienciaytecnology.com\/wordpress\/?p=17"},"modified":"2026-04-26T23:32:51","modified_gmt":"2026-04-26T21:32:51","slug":"docker","status":"publish","type":"post","link":"https:\/\/cienciaytecnology.com\/wordpress\/docker\/","title":{"rendered":"Docker y Docker-compose"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">La idea de Docker, es la de crear aplicaciones\/servicios que sean independientes y portables. Esto es, no importa que sistema operativo utilices o con que hardware cuentas, si puedes instalar docker, entonces podras correr tus contenedores en \u00e9l. Entre las ventajas de usar docker, se encuentra la de olvidarte de instalar dependencias (ejemplo nodejs, java, python, ruby, etc) dentro de tu host o servidor y sin utilizar m\u00e1quinas virtuales.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker posibilita ir de tu maquina local a producci\u00f3n, con tu aplicaci\u00f3 lista. Ya no es necesario instalar en cada servidor dependencias o depender del sistema operativo. Solo basta con tener Docker instalado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Contenedor Docker<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un contenedor Docker es un paquete que contiene todos los requisitos previos necesarios para ejecutar una aplicaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los contenedores est\u00e1n dise\u00f1ados para ser altamente port\u00e1tiles, lo que significa que pueden trasladarse f\u00e1cilmente de un entorno a otro, como del port\u00e1til de un desarrollador a un entorno de pruebas o de un entorno de pruebas a un entorno de producci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Imagen Docker<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una imagen Docker es una plantilla preconfigurada que especifica lo que debe incluirse en un contenedor Docker. Normalmente, las im\u00e1genes se descargan de sitios web como\u00a0<a href=\"https:\/\/hub.docker.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Docker Hub<\/a>. Sin embargo, tambi\u00e9n es posible crear una imagen personalizada con la ayuda de Dockerfile.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Registro Docker<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El registro Docker es un repositorio central que almacena y gestiona im\u00e1genes Docker. Es un sistema basado en servidor que permite a los usuarios almacenar y compartir im\u00e1genes Docker con otros, facilitando la distribuci\u00f3n y despliegue de aplicaciones. El registro Docker m\u00e1s notable es Docker Hub.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Comandos Docker<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora que ya sabes c\u00f3mo funciona Docker, veamos algunos de los ejemplos de comandos Docker m\u00e1s populares.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Comandos de construcci\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker utiliza el comando build para construir im\u00e1genes a partir de un archivo Docker. Algunos de los comandos m\u00e1s comunes son:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Comando<\/strong><\/td><td><strong>Explicaci\u00f3n<\/strong><\/td><\/tr><tr><td>docker build<\/td><td>Construye una imagen a partir de un Dockerfile en el directorio actual<\/td><\/tr><tr><td>docker build https:\/\/github.com\/docker<br>\/rootfs.git#contenedor:docker<\/td><td>Construye una imagen desde un repositorio GIT remoto<\/td><\/tr><tr><td>docker build -t imagename\/tag<\/td><td>Construye y etiqueta una imagen para facilitar su seguimiento<\/td><\/tr><tr><td>docker build https:\/\/yourserver\/file.tar.gz<\/td><td>Crea una imagen a partir de un archivo tar remoto<\/td><\/tr><tr><td>docker build -t imagen:1.0-&lt;&lt;EOFFROM busyboxRUN echo \u00abhola mundo \u00abEOF<\/td><td>Construye una imagen mediante un archivo Dockerfile que se pasa a trav\u00e9s de STDIN<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Comandos de limpieza<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para mantener limpio tu sistema y ahorrar espacio en disco, es una gran idea limpiar las im\u00e1genes, contenedores y vol\u00famenes que no se utilicen. Consulta los siguientes comandos para m\u00e1s detalles:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Comando<\/strong><\/td><td><strong>Explicaci\u00f3n<\/strong><\/td><\/tr><tr><td>docker image prune<\/td><td>Borra una imagen no utilizada<\/td><\/tr><tr><td>docker image prune -a<\/td><td>Borra todas las im\u00e1genes que no est\u00e9n siendo utilizadas por contenedores<\/td><\/tr><tr><td>docker system prune<\/td><td>Elimina todos los contenedores detenidos, todas las redes no utilizadas por los contenedores, todas las im\u00e1genes colgadas y toda la cach\u00e9 de construcci\u00f3n.<\/td><\/tr><tr><td>docker image rm image<\/td><td>Elimina una imagen<\/td><\/tr><tr><td>docker rm container<\/td><td>Elimina un contenedor en ejecuci\u00f3n<\/td><\/tr><tr><td>docker kill $ (docker ps -q)<\/td><td>Detiene todos los contenedores en ejecuci\u00f3n<\/td><\/tr><tr><td>docker swarm leave<\/td><td>Deja un enjambre<\/td><\/tr><tr><td>docker stack rm stackname<\/td><td>Elimina un enjambre<\/td><\/tr><tr><td>docker volume rm $(docker volume ls -f dangling=true -q)<\/td><td>Elimina todos los vol\u00famenes colgados<\/td><\/tr><tr><td>docker rm $(docker ps -a -q)<\/td><td>Elimina todos los contenedores parados<\/td><\/tr><tr><td>docker kill $ (docker ps -q)<\/td><td>Detiene todos los contenedores en ejecuci\u00f3n<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Comandos de interacci\u00f3n con el contenedor<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Interact\u00faa con tu contenedor Docker con los siguientes comandos comunes:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Comando<\/strong><\/td><td><strong>Explicaci\u00f3n<\/strong><\/td><\/tr><tr><td>docker start container<\/td><td><a href=\"https:\/\/www.hostinger.es\/tutoriales\/como-crear-contenedor-docker\">Inicia un nuevo contenedor<\/a><\/td><\/tr><tr><td>docker stop container<\/td><td>Detiene un contenedor<\/td><\/tr><tr><td>docker pause container<\/td><td>Pausa un contenedor<\/td><\/tr><tr><td>docker unpause container<\/td><td>Despausa un contenedor<\/td><\/tr><tr><td>docker restart container<\/td><td>Reinicia un contenedor<\/td><\/tr><tr><td>docker wait container<\/td><td>Bloquea un contenedor<\/td><\/tr><tr><td>docker export container<\/td><td>Exporta el contenido del contenedor a un archivo tar<\/td><\/tr><tr><td>docker attach container<\/td><td>Se une a un contenedor en ejecuci\u00f3n<\/td><\/tr><tr><td>docker wait container<\/td><td>Espera a que se termine el contenedor y muestra el c\u00f3digo de salida<\/td><\/tr><tr><td>docker commit -m \u201ccommit message\u201d -a \u201cauthor\u201d container username\/image_name: tag<\/td><td>Guarda un contenedor en ejecuci\u00f3n como una imagen<\/td><\/tr><tr><td>docker logs -ft container<\/td><td>Sigue los registros de contenedores<\/td><\/tr><tr><td>docker exec -ti container script.sh<\/td><td>Ejecuta un comando en un contenedor<\/td><\/tr><tr><td>docker commit container image<\/td><td>Crea una nueva imagen a partir de un contenedor<\/td><\/tr><tr><td>docker create image<\/td><td>Crea un nuevo contenedor a partir de una imagen<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Comandos de inspecci\u00f3n de contenedores<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A veces, necesitas inspeccionar tus contenedores para garantizar la calidad o solucionar problemas. Estos comandos te ayudan a tener una visi\u00f3n general de lo que est\u00e1n haciendo los distintos contenedores:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Comando<\/strong><\/td><td><strong>Explicaci\u00f3n<\/strong><\/td><\/tr><tr><td>docker ps<\/td><td>Lista todos los contenedores en ejecuci\u00f3n<\/td><\/tr><tr><td>docker -ps -a<\/td><td>Lista todos los contenedores<\/td><\/tr><tr><td>docker diff container<\/td><td>Inspecciona los cambios en los directorios y archivos del sistema de archivos del contenedor<\/td><\/tr><tr><td>docker top container<\/td><td>Muestra todos los procesos en ejecuci\u00f3n de un contenedor existente<\/td><\/tr><tr><td>docker inspect container<\/td><td>Muestra informaci\u00f3n de bajo nivel sobre un contenedor<\/td><\/tr><tr><td>docker logs container<\/td><td>Re\u00fane los registros de un contenedor<\/td><\/tr><tr><td>docker stats container<\/td><td>Muestra las estad\u00edsticas de uso de los recursos del contenedor<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Comandos de gesti\u00f3n de im\u00e1genes<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algunos de los comandos de gesti\u00f3n de im\u00e1genes m\u00e1s comunes son:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Comando<\/strong><\/td><td><strong>Explicaci\u00f3n<\/strong><\/td><\/tr><tr><td>docker image ls<\/td><td>Lista im\u00e1genes<\/td><\/tr><tr><td>docker image rm mysql<\/td><td>Elimina una imagen<\/td><\/tr><tr><td>docker tag image tag<\/td><td>Etiqueta una imagen<\/td><\/tr><tr><td>docker history image<\/td><td>Muestra el historial de im\u00e1genes<\/td><\/tr><tr><td>docker inspect image<\/td><td>Muestra informaci\u00f3n de bajo nivel sobre una imagen<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Comandos de ejecuci\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker utiliza el comando ejecutar para crear contenedores a partir de las im\u00e1genes proporcionadas. La sintaxis por defecto de este comando es la siguiente:docker run (options) image (command) (arg&#8230;)<br>docker run (options) image (command) (arg&#8230;)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run (options) image (command) (arg...)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s de la sintaxis por defecto, utiliza una de las siguientes flags:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Flag<\/strong><\/td><td><strong>Explicaci\u00f3n<\/strong><\/td><\/tr><tr><td>\u2013detach , -d<\/td><td>Ejecuta un contenedor en segundo plano e imprime el ID del contenedor<\/td><\/tr><tr><td>\u2013env , -e<\/td><td>Establece variables de entorno<\/td><\/tr><tr><td>\u2013hostname , -h<\/td><td>Establece un nombre de host a un contenedor<\/td><\/tr><tr><td>\u2013label , -l<\/td><td>Crea una etiqueta de metadatos para un contenedor<\/td><\/tr><tr><td>\u2013name<\/td><td>Asigna un nombre a un contenedor<\/td><\/tr><tr><td>\u2013network<\/td><td>Conecta un contenedor a una red<\/td><\/tr><tr><td>\u2013rm<\/td><td>Retira el contenedor cuando se detenga<\/td><\/tr><tr><td>\u2013read-only<\/td><td>Establece el sistema de archivos del contenedor como s\u00f3lo lectura<\/td><\/tr><tr><td>\u2013workdir , -w<\/td><td>Establece un directorio de trabajo en un contenedor<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Comandos de registro<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si necesitas interactuar con Docker Hub, utiliza los siguientes comandos:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Comando<\/strong><\/td><td><strong>Explicaci\u00f3n<\/strong><\/td><\/tr><tr><td>docker login<\/td><td>Accede a un registro<\/td><\/tr><tr><td>docker logout<\/td><td>Sale de un registro<\/td><\/tr><tr><td>docker pull mysql<\/td><td>Extrae una imagen de un registro<\/td><\/tr><tr><td>docker push repo\/ rhel-httpd:latest<\/td><td>Env\u00eda una imagen a un registro<\/td><\/tr><tr><td>docker search term<\/td><td>Busca en Docker Hub im\u00e1genes con el t\u00e9rmino especificado<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Comandos de servicio<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gestiona todos los servicios con estos comandos b\u00e1sicos de Docker:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Comando<\/strong><\/td><td><strong>Explicaci\u00f3n<\/strong><\/td><\/tr><tr><td>docker service ls<\/td><td>Lista todos los servicios que se ejecutan en un enjambre<\/td><\/tr><tr><td>docker stack services stackname<\/td><td>Lista todos los servicios en ejecuci\u00f3n<\/td><\/tr><tr><td>docker service ps servicename<\/td><td>Lista las tareas de un servicio<\/td><\/tr><tr><td>docker service update servicename<\/td><td>Actualiza un servicio<\/td><\/tr><tr><td>docker service create image<\/td><td>Crea un nuevo servicio<\/td><\/tr><tr><td>docker service scale servicename=10<\/td><td>Escala uno o m\u00e1s servicios replicados<\/td><\/tr><tr><td>docker service logs stackname servicename<\/td><td>Lista todos los registros de servicio<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Comandos de red<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si necesitas interactuar con la red Docker, utiliza uno de los siguientes comandos:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Comando<\/strong><\/td><td><strong>Explicaci\u00f3n<\/strong><\/td><\/tr><tr><td>docker network create networkname<\/td><td>Crea una nueva red<\/td><\/tr><tr><td>docker network rm networkname<\/td><td>Elimina una red especificada<\/td><\/tr><tr><td>docker network ls<\/td><td>Lista todas las redes<\/td><\/tr><tr><td>docker network connect networkname container<\/td><td>Conecta un contenedor a una red<\/td><\/tr><tr><td>docker network disconnect networkname container<\/td><td>Desconecta un contenedor de una red<\/td><\/tr><tr><td>docker network inspect networkname<\/td><td>Muestra informaci\u00f3n detallada sobre una red<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">La diferencia entre los comandos&nbsp;<code>docker create<\/code>&nbsp;y&nbsp;<code>docker run<\/code>&nbsp;en Docker puede ser confusa al principio, pero aqu\u00ed est\u00e1 la explicaci\u00f3n:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong><code>docker create<\/code><\/strong>: Este comando crea un nuevo contenedor a partir de una imagen, pero\u00a0<strong>no lo ejecuta<\/strong>. En otras palabras, crea un contenedor a partir de una imagen, pero no lo inicia. Puedes pensar en ello como preparar un contenedor para su uso, pero sin ponerlo en funcionamiento. Por ejemplo:<code>docker create --name mi-contenedor mi-imagen <\/code>Esto crea un contenedor llamado \u201cmi-contenedor\u201d basado en la imagen \u201cmi-imagen\u201d, pero no lo inicia.<\/li>\n\n\n\n<li><strong><code>docker run<\/code><\/strong>: Este comando combina los pasos de creaci\u00f3n y ejecuci\u00f3n. Crea el contenedor a partir de la imagen especificada y\u00a0<strong>luego lo inicia<\/strong>. Es decir, es como si ejecut\u00e1ramos\u00a0<code>docker create<\/code>\u00a0seguido de\u00a0<code>docker start<\/code>. Por ejemplo:<code>docker run --name mi-contenedor mi-imagen <\/code>Esto crea y ejecuta un contenedor llamado \u201cmi-contenedor\u201d basado en la imagen \u201cmi-imagen\u201d.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">La diferencia entre los comandos&nbsp;<code>docker stop<\/code>&nbsp;y&nbsp;<code>docker kill<\/code>&nbsp;en Docker radica en c\u00f3mo detienen un contenedor:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong><code>docker stop<\/code><\/strong>: Este comando detiene el contenedor de manera\u00a0<strong>graceful<\/strong>\u00a0(graciosa) y proporciona una salida segura. Cuando ejecutas\u00a0<code>docker stop<\/code>, Docker env\u00eda la se\u00f1al\u00a0<strong>SIGTERM<\/strong>\u00a0al proceso dentro del contenedor. Esta se\u00f1al permite que el proceso se termine de manera ordenada. Si el proceso no se detiene dentro del tiempo especificado, Docker emite un comando de\u00a0<strong>kill<\/strong>\u00a0impl\u00edcitamente y de inmediato.\u00a0<a href=\"https:\/\/www.baeldung.com\/ops\/docker-stop-vs-kill\" target=\"_blank\" rel=\"noreferrer noopener\">En resumen,\u00a0<code>docker stop<\/code>\u00a0da al proceso la oportunidad de cerrarse correctamente<\/a><a href=\"https:\/\/www.baeldung.com\/ops\/docker-stop-vs-kill\" target=\"_blank\" rel=\"noreferrer noopener\"><sup>1<\/sup><\/a><a href=\"https:\/\/stackoverflow.com\/questions\/28339469\/which-one-should-i-use-docker-kill-or-docker-stop\" target=\"_blank\" rel=\"noreferrer noopener\"><sup>2<\/sup><\/a>.<\/li>\n\n\n\n<li><strong><code>docker kill<\/code><\/strong>: Este comando env\u00eda la se\u00f1al\u00a0<strong>SIGKILL<\/strong>\u00a0al proceso principal dentro del contenedor. A diferencia de SIGTERM, SIGKILL no permite que el proceso realice ninguna acci\u00f3n antes de ser detenido. Es una forma m\u00e1s dr\u00e1stica de detener el contenedor y se utiliza cuando un contenedor est\u00e1 bloqueado o no responde.\u00a0<a href=\"https:\/\/www.baeldung.com\/ops\/docker-stop-vs-kill\" target=\"_blank\" rel=\"noreferrer noopener\">Sin embargo, ten en cuenta que usar\u00a0<code>docker kill<\/code>\u00a0puede dejar procesos \u201czombie\u201d si el proceso hijo no puede notificar a su proceso padre que recibi\u00f3 la se\u00f1al de kill<\/a><a href=\"https:\/\/www.baeldung.com\/ops\/docker-stop-vs-kill\" target=\"_blank\" rel=\"noreferrer noopener\"><sup>1<\/sup><\/a><a href=\"https:\/\/stackoverflow.com\/questions\/28339469\/which-one-should-i-use-docker-kill-or-docker-stop\" target=\"_blank\" rel=\"noreferrer noopener\"><sup>2<\/sup><\/a>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">En resumen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>docker stop<\/code>\u00a0detiene el contenedor de manera ordenada.<\/li>\n\n\n\n<li><code>docker kill<\/code>\u00a0detiene el contenedor de manera inmediata y dr\u00e1stica.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">El comando&nbsp;<code>docker build<\/code>&nbsp;se utiliza para&nbsp;<strong>construir im\u00e1genes de Docker<\/strong>&nbsp;a partir de un archivo llamado&nbsp;<strong>Dockerfile<\/strong>&nbsp;y un contexto. Aqu\u00ed est\u00e1 la explicaci\u00f3n detallada:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Dockerfile<\/strong>: Un Dockerfile es un archivo de texto que contiene una serie de instrucciones para construir una imagen de Docker. Estas instrucciones incluyen cosas como copiar archivos, instalar paquetes, configurar variables de entorno y m\u00e1s.\u00a0<a href=\"https:\/\/docs.docker.com\/reference\/cli\/docker\/image\/build\/\" target=\"_blank\" rel=\"noreferrer noopener\">El Dockerfile debe estar ubicado en el mismo directorio o en un directorio accesible desde el contexto<\/a><a href=\"https:\/\/docs.docker.com\/reference\/cli\/docker\/image\/build\/\" target=\"_blank\" rel=\"noreferrer noopener\"><sup>1<\/sup><\/a>.<\/li>\n\n\n\n<li><strong>Contexto<\/strong>: El contexto es el conjunto de archivos y directorios que Docker utiliza para construir la imagen. Puede ser un directorio local en tu m\u00e1quina o una URL remota.\u00a0<a href=\"https:\/\/docs.docker.com\/reference\/cli\/docker\/image\/build\/\" target=\"_blank\" rel=\"noreferrer noopener\">El contexto incluye todos los archivos necesarios para construir la imagen, como el Dockerfile, scripts, archivos de configuraci\u00f3n, etc.<\/a><a href=\"https:\/\/docs.docker.com\/reference\/cli\/docker\/image\/build\/\" target=\"_blank\" rel=\"noreferrer noopener\"><sup>1<\/sup><\/a>.<\/li>\n\n\n\n<li><strong>Sintaxis del comando<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Para construir una imagen desde el Dockerfile en el directorio actual:<code>docker build .<\/code><\/li>\n\n\n\n<li>Para construir una imagen desde un Dockerfile en una URL espec\u00edfica:<code>docker build github.com\/creack\/docker-firefox<\/code><\/li>\n\n\n\n<li>Para etiquetar la imagen construida:<code>docker build --tag nombre:etiqueta<\/code><\/li>\n\n\n\n<li>Tambi\u00e9n puedes proporcionar\u00a0<strong>argumentos de compilaci\u00f3n<\/strong>\u00a0utilizando la opci\u00f3n\u00a0<code>--build-arg<\/code>.\u00a0<a href=\"https:\/\/docs.docker.com\/reference\/cli\/docker\/image\/build\/\">Por ejemplo:<code>docker build --tag mi-imagen --build-arg clave1=valor1 --build-arg clave2=valor2 .<\/code><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Directivas en un Dockerfile<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un&nbsp;<strong>Dockerfile<\/strong>&nbsp;es un archivo de texto que contiene instrucciones para construir una imagen de Docker.&nbsp;<a href=\"https:\/\/jarroba.com\/dockerfile-directivas-y-dockerizar-proyectos\/\" target=\"_blank\" rel=\"noreferrer noopener\">Estas instrucciones especifican c\u00f3mo se debe ensamblar la imagen, qu\u00e9 sistema operativo base usar, las dependencias de la aplicaci\u00f3n y m\u00e1s<\/a><a href=\"https:\/\/jarroba.com\/dockerfile-directivas-y-dockerizar-proyectos\/\" target=\"_blank\" rel=\"noreferrer noopener\"><sup>1<\/sup><\/a>. Algunas de las directivas m\u00e1s comunes en un Dockerfile son:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong><code>FROM<\/code><\/strong>: Esta directiva especifica la imagen base desde la cual construir. Por ejemplo:<code>FROM ubuntu:20.04<\/code><\/li>\n\n\n\n<li><strong><code>RUN<\/code><\/strong>: Ejecuta comandos en el contenedor durante la construcci\u00f3n de la imagen. Por ejemplo:<code>RUN apt-get update &amp;&amp; apt-get install -y python3<\/code><\/li>\n\n\n\n<li><strong><code>COPY<\/code><\/strong>\u00a0y\u00a0<strong><code>ADD<\/code><\/strong>: Copian archivos o directorios desde el host al contenedor. Por ejemplo:<code>COPY app.py \/app\/<\/code><\/li>\n\n\n\n<li><strong><code>WORKDIR<\/code><\/strong>: Establece el directorio de trabajo dentro del contenedor. Por ejemplo:<code>WORKDIR \/app<\/code><\/li>\n\n\n\n<li><strong><code>EXPOSE<\/code><\/strong>: Especifica los puertos en los que el contenedor escuchar\u00e1. Por ejemplo:<code>EXPOSE 8080<\/code><\/li>\n\n\n\n<li><strong><code>CMD<\/code><\/strong>\u00a0y\u00a0<strong><code>ENTRYPOINT<\/code><\/strong>: Definen el comando que se ejecutar\u00e1 cuando se inicie el contenedor.\u00a0<a href=\"https:\/\/jarroba.com\/dockerfile-directivas-y-dockerizar-proyectos\/\">La diferencia es que\u00a0<code>CMD<\/code>\u00a0puede ser sobrescrito al ejecutar el contenedor, mientras que\u00a0<code>ENTRYPOINT<\/code>\u00a0no<\/a><a href=\"https:\/\/bing.com\/search?q=directivas+en+Dockerfile\" target=\"_blank\" rel=\"noreferrer noopener\"><sup>2<\/sup><\/a>.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Uso de Vol\u00famenes en Docker<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Los vol\u00famenes en Docker permiten persistir datos entre contenedores o guardar datos de un contenedor de manera permanente. Aqu\u00ed est\u00e1n los pasos b\u00e1sicos para trabajar con vol\u00famenes:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Crear un volumen<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Utiliza el comando\u00a0<code>docker volume create<\/code>\u00a0para crear un volumen con un nombre espec\u00edfico. Por ejemplo:<code>docker volume create mi-volumen<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Montar un volumen en un contenedor<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Al ejecutar un contenedor, utiliza la opci\u00f3n\u00a0<code>-v<\/code>\u00a0o\u00a0<code>--mount<\/code>\u00a0para especificar el volumen que deseas montar y la ruta dentro del contenedor donde se almacenar\u00e1n los datos. Por ejemplo:<code>docker run -v mi-volumen:\/ruta-en-el-contenedor mi-imagen<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Compartir vol\u00famenes entre contenedores<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Puedes montar el mismo volumen en varios contenedores utilizando el mismo nombre de volumen. Esto permite compartir datos entre ellos.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Verificar y gestionar vol\u00famenes<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Lista los vol\u00famenes con\u00a0<code>docker volume ls<\/code>.<\/li>\n\n\n\n<li>Inspecciona un volumen espec\u00edfico con\u00a0<code>docker volume inspect<\/code>.<\/li>\n\n\n\n<li>Elimina un volumen con\u00a0<code>docker volume rm<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Recuerda que los vol\u00famenes te permiten persistir y compartir datos entre contenedores y el host subyacente.&nbsp;<a href=\"https:\/\/www.ionos.es\/digitalguide\/servidores\/know-how\/docker-container-volumes\/\" target=\"_blank\" rel=\"noreferrer noopener\">Son una excelente soluci\u00f3n para mantener datos incluso despu\u00e9s de eliminar un contenedor<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Docker Compose<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Docker Compose es una herramienta que te permite definir y ejecutar aplicaciones Docker con m\u00faltiples contenedores. Esto facilita la implementaci\u00f3n y gesti\u00f3n de entornos complejos. A continuaci\u00f3n, te mostrar\u00e9 c\u00f3mo instalar Docker Compose y c\u00f3mo empezar a usarlo:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Instalaci\u00f3n de Docker Compose en Ubuntu<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Primero, aseg\u00farate de tener\u00a0<strong>Docker instalado en tu servidor o equipo local<\/strong>. Si a\u00fan no lo has hecho, sigue los\u00a0<strong>Pasos 1 y 2<\/strong>\u00a0de\u00a0<a is=\"cib-link\" href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-install-and-use-docker-compose-on-ubuntu-20-04-es\" target=\"_blank\" rel=\"noreferrer noopener\">C\u00f3mo instalar y usar Docker en Ubuntu 20.04<\/a>.<\/li>\n\n\n\n<li>Luego, instala Docker Compose siguiendo estos pasos:\n<ul class=\"wp-block-list\">\n<li>Abre una terminal en tu servidor Ubuntu.<\/li>\n\n\n\n<li>Ejecuta el siguiente comando para descargar la versi\u00f3n estable m\u00e1s reciente de Docker Compose:<code>sudo curl -L \"https:\/\/github.com\/docker\/compose\/releases\/download\/1.26.0\/docker-compose-$(uname -s)-$(uname -m)\" -o \/usr\/local\/bin\/docker-compose<\/code><\/li>\n\n\n\n<li>Establece los permisos correctos para que el comando\u00a0<code>docker-compose<\/code>\u00a0sea ejecutable:<code>sudo chmod +x \/usr\/local\/bin\/docker-compose<\/code><\/li>\n\n\n\n<li>Verifica que la instalaci\u00f3n se realiz\u00f3 correctamente:<code>docker-compose --version<\/code><\/li>\n\n\n\n<li>Deber\u00edas ver un resultado similar a esto:<code>docker-compose version 1.26.0, build 8a1c60f6<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u00a1Listo! Docker Compose est\u00e1 instalado en tu sistema.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Configuraci\u00f3n de un archivo\u00a0<code>docker-compose.yml<\/code><\/strong>:\n<ul class=\"wp-block-list\">\n<li>Ahora puedes crear un archivo\u00a0<code>docker-compose.yml<\/code>\u00a0para definir tus servicios y contenedores. Por ejemplo, puedes configurar un entorno de servidor web usando la imagen oficial de Nginx desde Docker Hub.<\/li>\n\n\n\n<li>En el archivo\u00a0<code>docker-compose.yml<\/code>, especifica los servicios, im\u00e1genes, redes y vol\u00famenes que necesitas para tu aplicaci\u00f3n.<\/li>\n\n\n\n<li>Ejecuta tus servicios juntos usando el comando\u00a0<code>docker-compose up<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">El archivo&nbsp;<code>docker-compose.yml<\/code>&nbsp;es esencial para definir y orquestar servicios y contenedores en Docker Compose. Te explicar\u00e9 c\u00f3mo construir uno paso a paso:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Instalaci\u00f3n de Docker Compose<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Antes de crear un archivo\u00a0<code>docker-compose.yml<\/code>, aseg\u00farate de tener\u00a0<strong>Docker Compose instalado<\/strong>\u00a0en tu sistema.\u00a0<a href=\"https:\/\/dockertips.com\/Utilizando-Docker-Compose\" target=\"_blank\" rel=\"noreferrer noopener\">Si a\u00fan no lo has hecho, sigue los pasos que mencion\u00e9 en mi respuesta anterior para instalarlo<\/a><a href=\"https:\/\/dockertips.com\/Utilizando-Docker-Compose\" target=\"_blank\" rel=\"noreferrer noopener\"><sup>1<\/sup><\/a>.<\/li>\n\n\n\n<li>Una vez instalado, est\u00e1s listo para crear tu archivo\u00a0<code>docker-compose.yml<\/code>.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Estructura del archivo\u00a0<code>docker-compose.yml<\/code><\/strong>:\n<ul class=\"wp-block-list\">\n<li>El archivo\u00a0<code>docker-compose.yml<\/code>\u00a0se define en formato YAML y contiene la descripci\u00f3n de tus servicios y c\u00f3mo se deben ejecutar.<\/li>\n\n\n\n<li>Aqu\u00ed tienes un ejemplo b\u00e1sico de un archivo\u00a0<code>docker-compose.yml<\/code>\u00a0con dos servicios: uno para una base de datos MongoDB y otro para una aplicaci\u00f3n Node.js:<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '3'\nservices:\n  db-mongo:\n    image: mongo\n    environment:\n      MONGO_INITDB_ROOT_USERNAME: myuser\n      MONGO_INITDB_ROOT_PASSWORD: mypassword\n  purenode:\n    image: node:14\n    ports:\n      - '3000:3000'\n    volumes:\n      - .\/app:\/usr\/src\/app\n    depends_on:\n      - db-mongo<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>En este ejemplo:\n<ul class=\"wp-block-list\">\n<li><code>db-mongo<\/code>\u00a0utiliza la imagen oficial de MongoDB y establece credenciales de acceso.<\/li>\n\n\n\n<li><code>purenode<\/code>\u00a0utiliza la imagen oficial de Node.js, expone el puerto 3000 y monta un volumen local para la aplicaci\u00f3n.<\/li>\n\n\n\n<li>El servicio\u00a0<code>purenode<\/code>\u00a0depende del servicio\u00a0<code>db-mongo<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Personaliza tu archivo&nbsp;<code>docker-compose.yml<\/code><\/strong>:\n<ul class=\"wp-block-list\">\n<li>Define tus propios servicios, im\u00e1genes, puertos, vol\u00famenes y redes seg\u00fan tus necesidades.<\/li>\n\n\n\n<li>Puedes agregar m\u00e1s servicios, configurar redes personalizadas y especificar vol\u00famenes compartidos.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>La idea de Docker, es la de crear aplicaciones\/servicios que sean independientes y portables. Esto es, no importa que sistema operativo utilices o con que hardware cuentas, si puedes instalar docker, entonces podras correr tus contenedores en \u00e9l. Entre las ventajas de usar docker, se encuentra la de olvidarte de instalar dependencias (ejemplo nodejs, java,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":770,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[62],"tags":[8,5,4,10,9,6,7],"class_list":["post-17","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-servidores","tag-comandos-docker","tag-contenedor-docker","tag-docker","tag-docker-compose","tag-dockerfile","tag-imagen-docker","tag-registro-docker"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Docker y Docker-compose - Ciencia y Tecnologia<\/title>\n<meta name=\"description\" content=\"Docker es una plataforma de software que permite crear, probar y desplegar aplicaciones de forma r\u00e1pida en contenedores, que son entornos aislados y port\u00e1tiles que contienen todo lo necesario para ejecutar una aplicaci\u00f3n. Introducido por Docker Inc. en 2013, ha revolucionado la manera en que los desarrolladores gestionan las aplicaciones.Caracter\u00edsticas Clave:Portabilidad: Los contenedores funcionan en cualquier entorno que soporte Docker, desde una laptop hasta servidores en la nube.Aislamiento: Cada contenedor es independiente, asegurando que las aplicaciones no interfieran entre s\u00ed.Eficiencia: Utiliza menos recursos que las m\u00e1quinas virtuales, permitiendo un uso m\u00e1s eficiente del hardware.Ecosistema Activo: Gran cantidad de herramientas y servicios como Docker Hub, donde se pueden encontrar y compartir contenedores. Docker Compose es una herramienta que permite definir y ejecutar aplicaciones Docker con m\u00faltiples contenedores. Mediante un archivo YAML, se puede configurar los servicios necesarios para una aplicaci\u00f3n y gestionar su ciclo de vida f\u00e1cilmente.Caracter\u00edsticas Clave:Definici\u00f3n Simple: Permite definir los servicios, redes y vol\u00famenes de una aplicaci\u00f3n en un solo archivo docker-compose.yml.Orquestaci\u00f3n: Facilita la gesti\u00f3n de m\u00faltiples contenedores y su interacci\u00f3n.Automatizaci\u00f3n: Simplifica el despliegue y la actualizaci\u00f3n de aplicaciones complejas, garantizando que todos los componentes se inicien en el orden correcto.Compatibilidad: Funciona en cualquier entorno que soporte Docker, desde desarrollo local hasta producci\u00f3n en la nube.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cienciaytecnology.com\/wordpress\/docker\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker y Docker-compose - Ciencia y Tecnologia\" \/>\n<meta property=\"og:description\" content=\"Docker es una plataforma de software que permite crear, probar y desplegar aplicaciones de forma r\u00e1pida en contenedores, que son entornos aislados y port\u00e1tiles que contienen todo lo necesario para ejecutar una aplicaci\u00f3n. Introducido por Docker Inc. en 2013, ha revolucionado la manera en que los desarrolladores gestionan las aplicaciones.Caracter\u00edsticas Clave:Portabilidad: Los contenedores funcionan en cualquier entorno que soporte Docker, desde una laptop hasta servidores en la nube.Aislamiento: Cada contenedor es independiente, asegurando que las aplicaciones no interfieran entre s\u00ed.Eficiencia: Utiliza menos recursos que las m\u00e1quinas virtuales, permitiendo un uso m\u00e1s eficiente del hardware.Ecosistema Activo: Gran cantidad de herramientas y servicios como Docker Hub, donde se pueden encontrar y compartir contenedores. Docker Compose es una herramienta que permite definir y ejecutar aplicaciones Docker con m\u00faltiples contenedores. Mediante un archivo YAML, se puede configurar los servicios necesarios para una aplicaci\u00f3n y gestionar su ciclo de vida f\u00e1cilmente.Caracter\u00edsticas Clave:Definici\u00f3n Simple: Permite definir los servicios, redes y vol\u00famenes de una aplicaci\u00f3n en un solo archivo docker-compose.yml.Orquestaci\u00f3n: Facilita la gesti\u00f3n de m\u00faltiples contenedores y su interacci\u00f3n.Automatizaci\u00f3n: Simplifica el despliegue y la actualizaci\u00f3n de aplicaciones complejas, garantizando que todos los componentes se inicien en el orden correcto.Compatibilidad: Funciona en cualquier entorno que soporte Docker, desde desarrollo local hasta producci\u00f3n en la nube.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cienciaytecnology.com\/wordpress\/docker\/\" \/>\n<meta property=\"og:site_name\" content=\"Ciencia y Tecnologia\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-27T11:32:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-26T21:32:51+00:00\" \/>\n<meta name=\"author\" content=\"david\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"david\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/docker\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/docker\\\/\"},\"author\":{\"name\":\"david\",\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b76777e3c0d2d08ea263068461c90d4b\"},\"headline\":\"Docker y Docker-compose\",\"datePublished\":\"2024-05-27T11:32:23+00:00\",\"dateModified\":\"2026-04-26T21:32:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/docker\\\/\"},\"wordCount\":2527,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b76777e3c0d2d08ea263068461c90d4b\"},\"image\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/docker\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/post_17.jpg\",\"keywords\":[\"Comandos Docker\",\"Contenedor Docker\",\"Docker\",\"Docker Compose\",\"Dockerfile\",\"Imagen Docker\",\"Registro Docker\"],\"articleSection\":[\"Servidores\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/docker\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/docker\\\/\",\"url\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/docker\\\/\",\"name\":\"Docker y Docker-compose - Ciencia y Tecnologia\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/docker\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/docker\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/post_17.jpg\",\"datePublished\":\"2024-05-27T11:32:23+00:00\",\"dateModified\":\"2026-04-26T21:32:51+00:00\",\"description\":\"Docker es una plataforma de software que permite crear, probar y desplegar aplicaciones de forma r\u00e1pida en contenedores, que son entornos aislados y port\u00e1tiles que contienen todo lo necesario para ejecutar una aplicaci\u00f3n. Introducido por Docker Inc. en 2013, ha revolucionado la manera en que los desarrolladores gestionan las aplicaciones.Caracter\u00edsticas Clave:Portabilidad: Los contenedores funcionan en cualquier entorno que soporte Docker, desde una laptop hasta servidores en la nube.Aislamiento: Cada contenedor es independiente, asegurando que las aplicaciones no interfieran entre s\u00ed.Eficiencia: Utiliza menos recursos que las m\u00e1quinas virtuales, permitiendo un uso m\u00e1s eficiente del hardware.Ecosistema Activo: Gran cantidad de herramientas y servicios como Docker Hub, donde se pueden encontrar y compartir contenedores. Docker Compose es una herramienta que permite definir y ejecutar aplicaciones Docker con m\u00faltiples contenedores. Mediante un archivo YAML, se puede configurar los servicios necesarios para una aplicaci\u00f3n y gestionar su ciclo de vida f\u00e1cilmente.Caracter\u00edsticas Clave:Definici\u00f3n Simple: Permite definir los servicios, redes y vol\u00famenes de una aplicaci\u00f3n en un solo archivo docker-compose.yml.Orquestaci\u00f3n: Facilita la gesti\u00f3n de m\u00faltiples contenedores y su interacci\u00f3n.Automatizaci\u00f3n: Simplifica el despliegue y la actualizaci\u00f3n de aplicaciones complejas, garantizando que todos los componentes se inicien en el orden correcto.Compatibilidad: Funciona en cualquier entorno que soporte Docker, desde desarrollo local hasta producci\u00f3n en la nube.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/docker\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/docker\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/docker\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/post_17.jpg\",\"contentUrl\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/post_17.jpg\",\"width\":1280,\"height\":719},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/docker\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Docker y Docker-compose\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/\",\"name\":\"Ciencia y Tecnologia\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b76777e3c0d2d08ea263068461c90d4b\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b76777e3c0d2d08ea263068461c90d4b\",\"name\":\"david\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a9d8ccd92847e24d772422bc56934157f705784123e5b11a9724d44add16e6bb?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a9d8ccd92847e24d772422bc56934157f705784123e5b11a9724d44add16e6bb?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a9d8ccd92847e24d772422bc56934157f705784123e5b11a9724d44add16e6bb?s=96&d=mm&r=g\",\"caption\":\"david\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a9d8ccd92847e24d772422bc56934157f705784123e5b11a9724d44add16e6bb?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Docker y Docker-compose - Ciencia y Tecnologia","description":"Docker es una plataforma de software que permite crear, probar y desplegar aplicaciones de forma r\u00e1pida en contenedores, que son entornos aislados y port\u00e1tiles que contienen todo lo necesario para ejecutar una aplicaci\u00f3n. Introducido por Docker Inc. en 2013, ha revolucionado la manera en que los desarrolladores gestionan las aplicaciones.Caracter\u00edsticas Clave:Portabilidad: Los contenedores funcionan en cualquier entorno que soporte Docker, desde una laptop hasta servidores en la nube.Aislamiento: Cada contenedor es independiente, asegurando que las aplicaciones no interfieran entre s\u00ed.Eficiencia: Utiliza menos recursos que las m\u00e1quinas virtuales, permitiendo un uso m\u00e1s eficiente del hardware.Ecosistema Activo: Gran cantidad de herramientas y servicios como Docker Hub, donde se pueden encontrar y compartir contenedores. Docker Compose es una herramienta que permite definir y ejecutar aplicaciones Docker con m\u00faltiples contenedores. Mediante un archivo YAML, se puede configurar los servicios necesarios para una aplicaci\u00f3n y gestionar su ciclo de vida f\u00e1cilmente.Caracter\u00edsticas Clave:Definici\u00f3n Simple: Permite definir los servicios, redes y vol\u00famenes de una aplicaci\u00f3n en un solo archivo docker-compose.yml.Orquestaci\u00f3n: Facilita la gesti\u00f3n de m\u00faltiples contenedores y su interacci\u00f3n.Automatizaci\u00f3n: Simplifica el despliegue y la actualizaci\u00f3n de aplicaciones complejas, garantizando que todos los componentes se inicien en el orden correcto.Compatibilidad: Funciona en cualquier entorno que soporte Docker, desde desarrollo local hasta producci\u00f3n en la nube.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cienciaytecnology.com\/wordpress\/docker\/","og_locale":"es_ES","og_type":"article","og_title":"Docker y Docker-compose - Ciencia y Tecnologia","og_description":"Docker es una plataforma de software que permite crear, probar y desplegar aplicaciones de forma r\u00e1pida en contenedores, que son entornos aislados y port\u00e1tiles que contienen todo lo necesario para ejecutar una aplicaci\u00f3n. Introducido por Docker Inc. en 2013, ha revolucionado la manera en que los desarrolladores gestionan las aplicaciones.Caracter\u00edsticas Clave:Portabilidad: Los contenedores funcionan en cualquier entorno que soporte Docker, desde una laptop hasta servidores en la nube.Aislamiento: Cada contenedor es independiente, asegurando que las aplicaciones no interfieran entre s\u00ed.Eficiencia: Utiliza menos recursos que las m\u00e1quinas virtuales, permitiendo un uso m\u00e1s eficiente del hardware.Ecosistema Activo: Gran cantidad de herramientas y servicios como Docker Hub, donde se pueden encontrar y compartir contenedores. Docker Compose es una herramienta que permite definir y ejecutar aplicaciones Docker con m\u00faltiples contenedores. Mediante un archivo YAML, se puede configurar los servicios necesarios para una aplicaci\u00f3n y gestionar su ciclo de vida f\u00e1cilmente.Caracter\u00edsticas Clave:Definici\u00f3n Simple: Permite definir los servicios, redes y vol\u00famenes de una aplicaci\u00f3n en un solo archivo docker-compose.yml.Orquestaci\u00f3n: Facilita la gesti\u00f3n de m\u00faltiples contenedores y su interacci\u00f3n.Automatizaci\u00f3n: Simplifica el despliegue y la actualizaci\u00f3n de aplicaciones complejas, garantizando que todos los componentes se inicien en el orden correcto.Compatibilidad: Funciona en cualquier entorno que soporte Docker, desde desarrollo local hasta producci\u00f3n en la nube.","og_url":"https:\/\/cienciaytecnology.com\/wordpress\/docker\/","og_site_name":"Ciencia y Tecnologia","article_published_time":"2024-05-27T11:32:23+00:00","article_modified_time":"2026-04-26T21:32:51+00:00","author":"david","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"david","Tiempo de lectura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cienciaytecnology.com\/wordpress\/docker\/#article","isPartOf":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/docker\/"},"author":{"name":"david","@id":"https:\/\/cienciaytecnology.com\/wordpress\/#\/schema\/person\/b76777e3c0d2d08ea263068461c90d4b"},"headline":"Docker y Docker-compose","datePublished":"2024-05-27T11:32:23+00:00","dateModified":"2026-04-26T21:32:51+00:00","mainEntityOfPage":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/docker\/"},"wordCount":2527,"commentCount":0,"publisher":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/#\/schema\/person\/b76777e3c0d2d08ea263068461c90d4b"},"image":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/docker\/#primaryimage"},"thumbnailUrl":"https:\/\/cienciaytecnology.com\/wordpress\/wp-content\/uploads\/2026\/04\/post_17.jpg","keywords":["Comandos Docker","Contenedor Docker","Docker","Docker Compose","Dockerfile","Imagen Docker","Registro Docker"],"articleSection":["Servidores"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/cienciaytecnology.com\/wordpress\/docker\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/cienciaytecnology.com\/wordpress\/docker\/","url":"https:\/\/cienciaytecnology.com\/wordpress\/docker\/","name":"Docker y Docker-compose - Ciencia y Tecnologia","isPartOf":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/docker\/#primaryimage"},"image":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/docker\/#primaryimage"},"thumbnailUrl":"https:\/\/cienciaytecnology.com\/wordpress\/wp-content\/uploads\/2026\/04\/post_17.jpg","datePublished":"2024-05-27T11:32:23+00:00","dateModified":"2026-04-26T21:32:51+00:00","description":"Docker es una plataforma de software que permite crear, probar y desplegar aplicaciones de forma r\u00e1pida en contenedores, que son entornos aislados y port\u00e1tiles que contienen todo lo necesario para ejecutar una aplicaci\u00f3n. Introducido por Docker Inc. en 2013, ha revolucionado la manera en que los desarrolladores gestionan las aplicaciones.Caracter\u00edsticas Clave:Portabilidad: Los contenedores funcionan en cualquier entorno que soporte Docker, desde una laptop hasta servidores en la nube.Aislamiento: Cada contenedor es independiente, asegurando que las aplicaciones no interfieran entre s\u00ed.Eficiencia: Utiliza menos recursos que las m\u00e1quinas virtuales, permitiendo un uso m\u00e1s eficiente del hardware.Ecosistema Activo: Gran cantidad de herramientas y servicios como Docker Hub, donde se pueden encontrar y compartir contenedores. Docker Compose es una herramienta que permite definir y ejecutar aplicaciones Docker con m\u00faltiples contenedores. Mediante un archivo YAML, se puede configurar los servicios necesarios para una aplicaci\u00f3n y gestionar su ciclo de vida f\u00e1cilmente.Caracter\u00edsticas Clave:Definici\u00f3n Simple: Permite definir los servicios, redes y vol\u00famenes de una aplicaci\u00f3n en un solo archivo docker-compose.yml.Orquestaci\u00f3n: Facilita la gesti\u00f3n de m\u00faltiples contenedores y su interacci\u00f3n.Automatizaci\u00f3n: Simplifica el despliegue y la actualizaci\u00f3n de aplicaciones complejas, garantizando que todos los componentes se inicien en el orden correcto.Compatibilidad: Funciona en cualquier entorno que soporte Docker, desde desarrollo local hasta producci\u00f3n en la nube.","breadcrumb":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/docker\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cienciaytecnology.com\/wordpress\/docker\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/cienciaytecnology.com\/wordpress\/docker\/#primaryimage","url":"https:\/\/cienciaytecnology.com\/wordpress\/wp-content\/uploads\/2026\/04\/post_17.jpg","contentUrl":"https:\/\/cienciaytecnology.com\/wordpress\/wp-content\/uploads\/2026\/04\/post_17.jpg","width":1280,"height":719},{"@type":"BreadcrumbList","@id":"https:\/\/cienciaytecnology.com\/wordpress\/docker\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/cienciaytecnology.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Docker y Docker-compose"}]},{"@type":"WebSite","@id":"https:\/\/cienciaytecnology.com\/wordpress\/#website","url":"https:\/\/cienciaytecnology.com\/wordpress\/","name":"Ciencia y Tecnologia","description":"","publisher":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/#\/schema\/person\/b76777e3c0d2d08ea263068461c90d4b"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cienciaytecnology.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":["Person","Organization"],"@id":"https:\/\/cienciaytecnology.com\/wordpress\/#\/schema\/person\/b76777e3c0d2d08ea263068461c90d4b","name":"david","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/a9d8ccd92847e24d772422bc56934157f705784123e5b11a9724d44add16e6bb?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a9d8ccd92847e24d772422bc56934157f705784123e5b11a9724d44add16e6bb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a9d8ccd92847e24d772422bc56934157f705784123e5b11a9724d44add16e6bb?s=96&d=mm&r=g","caption":"david"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/a9d8ccd92847e24d772422bc56934157f705784123e5b11a9724d44add16e6bb?s=96&d=mm&r=g"},"sameAs":["https:\/\/cienciaytecnology.com\/wordpress"]}]}},"_links":{"self":[{"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/posts\/17","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/comments?post=17"}],"version-history":[{"count":2,"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/posts\/17\/revisions"}],"predecessor-version":[{"id":33,"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/posts\/17\/revisions\/33"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/media\/770"}],"wp:attachment":[{"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/media?parent=17"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/categories?post=17"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/tags?post=17"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}