{"id":612,"date":"2024-07-22T12:35:38","date_gmt":"2024-07-22T12:35:38","guid":{"rendered":"https:\/\/dockerpros.com\/?p=612"},"modified":"2024-07-22T12:35:38","modified_gmt":"2024-07-22T12:35:38","slug":"integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency","status":"publish","type":"post","link":"https:\/\/dockerpros.com\/es\/ci-cd-with-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/","title":{"rendered":"Integrando Docker en los pipelines de CI\/CD de GitLab para mejorar la eficiencia"},"content":{"rendered":"<h1>Usando Docker en GitLab CI\/CD Pipelines<\/h1>\n<p>In the modern software development landscape, Continuous Integration and Continuous Deployment (CI\/CD) have become essential for maintaining code quality and ensuring rapid delivery cycles. GitLab, as a leading DevOps platform, offers robust CI\/CD capabilities that can be significantly enhanced by leveraging Docker. This article explores how Docker can be integrated into GitLab CI\/CD pipelines to streamline workflows, improve build consistency, and facilitate deployment across various environments.<\/p>\n<h2>Comprender los Fundamentos\n\nEl primer paso para aprender cualquier cosa es comprender los fundamentos. Esto es especialmente cierto cuando se trata de aprender un nuevo idioma. Antes de poder empezar a hablar, leer o escribir en un nuevo idioma, primero debes entender los conceptos b\u00e1sicos de c\u00f3mo funciona ese idioma.\n\nHay algunas cosas clave que debes entender sobre cualquier idioma antes de poder empezar a aprenderlo. Primero, debes entender la estructura b\u00e1sica de las oraciones en ese idioma. Esto incluye entender c\u00f3mo se ordenan las palabras en una oraci\u00f3n, qu\u00e9 tipos de palabras se usan y c\u00f3mo se usan. Tambi\u00e9n debes entender las reglas b\u00e1sicas de gram\u00e1tica del idioma. Esto incluye entender c\u00f3mo se forman los tiempos verbales, c\u00f3mo se usan los art\u00edculos y c\u00f3mo se forman los plurales.\n\nUna vez que comprendas los fundamentos de la estructura de las oraciones y la gram\u00e1tica, puedes empezar a aprender vocabulario. El vocabulario es el conjunto de palabras que se usan en un idioma. Para aprender vocabulario, puedes usar tarjetas de memoria, aplicaciones de aprendizaje de idiomas o simplemente leer y escuchar tanto como sea posible en el idioma que est\u00e1s aprendiendo.\n\nFinalmente, debes entender la cultura del idioma que est\u00e1s aprendiendo. Esto incluye entender las costumbres, tradiciones y valores de las personas que hablan ese idioma. Comprender la cultura te ayudar\u00e1 a entender mejor el idioma y a comunicarte de manera m\u00e1s efectiva con los hablantes nativos.\n\nEn resumen, para aprender un nuevo idioma, primero debes comprender los fundamentos de la estructura de las oraciones, la gram\u00e1tica y el vocabulario. Tambi\u00e9n debes entender la cultura del idioma. Con estos fundamentos en su lugar, puedes empezar a aprender el idioma de manera m\u00e1s efectiva.<\/h2>\n<h3>Docker es una plataforma de c\u00f3digo abierto que permite a los desarrolladores crear, implementar y ejecutar aplicaciones en contenedores. Los contenedores son entornos aislados que contienen todo lo necesario para que una aplicaci\u00f3n se ejecute, incluyendo el c\u00f3digo, las bibliotecas del sistema, las herramientas y las dependencias. Esto significa que las aplicaciones pueden ejecutarse de manera consistente en cualquier entorno, ya sea en un servidor local, en la nube o en un dispositivo m\u00f3vil.\n\nDocker utiliza la tecnolog\u00eda de contenedores de Linux, que permite que m\u00faltiples contenedores se ejecuten en una sola m\u00e1quina host. Cada contenedor comparte el kernel del sistema operativo host, pero tiene su propio espacio de usuario y sistema de archivos. Esto hace que los contenedores sean mucho m\u00e1s ligeros y r\u00e1pidos que las m\u00e1quinas virtuales tradicionales, que requieren un sistema operativo completo para cada instancia.\n\nDocker tambi\u00e9n proporciona una serie de herramientas y servicios para facilitar el desarrollo y la implementaci\u00f3n de aplicaciones en contenedores. Estos incluyen:\n\n- Docker Hub: Un repositorio de im\u00e1genes de contenedores que los desarrolladores pueden usar como base para sus propias aplicaciones.\n\n- Docker Compose: Una herramienta para definir y ejecutar aplicaciones de m\u00faltiples contenedores.\n\n- Docker Swarm: Un orquestador de contenedores que permite a los desarrolladores administrar y escalar aplicaciones en contenedores en m\u00faltiples hosts.\n\n- Docker Machine: Una herramienta para crear y administrar m\u00e1quinas host de Docker en diferentes plataformas.\n\nEn resumen, Docker es una plataforma de contenedores que permite a los desarrolladores crear, implementar y ejecutar aplicaciones de manera consistente en cualquier entorno. Proporciona una serie de herramientas y servicios para facilitar el desarrollo y la implementaci\u00f3n de aplicaciones en contenedores, lo que lo convierte en una opci\u00f3n popular para el desarrollo de aplicaciones modernas.<\/h3>\n<p>Docker es una plataforma de c\u00f3digo abierto que automatiza el despliegue, <span class=\"glossaryai-tooltip glossary-term-696\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/scaling\/\" target=\"_blank\">escalar<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Scaling refers to the process of adjusting the capacity of a system to accommodate varying loads. It can be achieved through vertical scaling, which enhances existing resources, or horizontal scaling, which adds additional resources.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/scaling\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>, and management of applications using containerization. Containers encapsulate an application and its dependencies, allowing it to <span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/run\/\" target=\"_blank\">run<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" refers to a command in various programming languages and operating systems to execute a specified program or script. It initiates processes, providing a controlled environment for task execution.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> de manera consistente en diferentes entornos inform\u00e1ticos. Esto elimina el problema del \"funciona en mi m\u00e1quina\" que se encuentra con frecuencia en el desarrollo de software.<\/p>\n<h3>GitLab CI\/CD es una herramienta de integraci\u00f3n continua y entrega continua (CI\/CD) que forma parte de la plataforma GitLab. Permite automatizar el proceso de construcci\u00f3n, prueba y despliegue de aplicaciones de software.\n\nCon GitLab CI\/CD, puedes definir tuber\u00edas de CI\/CD en un archivo de configuraci\u00f3n llamado .gitlab-ci.yml, que se encuentra en el repositorio de tu proyecto. Este archivo describe las etapas y trabajos que se ejecutar\u00e1n en la tuber\u00eda, as\u00ed como las condiciones y dependencias entre ellos.\n\nGitLab CI\/CD se ejecuta en un entorno de ejecuci\u00f3n llamado GitLab Runner, que puede ser un servidor dedicado, una m\u00e1quina virtual o un contenedor. Los runners ejecutan los trabajos definidos en la tuber\u00eda y env\u00edan los resultados de vuelta a GitLab.\n\nAlgunas de las caracter\u00edsticas clave de GitLab CI\/CD incluyen:\n\n- **Integraci\u00f3n con GitLab**: GitLab CI\/CD est\u00e1 estrechamente integrado con GitLab, lo que facilita la gesti\u00f3n de proyectos, el control de versiones y la colaboraci\u00f3n en equipo.\n\n- **Tuber\u00edas flexibles**: Puedes definir tuber\u00edas de CI\/CD complejas con m\u00faltiples etapas, trabajos y dependencias, adaptadas a las necesidades espec\u00edficas de tu proyecto.\n\n- **Ejecuci\u00f3n paralela**: GitLab CI\/CD permite ejecutar trabajos en paralelo, lo que acelera el proceso de construcci\u00f3n y prueba.\n\n- **Entornos y despliegues**: Puedes definir entornos de despliegue, como desarrollo, staging y producci\u00f3n, y automatizar el proceso de despliegue en cada entorno.\n\n- **Integraci\u00f3n con herramientas externas**: GitLab CI\/CD se integra con una amplia gama de herramientas y servicios externos, como Docker, Kubernetes, AWS, Azure y m\u00e1s.\n\n- **Monitoreo y m\u00e9tricas**: GitLab CI\/CD proporciona m\u00e9tricas y monitoreo en tiempo real del estado de las tuber\u00edas, lo que te permite identificar y solucionar problemas r\u00e1pidamente.\n\nEn resumen, GitLab CI\/CD es una herramienta poderosa y flexible que ayuda a los equipos de desarrollo a automatizar y optimizar el proceso de entrega de software, desde la construcci\u00f3n y prueba hasta el despliegue y monitoreo.<\/h3>\n<p>GitLab CI\/CD es una caracter\u00edstica integrada de GitLab que ayuda a automatizar el proceso de desarrollo de software. Permite a los desarrolladores construir, probar y desplegar su c\u00f3digo autom\u00e1ticamente cuando se realizan cambios. GitLab CI\/CD utiliza un <code>.gitlab-ci.yml<\/code> archivo que contiene la configuraci\u00f3n de la canalizaci\u00f3n, definiendo las diversas etapas, trabajos y scripts necesarios para el proceso de CI\/CD.<\/p>\n<h2>Benefits of Using Docker with GitLab CI\/CD<\/h2>\n<ol>\n<li>\n<p><strong>Consistent Environments<\/strong>Docker garantiza que la aplicaci\u00f3n se ejecute en el mismo entorno durante el desarrollo, las pruebas y la producci\u00f3n. Esto reduce las posibilidades de discrepancias causadas por diferentes configuraciones.<\/p>\n<\/li>\n<li>\n<p><strong>Aislamiento<\/strong>Los contenedores proporcionan un nivel de aislamiento entre diferentes aplicaciones y sus dependencias, evitando conflictos y garantizando builds estables.<\/p>\n<\/li>\n<li>\n<p><strong>Escalabilidad<\/strong>: Using Docker in CI\/CD pipelines allows for easy <span class=\"glossaryai-tooltip glossary-term-696\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/scaling\/\" target=\"_blank\">escalar<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Scaling refers to the process of adjusting the capacity of a system to accommodate varying loads. It can be achieved through vertical scaling, which enhances existing resources, or horizontal scaling, which adds additional resources.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/scaling\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> of applications. Containers can be spun up or down quickly, depending on the demand.<\/p>\n<\/li>\n<li>\n<p><strong>Simplified Dependency Management<\/strong>: Docker images bundle all dependencies required for an application, simplifying the management of libraries and tools.<\/p>\n<\/li>\n<li>\n<p><strong>Tiempos de construcci\u00f3n m\u00e1s r\u00e1pidos\n\nEn el pasado, los desarrolladores de juegos ten\u00edan que esperar horas para que sus cambios se compilaran y se ejecutaran en el hardware de destino. Esto se deb\u00eda a que el c\u00f3digo se compilaba para la arquitectura de la m\u00e1quina de desarrollo, que a menudo era muy diferente a la del hardware de destino. Por ejemplo, un desarrollador podr\u00eda estar trabajando en un juego para PlayStation 4 en una PC con Windows. El c\u00f3digo tendr\u00eda que ser compilado para x86 (la arquitectura de la PC) y luego convertido a la arquitectura de la PS4. Este proceso pod\u00eda llevar horas, especialmente para juegos grandes y complejos.\n\nHoy en d\u00eda, los desarrolladores de juegos tienen acceso a herramientas que pueden compilar c\u00f3digo directamente para el hardware de destino. Esto significa que los cambios se pueden compilar y ejecutarse en el hardware de destino en cuesti\u00f3n de minutos, o incluso segundos. Esto ha reducido dr\u00e1sticamente los tiempos de construcci\u00f3n y ha permitido a los desarrolladores iterar m\u00e1s r\u00e1pidamente en sus juegos.\n\nHay varias razones por las que los tiempos de construcci\u00f3n m\u00e1s r\u00e1pidos son importantes para los desarrolladores de juegos. Primero, permite a los desarrolladores probar sus cambios m\u00e1s r\u00e1pidamente. Esto es especialmente importante para los juegos que son complejos o que tienen muchas caracter\u00edsticas. Segundo, los tiempos de construcci\u00f3n m\u00e1s r\u00e1pidos pueden ayudar a los desarrolladores a identificar y corregir errores m\u00e1s r\u00e1pidamente. Esto se debe a que los desarrolladores pueden probar sus cambios con m\u00e1s frecuencia, lo que aumenta las posibilidades de detectar errores temprano. Tercero, los tiempos de construcci\u00f3n m\u00e1s r\u00e1pidos pueden ayudar a los desarrolladores a cumplir con los plazos. Esto se debe a que los desarrolladores pueden completar m\u00e1s trabajo en menos tiempo.\n\nEn general, los tiempos de construcci\u00f3n m\u00e1s r\u00e1pidos son una gran ventaja para los desarrolladores de juegos. Permiten a los desarrolladores iterar m\u00e1s r\u00e1pidamente, identificar y corregir errores m\u00e1s r\u00e1pidamente y cumplir con los plazos.<\/strong>: Las im\u00e1genes de Docker se pueden almacenar en cach\u00e9, lo que acelera significativamente el proceso de compilaci\u00f3n en las canalizaciones de CI\/CD.<\/p>\n<\/li>\n<\/ol>\n<h2>Setting Up Docker with GitLab CI\/CD<\/h2>\n<h3>Prerequisites<\/h3>\n<p>Before diving into the implementation, ensure you have the following:<\/p>\n<ul>\n<li>Una cuenta de GitLab y un proyecto donde puedas configurar pipelines de CI\/CD.<\/li>\n<li>Docker installed on your local machine for building images.<\/li>\n<li>Basic knowledge of <span class=\"glossaryai-tooltip glossary-term-690\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/yaml\/\" target=\"_blank\">YAML<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">YAML (YAML Ain't Markup Language) es un formato de serializaci\u00f3n de datos legible por humanos que se utiliza com\u00fanmente para archivos de configuraci\u00f3n. Enfatiza la simplicidad y claridad, lo que lo hace adecuado tanto para desarrolladores como para no desarrolladores.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/yaml\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> syntax, as the <code>.gitlab-ci.yml<\/code> file is written in <span class=\"glossaryai-tooltip glossary-term-690\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/yaml\/\" target=\"_blank\">YAML<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">YAML (YAML Ain't Markup Language) es un formato de serializaci\u00f3n de datos legible por humanos que se utiliza com\u00fanmente para archivos de configuraci\u00f3n. Enfatiza la simplicidad y claridad, lo que lo hace adecuado tanto para desarrolladores como para no desarrolladores.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/yaml\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>.<\/li>\n<\/ul>\n<h3>Step 1: Create a <code>.gitlab-ci.yml<\/code> Archivo<\/h3>\n<p>The first step in setting up a GitLab CI\/CD pipeline with Docker is to create a <code>.gitlab-ci.yml<\/code> file at the root of your <span class=\"glossaryai-tooltip glossary-term-659\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/repository\/\" target=\"_blank\">repositorio<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Un repositorio es una ubicaci\u00f3n centralizada donde se almacenan, gestionan y mantienen datos, c\u00f3digo o documentos. Facilita el control de versiones, la colaboraci\u00f3n y el intercambio eficiente de recursos entre los usuarios.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/repository\/\">More \u00bb<\/a><\/span><\/span><span class=\"gai-tooltip-video-wrapper\"><span class=\"gai-tooltip-video\" data-src=\"https:\/\/www.youtube.com\/embed\/_OXj8BGxNPY?rel=0&#038;modestbranding=1\"><\/span><\/span><\/span><\/span><\/span>. This file dictates how the CI\/CD processes will <span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/run\/\" target=\"_blank\">run<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" refers to a command in various programming languages and operating systems to execute a specified program or script. It initiates processes, providing a controlled environment for task execution.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>.<\/p>\n<p>Aqu\u00ed tienes un ejemplo b\u00e1sico:<\/p>\n<pre><code class=\"language-yaml\"><span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\" target=\"_blank\">imagen<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">An image is a visual representation of an object or scene, typically composed of pixels in digital formats. It can convey information, evoke emotions, and facilitate communication across various media.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>: docker:latest\n\nservices:\n  - docker:dind\n\nstages:\n  - build\n  - test\n  - deploy\n\nvariables:\n  DOCKER_DRIVER: overlay2\n\nbuild:\n  stage: build\n  script:\n    - docker build -t my-app:latest .\n\ntest:\n  stage: test\n  script:\n    - docker <span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/run\/\" target=\"_blank\">run<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" refers to a command in various programming languages and operating systems to execute a specified program or script. It initiates processes, providing a controlled environment for task execution.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> --rm my-app:latest .\/run_tests.sh\n\ndeploy:\n  stage: deploy\n  script:\n    - docker <span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/run\/\" target=\"_blank\">run<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" refers to a command in various programming languages and operating systems to execute a specified program or script. It initiates processes, providing a controlled environment for task execution.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> -d -p 8080:80 my-app:latest<\/code><\/pre>\n<h3>Breakdown of the <code>.gitlab-ci.yml<\/code> Archivo<\/h3>\n<ul>\n<li>\n<p><strong><code><span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\" target=\"_blank\">imagen<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">An image is a visual representation of an object or scene, typically composed of pixels in digital formats. It can convey information, evoke emotions, and facilitate communication across various media.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span><\/code><\/strong>: This specifies the Docker <span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\" target=\"_blank\">imagen<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">An image is a visual representation of an object or scene, typically composed of pixels in digital formats. It can convey information, evoke emotions, and facilitate communication across various media.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> to use for the CI\/CD pipeline. Here, we are using the latest Docker <span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\" target=\"_blank\">imagen<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">An image is a visual representation of an object or scene, typically composed of pixels in digital formats. It can convey information, evoke emotions, and facilitate communication across various media.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>.<\/p>\n<\/li>\n<li>\n<p><strong><code>servicios<\/code><\/strong>: <code>docker:dind<\/code> (Docker-in-Docker) allows Docker commands to be executed within the CI\/CD environment, enabling you to build and <span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/run\/\" target=\"_blank\">run<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" refers to a command in various programming languages and operating systems to execute a specified program or script. It initiates processes, providing a controlled environment for task execution.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> containers.<\/p>\n<\/li>\n<li>\n<p><strong><code>stages<\/code><\/strong>: Define las etapas de la canalizaci\u00f3n: compilaci\u00f3n, prueba y despliegue.<\/p>\n<\/li>\n<li>\n<p><strong><code>variables<\/code><\/strong>Aqu\u00ed, establecemos el <code>DOCKER_DRIVER<\/code> variable para <code>overlay2<\/code>, que es el controlador de almacenamiento preferido para Docker.<\/p>\n<\/li>\n<li>\n<p><strong>Empleos<\/strong>:<\/p>\n<ul>\n<li><strong><code>build<\/code><\/strong>: In this job, we build a Docker <span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\" target=\"_blank\">imagen<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">An image is a visual representation of an object or scene, typically composed of pixels in digital formats. It can convey information, evoke emotions, and facilitate communication across various media.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> llamado <code>mi-aplicaci\u00f3n<\/code> utilizando el <span class=\"glossaryai-tooltip glossary-term-652\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/dockerfile\/\" target=\"_blank\">Dockerfile<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Un Dockerfile es un script que contiene una serie de instrucciones para automatizar la creaci\u00f3n de im\u00e1genes Docker. Especifica la imagen base, las dependencias de la aplicaci\u00f3n y la configuraci\u00f3n, facilitando el despliegue consistente en diferentes entornos.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/dockerfile\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> in the root of the <span class=\"glossaryai-tooltip glossary-term-659\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/repository\/\" target=\"_blank\">repositorio<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Un repositorio es una ubicaci\u00f3n centralizada donde se almacenan, gestionan y mantienen datos, c\u00f3digo o documentos. Facilita el control de versiones, la colaboraci\u00f3n y el intercambio eficiente de recursos entre los usuarios.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/repository\/\">More \u00bb<\/a><\/span><\/span><span class=\"gai-tooltip-video-wrapper\"><span class=\"gai-tooltip-video\" data-src=\"https:\/\/www.youtube.com\/embed\/_OXj8BGxNPY?rel=0&#038;modestbranding=1\"><\/span><\/span><\/span><\/span><\/span>.<\/li>\n<li><strong><code>prueba<\/code><\/strong>Este trabajo ejecuta pruebas dentro del <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\" target=\"_blank\">contenedor<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> creado por el trabajo anterior utilizando el <code>run_tests.sh<\/code> script.<\/li>\n<li><strong><code>deploy<\/code><\/strong>: Finally, we deploy the application by running the Docker <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\" target=\"_blank\">contenedor<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> in detached mode and mapping <span class=\"glossaryai-tooltip glossary-term-677\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/port\/\" target=\"_blank\">puerto<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Un PUERTO es un punto final de comunicaci\u00f3n en una red inform\u00e1tica, definido por un identificador num\u00e9rico. Facilita el enrutamiento de datos a aplicaciones espec\u00edficas, mejorando la funcionalidad y seguridad del sistema.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/port\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> 8080 on the host to <span class=\"glossaryai-tooltip glossary-term-677\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/port\/\" target=\"_blank\">puerto<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Un PUERTO es un punto final de comunicaci\u00f3n en una red inform\u00e1tica, definido por un identificador num\u00e9rico. Facilita el enrutamiento de datos a aplicaciones espec\u00edficas, mejorando la funcionalidad y seguridad del sistema.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/port\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> 80 on the <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\" target=\"_blank\">contenedor<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Paso 2: Construir y subir im\u00e1genes de Docker<\/h3>\n<p>In many scenarios, you may want to push Docker images to a <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\" target=\"_blank\">contenedor<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> <span class=\"glossaryai-tooltip glossary-term-658\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/registry\/\" target=\"_blank\">registry<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Un registro es una base de datos centralizada que almacena informaci\u00f3n sobre diversas entidades, como instalaciones de software, configuraciones del sistema o datos de usuario. Es un componente fundamental para la gesti\u00f3n y configuraci\u00f3n del sistema.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/registry\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> after building them. GitLab provides its own <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\" target=\"_blank\">contenedor<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> <span class=\"glossaryai-tooltip glossary-term-658\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/registry\/\" target=\"_blank\">registry<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Un registro es una base de datos centralizada que almacena informaci\u00f3n sobre diversas entidades, como instalaciones de software, configuraciones del sistema o datos de usuario. Es un componente fundamental para la gesti\u00f3n y configuraci\u00f3n del sistema.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/registry\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>, which can be leveraged for this purpose. <\/p>\n<p>To push images, the <code>.gitlab-ci.yml<\/code> El archivo puede ampliarse de la siguiente manera:<\/p>\n<pre><code class=\"language-yaml\">variables:\n  DOCKER_DRIVER: overlay2\n  <span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\" target=\"_blank\">The image shows a close-up view of a person's hand holding a small, round object that appears to be a pill or capsule. The background is blurred, focusing attention on the hand and the object. The lighting is soft, highlighting the texture of the skin and the details of the pill. The overall mood of the image is calm and contemplative.<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">An image is a visual representation of an object or scene, typically composed of pixels in digital formats. It can convey information, evoke emotions, and facilitate communication across various media.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>: $CI_REGISTRY\/my-app\n\nbuild:\n  stage: build\n  script:\n    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY\n    - docker build -t $<span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\" target=\"_blank\">The image shows a close-up view of a person's hand holding a small, round object that appears to be a pill or capsule. The background is blurred, focusing attention on the hand and the object. The lighting is soft, highlighting the texture of the skin and the details of the pill. The overall mood of the image is calm and contemplative.<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">An image is a visual representation of an object or scene, typically composed of pixels in digital formats. It can convey information, evoke emotions, and facilitate communication across various media.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>:latest .\n    - docker push $<span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\" target=\"_blank\">The image shows a close-up view of a person's hand holding a small, round object that appears to be a pill or capsule. The background is blurred, focusing attention on the hand and the object. The lighting is soft, highlighting the texture of the skin and the details of the pill. The overall mood of the image is calm and contemplative.<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">An image is a visual representation of an object or scene, typically composed of pixels in digital formats. It can convey information, evoke emotions, and facilitate communication across various media.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>:latest<\/code><\/pre>\n<h3>Explanation<\/h3>\n<ul>\n<li>\n<p><strong><code><span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\" target=\"_blank\">The image shows a close-up view of a person's hand holding a small, round object that appears to be a pill or capsule. The background is blurred, focusing attention on the hand and the object. The lighting is soft, highlighting the texture of the skin and the details of the pill. The overall mood of the image is calm and contemplative.<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">An image is a visual representation of an object or scene, typically composed of pixels in digital formats. It can convey information, evoke emotions, and facilitate communication across various media.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span><\/code><\/strong>: This variable contains the name of the Docker <span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\" target=\"_blank\">imagen<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">An image is a visual representation of an object or scene, typically composed of pixels in digital formats. It can convey information, evoke emotions, and facilitate communication across various media.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>, including the GitLab <span class=\"glossaryai-tooltip glossary-term-658\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/registry\/\" target=\"_blank\">registry<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Un registro es una base de datos centralizada que almacena informaci\u00f3n sobre diversas entidades, como instalaciones de software, configuraciones del sistema o datos de usuario. Es un componente fundamental para la gesti\u00f3n y configuraci\u00f3n del sistema.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/registry\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> URL.<\/p>\n<\/li>\n<li>\n<p><strong><code>docker login<\/code><\/strong>: This command logs into the GitLab <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\" target=\"_blank\">contenedor<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> <span class=\"glossaryai-tooltip glossary-term-658\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/registry\/\" target=\"_blank\">registry<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Un registro es una base de datos centralizada que almacena informaci\u00f3n sobre diversas entidades, como instalaciones de software, configuraciones del sistema o datos de usuario. Es un componente fundamental para la gesti\u00f3n y configuraci\u00f3n del sistema.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/registry\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> using the CI job token, which allows you to push images to the <span class=\"glossaryai-tooltip glossary-term-658\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/registry\/\" target=\"_blank\">registry<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Un registro es una base de datos centralizada que almacena informaci\u00f3n sobre diversas entidades, como instalaciones de software, configuraciones del sistema o datos de usuario. Es un componente fundamental para la gesti\u00f3n y configuraci\u00f3n del sistema.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/registry\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> securely.<\/p>\n<\/li>\n<li>\n<p><strong><code>docker push\n\nDescripci\u00f3n\nUtilice docker push para compartir sus im\u00e1genes en el registro. El nombre de una imagen consta de partes separadas por barras diagonales (\/), cada una de hasta 255 caracteres, que se convierten en una ruta jer\u00e1rquica en el registro. El nombre de la imagen tambi\u00e9n puede incluir un nombre de host y un puerto (por ejemplo, localhost:5000\/myapp). Si no se especifica un nombre de host, se asume que el registro es Docker Hub. Si no se especifica un puerto, se asume que es el puerto 443.\n\nSi no se especifica una etiqueta, se utiliza la etiqueta \"latest\". Para etiquetar una imagen, utilice docker tag.\n\nOpciones\n--disable-content-trust: Omitir la firma de la imagen (por defecto: true)<\/code><\/strong>: After building the <span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\" target=\"_blank\">imagen<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">An image is a visual representation of an object or scene, typically composed of pixels in digital formats. It can convey information, evoke emotions, and facilitate communication across various media.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>, we push it to the GitLab <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\" target=\"_blank\">contenedor<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> <span class=\"glossaryai-tooltip glossary-term-658\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/registry\/\" target=\"_blank\">registry<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Un registro es una base de datos centralizada que almacena informaci\u00f3n sobre diversas entidades, como instalaciones de software, configuraciones del sistema o datos de usuario. Es un componente fundamental para la gesti\u00f3n y configuraci\u00f3n del sistema.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/registry\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>.<\/p>\n<\/li>\n<\/ul>\n<h3>Step 3: Using Docker Compose<\/h3>\n<p>For applications that require multiple services (such as databases, caches, etc.), using <span class=\"glossaryai-tooltip glossary-term-654\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/docker-compose\/\" target=\"_blank\">Docker Compose<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker multi-contenedor mediante un archivo YAML. Simplifica la implementaci\u00f3n, configuraci\u00f3n y orquestaci\u00f3n de servicios, mejorando la eficiencia en el desarrollo.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/docker-compose\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> puede simplificar <span class=\"glossaryai-tooltip glossary-term-657\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/orchestration\/\" target=\"_blank\">orchestration<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Orchestration refers to the automated management and coordination of complex systems and services. It optimizes processes by integrating various components, ensuring efficient operation and resource utilization.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/orchestration\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>. You can integrate <span class=\"glossaryai-tooltip glossary-term-654\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/docker-compose\/\" target=\"_blank\">Docker Compose<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker multi-contenedor mediante un archivo YAML. Simplifica la implementaci\u00f3n, configuraci\u00f3n y orquestaci\u00f3n de servicios, mejorando la eficiencia en el desarrollo.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/docker-compose\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> in your GitLab CI\/CD pipeline as follows:<\/p>\n<ol>\n<li>Crear un <code>docker-compose.yml<\/code> archivo en el directorio ra\u00edz de tu proyecto.<\/li>\n<\/ol>\n<pre><code class=\"language-yaml\">version: '3'\nservices:\n  web:\n    build: .\n    ports:\n      - \"8080:80\"\n  db:\n    <span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\" target=\"_blank\">imagen<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">An image is a visual representation of an object or scene, typically composed of pixels in digital formats. It can convey information, evoke emotions, and facilitate communication across various media.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>: postgres:latest\n    environment:\n      POSTGRES_USER: user\n      POSTGRES_PASSWORD: password<\/code><\/pre>\n<ol start=\"2\">\n<li>Actualiza tu <code>.gitlab-ci.yml<\/code> file to use <span class=\"glossaryai-tooltip glossary-term-654\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/docker-compose\/\" target=\"_blank\">Docker Compose<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker multi-contenedor mediante un archivo YAML. Simplifica la implementaci\u00f3n, configuraci\u00f3n y orquestaci\u00f3n de servicios, mejorando la eficiencia en el desarrollo.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/docker-compose\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>:<\/li>\n<\/ol>\n<pre><code class=\"language-yaml\">construcci\u00f3n:\n  etapa: construcci\u00f3n\n  script:\n    - docker-compose build\n\nprueba:\n  etapa: prueba\n  script:\n    - docker-compose up -d\n    - docker-compose exec web .\/run_tests.sh\n    - docker-compose down<\/code><\/pre>\n<h3>Explanation<\/h3>\n<ul>\n<li>\n<p><strong><code>docker-compose build<\/code><\/strong>Este comando construye todos los servicios definidos en el archivo docker-compose.yml. <code>docker-compose.yml<\/code> archivo.<\/p>\n<\/li>\n<li>\n<p><strong><code>docker-compose iniciar -d<\/code><\/strong>Inicia los servicios definidos en <code>docker-compose.yml<\/code> en modo desacoplado.<\/p>\n<\/li>\n<li>\n<p><strong><code>docker-compose exec<\/code><\/strong>Ejecuta comandos durante la ejecuci\u00f3n. <span class=\"glossaryai-tooltip glossary-term-681\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/service\/\" target=\"_blank\">servicio<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Service refers to the act of providing assistance or support to fulfill specific needs or requirements. In various domains, it encompasses customer service, technical support, and professional services, emphasizing efficiency and user satisfaction.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/service\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\" target=\"_blank\">contenedor<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> (in this case, executing tests).<\/p>\n<\/li>\n<li>\n<p><strong><code>docker-compose down<\/code><\/strong>Detiene y elimina los contenedores definidos en el <code>docker-compose.yml<\/code>.<\/p>\n<\/li>\n<\/ul>\n<h2>Mejores Pr\u00e1cticas para Usar Docker en GitLab CI\/CD<\/h2>\n<ol>\n<li><strong>Utilice compilaciones multietapa<\/strong>: Las compilaciones de varias etapas pueden ayudar a reducir el tama\u00f1o de tus im\u00e1genes Docker al permitirte separar el entorno de compilaci\u00f3n del entorno de ejecuci\u00f3n. Esto puede disminuir significativamente los tiempos de despliegue y mejorar la seguridad:<\/li>\n<\/ol>\n<pre><code class=\"language-dockerfile\"># Primera etapa: construcci\u00f3n FROM <span class=\"glossaryai-tooltip glossary-term-684\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/node\/\" target=\"_blank\">nodo<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Node, o Node.js, es un entorno de ejecuci\u00f3n de JavaScript basado en el motor V8 de Chrome, que permite la programaci\u00f3n del lado del servidor. Permite a los desarrolladores construir aplicaciones de red escalables utilizando una arquitectura as\u00edncrona basada en eventos.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/node\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>:16 COMO construcci\u00f3n\n<span class=\"glossaryai-tooltip glossary-term-675\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/workdir\/\" target=\"_blank\">WORKDIR<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">La instrucci\u00f3n `WORKDIR` en Dockerfile establece el directorio de trabajo para las instrucciones posteriores. Simplifica la gesti\u00f3n de rutas, ya que todas las rutas relativas se resolver\u00e1n desde este directorio, mejorando la claridad de la compilaci\u00f3n.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/workdir\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> \/app\n<span class=\"glossaryai-tooltip glossary-term-673\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/copy\/\" target=\"_blank\">COPIA<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">COPY is a command in computer programming and data management that facilitates the duplication of files or data from one location to another, ensuring data integrity and accessibility.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/copy\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> . .\n<span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/run\/\" target=\"_blank\">CORRE<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" refers to a command in various programming languages and operating systems to execute a specified program or script. It initiates processes, providing a controlled environment for task execution.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> npm install &amp;&amp; npm <span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/run\/\" target=\"_blank\">run<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" refers to a command in various programming languages and operating systems to execute a specified program or script. It initiates processes, providing a controlled environment for task execution.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> build\n\n# Second stage: production\nFROM nginx:alpine\n<span class=\"glossaryai-tooltip glossary-term-673\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/copy\/\" target=\"_blank\">COPIA<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">COPY is a command in computer programming and data management that facilitates the duplication of files or data from one location to another, ensuring data integrity and accessibility.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/copy\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> --from=build \/app\/dist \/usr\/share\/nginx\/html<\/code><\/pre>\n<ol start=\"2\">\n<li>\n<p><strong>Use Caching Wisely<\/strong>Para acelerar el proceso de compilaci\u00f3n, aprovecha los mecanismos de cach\u00e9 de Docker. Por ejemplo, ordenando tus <code><span class=\"glossaryai-tooltip glossary-term-652\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/dockerfile\/\" target=\"_blank\">Dockerfile<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Un Dockerfile es un script que contiene una serie de instrucciones para automatizar la creaci\u00f3n de im\u00e1genes Docker. Especifica la imagen base, las dependencias de la aplicaci\u00f3n y la configuraci\u00f3n, facilitando el despliegue consistente en diferentes entornos.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/dockerfile\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span><\/code> Seguir las instrucciones correctamente puede permitir que Docker almacene en cach\u00e9 las capas de manera efectiva.<\/p>\n<\/li>\n<li>\n<p><strong>Limitar el Uso de Recursos<\/strong>En las canalizaciones de integraci\u00f3n continua (CI), especialmente cuando se ejecutan m\u00faltiples trabajos en paralelo, es fundamental limitar el uso de recursos. Puedes especificar l\u00edmites de recursos en tus trabajos:\n\n```yaml\njobs:\n  build:\n    resource_limits:\n      cpu: 2\n      memory: 4G\n```\n\nEsto garantiza que ning\u00fan trabajo consuma demasiados recursos, lo que podr\u00eda afectar el rendimiento de otros trabajos en la canalizaci\u00f3n.<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"language-yaml\">build:\n  stage: build\n  script:\n    - docker build -t my-app:latest .\n  resource_requests:\n    memory: 512Mi\n    cpu: \"1\"<\/code><\/pre>\n<ol start=\"4\">\n<li><strong>Recursos de limpieza<\/strong>Para evitar agotar todo el almacenamiento y la memoria disponibles en los ejecutores de CI, aseg\u00farate de limpiar regularmente las im\u00e1genes y contenedores no utilizados. Puedes <span class=\"glossaryai-tooltip glossary-term-674\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/add\/\" target=\"_blank\">a\u00f1adir<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">La instrucci\u00f3n ADD en Docker es un comando utilizado en Dockerfiles para copiar archivos y directorios desde una m\u00e1quina anfitriona hacia una imagen de Docker durante el proceso de construcci\u00f3n. No solo facilita la transferencia de archivos locales, sino que tambi\u00e9n proporciona funcionalidades adicionales, como extraer autom\u00e1ticamente archivos comprimidos y obtener archivos remotos a trav\u00e9s de HTTP o HTTPS.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/add\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> a job to your <code>.gitlab-ci.yml<\/code> eliminar im\u00e1genes colgantes<\/li>\n<\/ol>\n<pre><code class=\"language-yaml\">cleanup:\n  stage: cleanup\n  script:\n    - docker rmi $(docker images -f \"dangling=true\" -q) || true<\/code><\/pre>\n<ol start=\"5\">\n<li><strong>Utiliza etiquetas para el versionado\n\nEl versionado es una parte importante del desarrollo de software. Permite realizar un seguimiento de los cambios en el c\u00f3digo y revertir a versiones anteriores si es necesario. Git proporciona una forma conveniente de etiquetar versiones espec\u00edficas de tu c\u00f3digo con etiquetas.\n\nLas etiquetas son referencias inmutables a puntos espec\u00edficos en la historia de tu repositorio. Se utilizan com\u00fanmente para marcar lanzamientos de software, como v1.0, v2.0, etc. Las etiquetas pueden ser anotadas o ligeras.\n\nLas etiquetas anotadas son objetos completos en la base de datos de Git. Contienen el nombre del etiquetador, correo electr\u00f3nico, fecha, mensaje de etiquetado y un checksum SHA-1. Las etiquetas ligeras son simplemente punteros a una confirmaci\u00f3n espec\u00edfica.\n\nPara crear una etiqueta anotada, utiliza el comando git tag con la opci\u00f3n -a:\n\n```\ngit tag -a v1.0 -m \"Versi\u00f3n 1.0\"\n```\n\nEsto crea una etiqueta anotada llamada v1.0 con el mensaje \"Versi\u00f3n 1.0\". Puedes ver la etiqueta con el comando git show:\n\n```\ngit show v1.0\n```\n\nPara crear una etiqueta ligera, omite la opci\u00f3n -a:\n\n```\ngit tag v1.0\n```\n\nPara ver una lista de todas las etiquetas, utiliza el comando git tag sin argumentos:\n\n```\ngit tag\n```\n\nTambi\u00e9n puedes buscar etiquetas que coincidan con un patr\u00f3n espec\u00edfico utilizando la opci\u00f3n -l:\n\n```\ngit tag -l \"v1.*\"\n```\n\nEsto mostrar\u00e1 todas las etiquetas que comiencen con \"v1.\".\n\nLas etiquetas son \u00fatiles para marcar lanzamientos de software y facilitar el seguimiento de versiones espec\u00edficas de tu c\u00f3digo. Tambi\u00e9n se pueden utilizar para crear ramas a partir de una etiqueta espec\u00edfica, lo que permite trabajar en nuevas caracter\u00edsticas o correcciones de errores sin afectar la versi\u00f3n estable del c\u00f3digo.\n\nEn resumen, las etiquetas son una herramienta poderosa para el versionado en Git. Proporcionan una forma conveniente de marcar lanzamientos de software y realizar un seguimiento de versiones espec\u00edficas de tu c\u00f3digo. Utiliza etiquetas anotadas para obtener informaci\u00f3n adicional sobre la etiqueta, como el nombre del etiquetador, correo electr\u00f3nico y mensaje de etiquetado.<\/strong>: Implementa el etiquetado de tus im\u00e1genes Docker en el proceso de CI\/CD. Esta pr\u00e1ctica ayuda a mantener el control de versiones y facilita la reversi\u00f3n a versiones anteriores.<\/li>\n<\/ol>\n<pre><code class=\"language-yaml\">build:\n  stage: build\n  script:\n    - docker build -t $<span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\" target=\"_blank\">The image shows a close-up view of a person's hand holding a small, round object that appears to be a pill or capsule. The background is blurred, focusing attention on the hand and the object. The lighting is soft, highlighting the texture of the skin and the details of the pill. The overall mood of the image is calm and contemplative.<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">An image is a visual representation of an object or scene, typically composed of pixels in digital formats. It can convey information, evoke emotions, and facilitate communication across various media.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/es\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>:$CI_COMMIT_TAG .<\/code><\/pre>\n<h2>Conclusi\u00f3n<\/h2>\n<p>La integraci\u00f3n de Docker en las canalizaciones de GitLab CI\/CD ofrece ventajas significativas en t\u00e9rminos de consistencia, velocidad y escalabilidad. Siguiendo las mejores pr\u00e1cticas y aprovechando las capacidades de Docker, los equipos pueden mejorar sus flujos de trabajo de desarrollo, potenciar los procesos de prueba y agilizar los despliegues. A medida que el panorama del software contin\u00faa evolucionando, dominar Docker en conjunto con GitLab CI\/CD seguir\u00e1 siendo crucial para las organizaciones que buscan agilidad y fiabilidad en sus procesos de desarrollo. <\/p>\n<p>Con estas perspectivas y configuraciones en su lugar, deber\u00edas estar bien preparado para implementar Docker de manera efectiva en tus pipelines de GitLab CI\/CD, lo que finalmente conducir\u00e1 a un ciclo de vida de entrega de software m\u00e1s eficiente y robusto.<\/p>","protected":false},"excerpt":{"rendered":"<p>Integrating Docker in GitLab CI\/CD pipelines streamlines the development workflow by enabling consistent environments, faster builds, and simplified dependency management, enhancing overall efficiency.<\/p>","protected":false},"author":1,"featured_media":1063,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29],"tags":[],"class_list":["post-612","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ci-cd-with-docker"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Integrating Docker in GitLab CI\/CD Pipelines for Enhanced Efficiency - Dockerpros<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dockerpros.com\/es\/ci-cd-con-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Integrating Docker in GitLab CI\/CD Pipelines for Enhanced Efficiency - Dockerpros\" \/>\n<meta property=\"og:description\" content=\"Integrating Docker in GitLab CI\/CD pipelines streamlines the development workflow by enabling consistent environments, faster builds, and simplified dependency management, enhancing overall efficiency.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dockerpros.com\/es\/ci-cd-con-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/\" \/>\n<meta property=\"og:site_name\" content=\"Dockerpros\" \/>\n<meta property=\"article:published_time\" content=\"2024-07-22T12:35:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency_612.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"dockerpros\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"dockerpros\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/\"},\"author\":{\"name\":\"dockerpros\",\"@id\":\"https:\/\/dockerpros.com\/#\/schema\/person\/a9b4c3d7f7a8e2b072e77d47b382a3a4\"},\"headline\":\"Integrating Docker in GitLab CI\/CD Pipelines for Enhanced Efficiency\",\"datePublished\":\"2024-07-22T12:35:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/\"},\"wordCount\":988,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/dockerpros.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency_612.jpg\",\"articleSection\":[\"CI\/CD with Docker\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/\",\"url\":\"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/\",\"name\":\"Integrating Docker in GitLab CI\/CD Pipelines for Enhanced Efficiency - Dockerpros\",\"isPartOf\":{\"@id\":\"https:\/\/dockerpros.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency_612.jpg\",\"datePublished\":\"2024-07-22T12:35:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#primaryimage\",\"url\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency_612.jpg\",\"contentUrl\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency_612.jpg\",\"width\":800,\"height\":600,\"caption\":\"integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency-2\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/dockerpros.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integrating Docker in GitLab CI\/CD Pipelines for Enhanced Efficiency\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dockerpros.com\/#website\",\"url\":\"https:\/\/dockerpros.com\/\",\"name\":\"Dockerpros\",\"description\":\"DockerPros \u2013 Your Ultimate Docker Resource Hub\",\"publisher\":{\"@id\":\"https:\/\/dockerpros.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dockerpros.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/dockerpros.com\/#organization\",\"name\":\"Dockerpros\",\"url\":\"https:\/\/dockerpros.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/dockerpros.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/Dockerpros_logo_blanco.png\",\"contentUrl\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/Dockerpros_logo_blanco.png\",\"width\":532,\"height\":114,\"caption\":\"Dockerpros\"},\"image\":{\"@id\":\"https:\/\/dockerpros.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/dockerpros.com\/#\/schema\/person\/a9b4c3d7f7a8e2b072e77d47b382a3a4\",\"name\":\"dockerpros\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/dockerpros.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/dockerpros.com\/wp-content\/litespeed\/avatar\/d13b9d4f101de1a7535b404e0c59affd.jpg?ver=1781786904\",\"contentUrl\":\"https:\/\/dockerpros.com\/wp-content\/litespeed\/avatar\/d13b9d4f101de1a7535b404e0c59affd.jpg?ver=1781786904\",\"caption\":\"dockerpros\"},\"sameAs\":[\"https:\/\/dockerpros.com\/\"],\"url\":\"https:\/\/dockerpros.com\/es\/author\/dockerpros\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Integrating Docker in GitLab CI\/CD Pipelines for Enhanced Efficiency - Dockerpros\n\nIntegrating Docker in GitLab CI\/CD Pipelines for Enhanced Efficiency\n\nIn today's fast-paced software development landscape, efficiency and automation are key to delivering high-quality applications quickly. GitLab, a popular web-based DevOps platform, offers a robust Continuous Integration\/Continuous Deployment (CI\/CD) pipeline that can be further enhanced by integrating Docker, a leading containerization platform. This article explores how to seamlessly integrate Docker into GitLab CI\/CD pipelines to boost efficiency and streamline the development process.\n\nBenefits of Docker Integration in GitLab CI\/CD\n\n1. Consistent Environment: Docker containers ensure that your application runs consistently across different environments, from development to production.\n\n2. Faster Builds: Docker's layered filesystem and caching mechanisms can significantly speed up build times in your CI\/CD pipeline.\n\n3. Scalability: Docker containers are lightweight and can be easily scaled, allowing for parallel execution of tests and deployments.\n\n4. Isolation: Each stage of your pipeline can run in its own isolated container, preventing conflicts between dependencies and ensuring a clean environment for each step.\n\nSetting Up Docker in GitLab CI\/CD\n\nTo integrate Docker into your GitLab CI\/CD pipeline, follow these steps:\n\n1. Install Docker on your GitLab Runner:\n   Ensure that Docker is installed on the machine running your GitLab Runner. You can use the official Docker installation guide for your specific operating system.\n\n2. Configure GitLab Runner to use Docker:\n   In your GitLab Runner configuration file (config.toml), add the following lines to enable Docker support:\n\n   ```\n   [[runners]]\n     executor = \"docker\"\n     [runners.docker]\n       image = \"docker:latest\"\n       privileged = true\n   ```\n\n   The `privileged` flag is necessary to allow the Docker daemon to run inside the container.\n\n3. Create a .gitlab-ci.yml file:\n   In your project's root directory, create a .gitlab-ci.yml file to define your CI\/CD pipeline. Here's an example that demonstrates Docker integration:\n\n   ```yaml\n   stages:\n     - build\n     - test\n     - deploy\n\n   build:\n     stage: build\n     image: docker:latest\n     services:\n       - docker:dind\n     script:\n       - docker build -t my-app .\n       - docker save -o my-app.tar my-app\n     artifacts:\n       paths:\n         - my-app.tar\n\n   test:\n     stage: test\n     image: docker:latest\n     services:\n       - docker:dind\n     script:\n       - docker load -i my-app.tar\n       - docker run my-app npm test\n\n   deploy:\n     stage: deploy\n     image: docker:latest\n     services:\n       - docker:dind\n     script:\n       - docker load -i my-app.tar\n       - docker tag my-app registry.example.com\/my-app:latest\n       - docker push registry.example.com\/my-app:latest\n   ```\n\n   In this example, we define three stages: build, test, and deploy. Each stage uses the `docker:latest` image and the `docker:dind` service to run Docker commands inside the container.\n\n   - In the build stage, we build the Docker image using the `docker build` command and save it as an artifact using `docker save`.\n   - In the test stage, we load the saved image using `docker load` and run the tests inside the container using `docker run`.\n   - In the deploy stage, we load the image, tag it with the registry URL, and push it to the registry using `docker push`.\n\n4. Configure Docker Registry (Optional):\n   If you want to push your Docker images to a private registry, you need to configure the registry credentials in GitLab. Go to your project's Settings &gt; CI\/CD &gt; Variables and add the following variables:\n\n   - `DOCKER_REGISTRY`: The URL of your Docker registry.\n   - `DOCKER_USERNAME`: The username for your Docker registry.\n   - `DOCKER_PASSWORD`: The password for your Docker registry.\n\n   Then, modify the deploy stage in your .gitlab-ci.yml file to use these variables:\n\n   ```yaml\n   deploy:\n     stage: deploy\n     image: docker:latest\n     services:\n       - docker:dind\n     before_script:\n       - docker login -u \"$DOCKER_USERNAME\" -p \"$DOCKER_PASSWORD\" \"$DOCKER_REGISTRY\"\n     script:\n       - docker load -i my-app.tar\n       - docker tag my-app \"$DOCKER_REGISTRY\"\/my-app:latest\n       - docker push \"$DOCKER_REGISTRY\"\/my-app:latest\n   ```\n\nBest Practices for Docker Integration in GitLab CI\/CD\n\n1. Use Multi-Stage Builds: Leverage Docker's multi-stage build feature to optimize your Docker images and reduce their size.\n\n2. Leverage Docker Layer Caching: Take advantage of Docker's layer caching to speed up build times by reusing unchanged layers.\n\n3. Use Docker Compose: If your application consists of multiple services, consider using Docker Compose to define and manage the services in your pipeline.\n\n4. Secure Your Docker Images: Implement security best practices, such as using minimal base images, scanning for vulnerabilities, and regularly updating dependencies.\n\n5. Monitor and Optimize: Continuously monitor your pipeline's performance and optimize it based on metrics like build times, resource utilization, and error rates.\n\nConclusion\n\nIntegrating Docker into your GitLab CI\/CD pipeline can significantly enhance efficiency and streamline your development process. By leveraging Docker's containerization capabilities, you can ensure consistent environments, faster builds, scalability, and isolation throughout your pipeline. With the steps outlined in this article and best practices in mind, you can seamlessly integrate Docker into your GitLab CI\/CD workflow and unlock the full potential of your development pipeline.","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:\/\/dockerpros.com\/es\/ci-cd-con-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/","og_locale":"es_ES","og_type":"article","og_title":"Integrating Docker in GitLab CI\/CD Pipelines for Enhanced Efficiency - Dockerpros","og_description":"Integrating Docker in GitLab CI\/CD pipelines streamlines the development workflow by enabling consistent environments, faster builds, and simplified dependency management, enhancing overall efficiency.","og_url":"https:\/\/dockerpros.com\/es\/ci-cd-con-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/","og_site_name":"Dockerpros","article_published_time":"2024-07-22T12:35:38+00:00","og_image":[{"width":800,"height":600,"url":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency_612.jpg","type":"image\/jpeg"}],"author":"dockerpros","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"dockerpros","Tiempo de lectura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#article","isPartOf":{"@id":"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/"},"author":{"name":"dockerpros","@id":"https:\/\/dockerpros.com\/#\/schema\/person\/a9b4c3d7f7a8e2b072e77d47b382a3a4"},"headline":"Integrating Docker in GitLab CI\/CD Pipelines for Enhanced Efficiency","datePublished":"2024-07-22T12:35:38+00:00","mainEntityOfPage":{"@id":"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/"},"wordCount":988,"commentCount":0,"publisher":{"@id":"https:\/\/dockerpros.com\/#organization"},"image":{"@id":"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#primaryimage"},"thumbnailUrl":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency_612.jpg","articleSection":["CI\/CD with Docker"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/","url":"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/","name":"Integrating Docker in GitLab CI\/CD Pipelines for Enhanced Efficiency - Dockerpros\n\nIntegrating Docker in GitLab CI\/CD Pipelines for Enhanced Efficiency\n\nIn today's fast-paced software development landscape, efficiency and automation are key to delivering high-quality applications quickly. GitLab, a popular web-based DevOps platform, offers a robust Continuous Integration\/Continuous Deployment (CI\/CD) pipeline that can be further enhanced by integrating Docker, a leading containerization platform. This article explores how to seamlessly integrate Docker into GitLab CI\/CD pipelines to boost efficiency and streamline the development process.\n\nBenefits of Docker Integration in GitLab CI\/CD\n\n1. Consistent Environment: Docker containers ensure that your application runs consistently across different environments, from development to production.\n\n2. Faster Builds: Docker's layered filesystem and caching mechanisms can significantly speed up build times in your CI\/CD pipeline.\n\n3. Scalability: Docker containers are lightweight and can be easily scaled, allowing for parallel execution of tests and deployments.\n\n4. Isolation: Each stage of your pipeline can run in its own isolated container, preventing conflicts between dependencies and ensuring a clean environment for each step.\n\nSetting Up Docker in GitLab CI\/CD\n\nTo integrate Docker into your GitLab CI\/CD pipeline, follow these steps:\n\n1. Install Docker on your GitLab Runner:\n   Ensure that Docker is installed on the machine running your GitLab Runner. You can use the official Docker installation guide for your specific operating system.\n\n2. Configure GitLab Runner to use Docker:\n   In your GitLab Runner configuration file (config.toml), add the following lines to enable Docker support:\n\n   ```\n   [[runners]]\n     executor = \"docker\"\n     [runners.docker]\n       image = \"docker:latest\"\n       privileged = true\n   ```\n\n   The `privileged` flag is necessary to allow the Docker daemon to run inside the container.\n\n3. Create a .gitlab-ci.yml file:\n   In your project's root directory, create a .gitlab-ci.yml file to define your CI\/CD pipeline. Here's an example that demonstrates Docker integration:\n\n   ```yaml\n   stages:\n     - build\n     - test\n     - deploy\n\n   build:\n     stage: build\n     image: docker:latest\n     services:\n       - docker:dind\n     script:\n       - docker build -t my-app .\n       - docker save -o my-app.tar my-app\n     artifacts:\n       paths:\n         - my-app.tar\n\n   test:\n     stage: test\n     image: docker:latest\n     services:\n       - docker:dind\n     script:\n       - docker load -i my-app.tar\n       - docker run my-app npm test\n\n   deploy:\n     stage: deploy\n     image: docker:latest\n     services:\n       - docker:dind\n     script:\n       - docker load -i my-app.tar\n       - docker tag my-app registry.example.com\/my-app:latest\n       - docker push registry.example.com\/my-app:latest\n   ```\n\n   In this example, we define three stages: build, test, and deploy. Each stage uses the `docker:latest` image and the `docker:dind` service to run Docker commands inside the container.\n\n   - In the build stage, we build the Docker image using the `docker build` command and save it as an artifact using `docker save`.\n   - In the test stage, we load the saved image using `docker load` and run the tests inside the container using `docker run`.\n   - In the deploy stage, we load the image, tag it with the registry URL, and push it to the registry using `docker push`.\n\n4. Configure Docker Registry (Optional):\n   If you want to push your Docker images to a private registry, you need to configure the registry credentials in GitLab. Go to your project's Settings &gt; CI\/CD &gt; Variables and add the following variables:\n\n   - `DOCKER_REGISTRY`: The URL of your Docker registry.\n   - `DOCKER_USERNAME`: The username for your Docker registry.\n   - `DOCKER_PASSWORD`: The password for your Docker registry.\n\n   Then, modify the deploy stage in your .gitlab-ci.yml file to use these variables:\n\n   ```yaml\n   deploy:\n     stage: deploy\n     image: docker:latest\n     services:\n       - docker:dind\n     before_script:\n       - docker login -u \"$DOCKER_USERNAME\" -p \"$DOCKER_PASSWORD\" \"$DOCKER_REGISTRY\"\n     script:\n       - docker load -i my-app.tar\n       - docker tag my-app \"$DOCKER_REGISTRY\"\/my-app:latest\n       - docker push \"$DOCKER_REGISTRY\"\/my-app:latest\n   ```\n\nBest Practices for Docker Integration in GitLab CI\/CD\n\n1. Use Multi-Stage Builds: Leverage Docker's multi-stage build feature to optimize your Docker images and reduce their size.\n\n2. Leverage Docker Layer Caching: Take advantage of Docker's layer caching to speed up build times by reusing unchanged layers.\n\n3. Use Docker Compose: If your application consists of multiple services, consider using Docker Compose to define and manage the services in your pipeline.\n\n4. Secure Your Docker Images: Implement security best practices, such as using minimal base images, scanning for vulnerabilities, and regularly updating dependencies.\n\n5. Monitor and Optimize: Continuously monitor your pipeline's performance and optimize it based on metrics like build times, resource utilization, and error rates.\n\nConclusion\n\nIntegrating Docker into your GitLab CI\/CD pipeline can significantly enhance efficiency and streamline your development process. By leveraging Docker's containerization capabilities, you can ensure consistent environments, faster builds, scalability, and isolation throughout your pipeline. With the steps outlined in this article and best practices in mind, you can seamlessly integrate Docker into your GitLab CI\/CD workflow and unlock the full potential of your development pipeline.","isPartOf":{"@id":"https:\/\/dockerpros.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#primaryimage"},"image":{"@id":"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#primaryimage"},"thumbnailUrl":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency_612.jpg","datePublished":"2024-07-22T12:35:38+00:00","breadcrumb":{"@id":"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#primaryimage","url":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency_612.jpg","contentUrl":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency_612.jpg","width":800,"height":600,"caption":"integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency-2"},{"@type":"BreadcrumbList","@id":"https:\/\/dockerpros.com\/fr\/ci-cd-avec-docker\/integrating-docker-in-gitlab-ci-cd-pipelines-for-enhanced-efficiency\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dockerpros.com\/"},{"@type":"ListItem","position":2,"name":"Integrating Docker in GitLab CI\/CD Pipelines for Enhanced Efficiency"}]},{"@type":"WebSite","@id":"https:\/\/dockerpros.com\/#website","url":"https:\/\/dockerpros.com\/","name":"Profesionales de Docker","description":"DockerPros \u2013 Tu centro definitivo de recursos Docker","publisher":{"@id":"https:\/\/dockerpros.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dockerpros.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/dockerpros.com\/#organization","name":"Profesionales de Docker","url":"https:\/\/dockerpros.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/dockerpros.com\/#\/schema\/logo\/image\/","url":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/Dockerpros_logo_blanco.png","contentUrl":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/Dockerpros_logo_blanco.png","width":532,"height":114,"caption":"Dockerpros"},"image":{"@id":"https:\/\/dockerpros.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/dockerpros.com\/#\/schema\/person\/a9b4c3d7f7a8e2b072e77d47b382a3a4","name":"profesionales de Docker","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/dockerpros.com\/#\/schema\/person\/image\/","url":"https:\/\/dockerpros.com\/wp-content\/litespeed\/avatar\/d13b9d4f101de1a7535b404e0c59affd.jpg?ver=1781786904","contentUrl":"https:\/\/dockerpros.com\/wp-content\/litespeed\/avatar\/d13b9d4f101de1a7535b404e0c59affd.jpg?ver=1781786904","caption":"dockerpros"},"sameAs":["https:\/\/dockerpros.com\/"],"url":"https:\/\/dockerpros.com\/es\/author\/dockerpros\/"}]}},"_links":{"self":[{"href":"https:\/\/dockerpros.com\/es\/wp-json\/wp\/v2\/posts\/612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dockerpros.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dockerpros.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dockerpros.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dockerpros.com\/es\/wp-json\/wp\/v2\/comments?post=612"}],"version-history":[{"count":0,"href":"https:\/\/dockerpros.com\/es\/wp-json\/wp\/v2\/posts\/612\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dockerpros.com\/es\/wp-json\/wp\/v2\/media\/1063"}],"wp:attachment":[{"href":"https:\/\/dockerpros.com\/es\/wp-json\/wp\/v2\/media?parent=612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dockerpros.com\/es\/wp-json\/wp\/v2\/categories?post=612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dockerpros.com\/es\/wp-json\/wp\/v2\/tags?post=612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}