{"id":36772,"date":"2019-10-31T22:13:44","date_gmt":"2019-10-31T19:13:44","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ponimaya-docker\/"},"modified":"2019-10-31T22:13:44","modified_gmt":"2019-10-31T19:13:44","slug":"ponimaya-docker","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/ponimaya-docker","title":{"rendered":"Entendiendo Docker","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>He estado utilizando Docker durante varios meses para estructurar el proceso de desarrollo\/entrega de proyectos web. Les propongo a los lectores de \"Habr\" la traducci\u00f3n de un art\u00edculo introductorio sobre Docker \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/introduction\/understanding-docker\/\">\u00abUnderstanding Docker\u00bb<\/a><\/noindex>.<\/i><\/p>\n<h3>\u00bfQu\u00e9 es Docker?<\/h3>\n<p>\nDocker es una plataforma abierta para desarrollar, entregar y operar aplicaciones. Docker est\u00e1 dise\u00f1ado para facilitar el despliegue de tus aplicaciones. Con Docker, puedes separar tu aplicaci\u00f3n de tu infraestructura y tratar la infraestructura como una aplicaci\u00f3n gestionada. Docker ayuda a desplegar tu c\u00f3digo m\u00e1s r\u00e1pidamente, probar m\u00e1s r\u00e1pido, lanzar aplicaciones m\u00e1s r\u00e1pido y reducir el tiempo entre escribir y ejecutar c\u00f3digo. Docker lo hace mediante una plataforma ligera de virtualizaci\u00f3n de contenedores, utilizando procesos y herramientas que ayudan a gestionar y desplegar tus aplicaciones.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nEn su n\u00facleo, Docker permite ejecutar casi cualquier aplicaci\u00f3n, aisladamente y de manera segura dentro de un contenedor. Este aislamiento seguro te permite ejecutar m\u00faltiples contenedores simult\u00e1neamente en un solo host. La naturaleza ligera del contenedor, que se ejecuta sin la sobrecarga de un hipervisor, te permite aprovechar al m\u00e1ximo tu hardware.<\/p>\n<p>La plataforma y las herramientas de virtualizaci\u00f3n de contenedores pueden ser \u00fatiles en los siguientes casos:<\/p>\n<ul>\n<li>Embalaje de tu aplicaci\u00f3n (y de los componentes utilizados) en contenedores Docker;<\/li>\n<li>Distribuci\u00f3n y entrega de estos contenedores a tus equipos para desarrollo y pruebas;<\/li>\n<li>Despliegue de estos contenedores en tus entornos de producci\u00f3n, tanto en centros de datos como en la nube.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u00bfPara qu\u00e9 puedo usar Docker?<\/h3>\n<p><\/p>\n<h4>Despliegue r\u00e1pido de tus aplicaciones<\/h4>\n<p>\nDocker es ideal para organizar el ciclo de desarrollo. Docker permite a los desarrolladores utilizar contenedores locales con aplicaciones y servicios. Esto, a su vez, facilita la integraci\u00f3n con el proceso de integraci\u00f3n y despliegue continuo (continuous integration and deployment workflow).<\/p>\n<p>Por ejemplo, tus desarrolladores escriben c\u00f3digo localmente y comparten su stack de desarrollo (conjunto de im\u00e1genes de Docker) con sus colegas. Cuando est\u00e1n listos, env\u00edan el c\u00f3digo y los contenedores a un entorno de prueba y ejecutan las pruebas necesarias. Desde el entorno de prueba, pueden enviar el c\u00f3digo y las im\u00e1genes a producci\u00f3n.<\/p>\n<h4>Despliegue y lanzamiento m\u00e1s sencillo<\/h4>\n<p>\nLa plataforma basada en contenedores Docker permite portar f\u00e1cilmente su carga de trabajo. Los contenedores Docker pueden ejecutarse en su m\u00e1quina local, tanto en m\u00e1quinas reales como virtuales en un centro de datos, as\u00ed como en la nube.<\/p>\n<p>La portabilidad y la naturaleza liviana de Docker permiten gestionar din\u00e1micamente su carga de trabajo con facilidad. Puede usar Docker para implementar o apagar su aplicaci\u00f3n o servicios. La velocidad de Docker permite hacer esto casi en tiempo real.<\/p>\n<h4>Altas cargas y m\u00e1s cargas \u00fatiles.<\/h4>\n<p>\nDocker es liviano y r\u00e1pido. Ofrece una alternativa sostenible y rentable a las m\u00e1quinas virtuales basadas en hipervisores. Es especialmente \u00fatil en condiciones de alta carga, como al crear su propia nube o plataforma como servicio (platform-as-service). Pero tambi\u00e9n es beneficioso para aplicaciones peque\u00f1as y medianas, cuando desea obtener m\u00e1s de los recursos disponibles.<\/p>\n<h3>Componentes principales de Docker.<\/h3>\n<p>\nDocker consta de dos componentes principales:<\/p>\n<ul>\n<li>Docker: plataforma de virtualizaci\u00f3n de c\u00f3digo abierto;<\/li>\n<li>Docker Hub: nuestra plataforma como servicio para distribuir y gestionar contenedores Docker.<\/li>\n<\/ul>\n<p>\n<i>\u00a1Nota! Docker se distribuye bajo la licencia Apache 2.0.<\/i><\/p>\n<h3>Arquitectura de Docker.<\/h3>\n<p><\/p>\n<p>Docker utiliza una arquitectura cliente-servidor. El cliente Docker se comunica con el daemon Docker, que se encarga de crear, ejecutar y distribuir sus contenedores. Ambos, cliente y servidor pueden funcionar en el mismo sistema, puede conectar el cliente a un daemon Docker remoto. El cliente y el servidor se comunican a trav\u00e9s de un socket o mediante una API RESTful.<\/p>\n<p><img decoding=\"async\" alt=\"Entendiendo Docker\" src=\"\/wp-content\/uploads\/2019\/08\/eb67e625e776737163e49a41829ed102.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Daemon Docker.<\/h4>\n<p>\nComo se muestra en el diagrama, el daemon se ejecuta en la m\u00e1quina host. El usuario no interact\u00faa directamente con el servidor, sino que utiliza el cliente para ello.<\/p>\n<h4>Cliente Docker.<\/h4>\n<p>\nEl cliente Docker, programa Docker, es la principal interfaz con Docker. Recibe comandos del usuario e interact\u00faa con el daemon Docker.<\/p>\n<h4>Dentro de Docker.<\/h4>\n<p>\nPara entender de qu\u00e9 se compone Docker, necesita conocer tres componentes:<\/p>\n<ul>\n<li>im\u00e1genes (images)<\/li>\n<li>registros (registries)<\/li>\n<li>contenedores<\/li>\n<\/ul>\n<h4>Im\u00e1genes<\/h4>\n<p>\nLa imagen de Docker es una plantilla de solo lectura. Por ejemplo, una imagen puede contener el sistema operativo Ubuntu con Apache y una aplicaci\u00f3n sobre \u00e9l. Las im\u00e1genes se utilizan para crear contenedores. Docker permite crear f\u00e1cilmente nuevas im\u00e1genes, actualizar las existentes, o puede descargar im\u00e1genes creadas por otras personas. Las im\u00e1genes son un componente de la construcci\u00f3n de Docker.<\/p>\n<h4>Registro<\/h4>\n<p>\nEl registro de Docker almacena im\u00e1genes. Hay registros p\u00fablicos y privados desde los cuales se pueden descargar o subir im\u00e1genes. El registro p\u00fablico de Docker es <noindex><a rel=\"nofollow\" href=\"http:\/\/hub.docker.com\/\">Docker Hub<\/a><\/noindex>. All\u00ed se encuentra una enorme colecci\u00f3n de im\u00e1genes. Como saben, las im\u00e1genes pueden ser creadas por ustedes o pueden utilizar im\u00e1genes creadas por otros. Los registros son un componente de la distribuci\u00f3n.<\/p>\n<h4>Contenedores<\/h4>\n<p>\nLos contenedores son similares a carpetas. En los contenedores se encuentra todo lo necesario para que funcione una aplicaci\u00f3n. Cada contenedor se crea a partir de una imagen. Los contenedores pueden ser creados, iniciados, detenidos, trasladados o eliminados. Cada contenedor est\u00e1 aislado y es una plataforma segura para la aplicaci\u00f3n. Los contenedores son un componente del funcionamiento.<\/p>\n<h4>\u00bfC\u00f3mo funciona Docker?<\/h4>\n<p>\nHasta ahora sabemos que:<\/p>\n<ul>\n<li>podemos crear im\u00e1genes que contienen nuestras aplicaciones;<\/li>\n<li>podemos crear contenedores a partir de im\u00e1genes para ejecutar aplicaciones;<\/li>\n<li>podemos distribuir im\u00e1genes a trav\u00e9s de Docker Hub u otro registro de im\u00e1genes.<\/li>\n<\/ul>\n<p>\nVeamos c\u00f3mo se combinan estos componentes.<\/p>\n<h4>\u00bfC\u00f3mo funciona una imagen?<\/h4>\n<p>\nYa sabemos que una imagen es una plantilla de solo lectura de la cual se crea un contenedor. Cada imagen consta de un conjunto de capas. Docker utiliza <noindex><a rel=\"nofollow\" href=\"http:\/\/en.wikipedia.org\/wiki\/UnionFS\">el sistema de archivos en uni\u00f3n<\/a><\/noindex> para combinar estas capas en una sola imagen. El sistema de archivos en uni\u00f3n permite que archivos y directorios de diferentes sistemas de archivos (de diferentes ramas) se superpongan de manera transparente, creando un sistema de archivos coherente.<\/p>\n<p>Una de las razones por las que Docker es ligero es por el uso de esas capas. Cuando modifican una imagen, por ejemplo, actualizando una aplicaci\u00f3n, se crea una nueva capa. As\u00ed, sin reemplazar toda la imagen ni reconstruirla, como podr\u00edan tener que hacerlo con una m\u00e1quina virtual, solo se agrega o actualiza una capa. Y no necesitan distribuir toda la nueva imagen, solo la actualizaci\u00f3n, lo que permite distribuir im\u00e1genes de manera m\u00e1s sencilla y r\u00e1pida.<\/p>\n<p>En la base de cada imagen se encuentra una imagen base. Por ejemplo, ubuntu, la imagen base de Ubuntu, o fedora, la imagen base de la distribuci\u00f3n Fedora. Tambi\u00e9n puedes usar las im\u00e1genes como base para crear nuevas im\u00e1genes. Por ejemplo, si tienes una imagen de apache, puedes usarla como imagen base para tus aplicaciones web.<\/p>\n<p><i>\u00a1Nota! Docker normalmente toma im\u00e1genes del registro Docker Hub.<\/i><\/p>\n<p>Las im\u00e1genes de Docker pueden crearse a partir de estas im\u00e1genes base, y los pasos para crear estas im\u00e1genes los llamamos instrucciones. Cada instrucci\u00f3n crea una nueva imagen o capa. Las instrucciones ser\u00e1n las siguientes acciones:<\/p>\n<p><\/p>\n<ul>\n<li>ejecutar un comando<\/li>\n<li>agregar un archivo o directorio<\/li>\n<li>crear una variable de entorno<\/li>\n<li>indicar qu\u00e9 ejecutar cuando se inicia el contenedor de esta imagen<\/li>\n<\/ul>\n<p>Estas instrucciones se almacenan en un archivo <code>Dockerfile<\/code>. Docker lee esto <code>Dockerfile<\/code>, cuando construyes la imagen, ejecuta estas instrucciones y devuelve la imagen final.<\/p>\n<h4>\u00bfC\u00f3mo funciona el registro de docker?<\/h4>\n<p>\nEl registro es un almac\u00e9n de im\u00e1genes de docker. Despu\u00e9s de crear la imagen, puedes publicarla en el registro p\u00fablico Docker Hub o en tu registro personal.<\/p>\n<p>Con el cliente de docker, puedes buscar im\u00e1genes ya publicadas y descargarlas en tu m\u00e1quina con docker para crear contenedores.<\/p>\n<p>Docker Hub proporciona almacenes p\u00fablicos y privados de im\u00e1genes. La b\u00fasqueda y descarga de im\u00e1genes de almacenes p\u00fablicos est\u00e1 disponible para todos. El contenido de los almacenes privados no aparece en los resultados de b\u00fasqueda. Solo t\u00fa y tus usuarios pueden obtener estas im\u00e1genes y crear contenedores a partir de ellas.<\/p>\n<h4>\u00bfC\u00f3mo funciona un contenedor?<\/h4>\n<p>\nUn contenedor consiste en un sistema operativo, archivos de usuario y metadatos. Como sabemos, cada contenedor se crea a partir de una imagen. Esta imagen le dice a docker qu\u00e9 hay en el contenedor, qu\u00e9 proceso iniciar cuando se inicia el contenedor y otros datos de configuraci\u00f3n. La imagen de Docker es de solo lectura. Cuando docker inicia un contenedor, crea una capa de lectura\/escritura encima de la imagen (usando un sistema de archivos en uni\u00f3n, como se mencion\u00f3 anteriormente), donde puede ejecutarse la aplicaci\u00f3n.<\/p>\n<h4>\u00bfQu\u00e9 sucede cuando se inicia un contenedor?<\/h4>\n<p>\nYa sea mediante un programa <code>docker<\/code>, o a trav\u00e9s de la API RESTful, el cliente de docker le dice al demonio de docker que inicie el contenedor.<\/p>\n<p><code>$ sudo docker run -i -t ubuntu \/bin\/bash<br \/>\n<\/code><br \/>\nVamos a desglosar este comando. El cliente se inicia con el comando <code>docker<\/code>, con la opci\u00f3n <code>run<\/code>, que dice que se lanzar\u00e1 un nuevo contenedor. Los requisitos m\u00ednimos para iniciar el contenedor son los siguientes atributos:<\/p>\n<ul>\n<li>qu\u00e9 imagen usar para crear el contenedor. En nuestro caso <code>ubuntu<\/code><\/li>\n<li>el comando que deseas ejecutar cuando se inicie el contenedor. En nuestro caso <code>\/bin\/bash<\/code><\/li>\n<\/ul>\n<p>\u00bfQu\u00e9 ocurre detr\u00e1s de escena cuando ejecutamos este comando?<\/p>\n<p>Docker hace lo siguiente, en orden:<\/p>\n<ul>\n<li><b>descarga la imagen de ubuntu:<\/b> docker verifica si la imagen <code>ubuntu<\/code> est\u00e1 en la m\u00e1quina local, y si no est\u00e1, la descarga de <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.docker.com\/\">Docker Hub<\/a><\/noindex>. Si la imagen existe, la utiliza para crear el contenedor;<\/li>\n<li><b>crea el contenedor:<\/b> cuando se obtiene la imagen, docker la utiliza para crear el contenedor;<\/li>\n<li><b>inicializa el sistema de archivos y monta un nivel de solo lectura:<\/b> el contenedor se ha creado en el sistema de archivos y se ha a\u00f1adido el nivel de solo lectura a la imagen;<\/li>\n<li><b>inicializa la red\/puente:<\/b> crea una interfaz de red que permite a docker comunicarse con la m\u00e1quina host;<\/li>\n<li><b>Configuraci\u00f3n de la direcci\u00f3n IP:<\/b> encuentra y asigna la direcci\u00f3n;<\/li>\n<li><b>Inicia el proceso especificado:<\/b> inicia tu aplicaci\u00f3n;<\/li>\n<li><b>Procesa y emite la salida de tu aplicaci\u00f3n:<\/b> se conecta y registra la entrada est\u00e1ndar, salida y el flujo de errores de tu aplicaci\u00f3n, para que puedas rastrear c\u00f3mo funciona tu aplicaci\u00f3n.<\/li>\n<\/ul>\n<p>\nAhora tienes un contenedor funcional. Puedes gestionar tu contenedor, interactuar con tu aplicaci\u00f3n. Cuando decidas detener la aplicaci\u00f3n, elimina el contenedor.<\/p>\n<h3>Tecnolog\u00edas utilizadas<\/h3>\n<p>\nDocker est\u00e1 escrito en Go y utiliza algunas caracter\u00edsticas del n\u00facleo de Linux para implementar la funcionalidad mencionada anteriormente.<\/p>\n<h4>Espacios de nombres (namespaces)<\/h4>\n<p>\nDocker utiliza la tecnolog\u00eda de <code>namespaces<\/code> para organizar entornos de trabajo aislados, que llamamos contenedores. Cuando iniciamos un contenedor, docker crea un conjunto de espacios de nombres para ese contenedor.<\/p>\n<p>Esto crea un nivel aislado, cada aspecto del contenedor se ejecuta en su propio espacio de nombres, y no tiene acceso al sistema externo.<\/p>\n<p>Una lista de algunos espacios de nombres que usa docker:<\/p>\n<ul>\n<li><b>pid:<\/b> para la aislamiento de procesos;<\/li>\n<li><b>net:<\/b> para gestionar interfaces de red;<\/li>\n<li><b>ipc:<\/b> para gestionar recursos IPC. (ICP: Comunicaci\u00f3n Entre Procesos);<\/li>\n<li><b>mnt:<\/b> para gestionar puntos de montaje;<\/li>\n<li><b>utc:<\/b> para aislar el n\u00facleo y controlar la generaci\u00f3n de versiones (UTC: sistema de tiempo compartido Unix).<\/li>\n<\/ul>\n<h4>Grupos de control (control groups)<\/h4>\n<p>\nDocker tambi\u00e9n utiliza esta tecnolog\u00eda <code>cgroups<\/code> o grupos de control. La clave para el funcionamiento de la aplicaci\u00f3n en aislamiento es proporcionar a la aplicaci\u00f3n solo los recursos que desea ofrecer. Esto garantiza que los contenedores sean buenos vecinos. Los grupos de control permiten dividir los recursos disponibles del hardware y, si es necesario, establecer l\u00edmites y restricciones. Por ejemplo, limitar la cantidad de memoria que puede usar un contenedor.<\/p>\n<h4>Sistema de Archivos Uni&oacute;n<\/h4>\n<p>\nEl Sistema de Archivos Uni&oacute;n o UnionFS es un sistema de archivos que funciona creando capas, lo que lo hace muy liviano y r\u00e1pido. Docker utiliza UnionFS para crear bloques a partir de los cuales se construye el contenedor. Docker puede utilizar varias variantes de UnionFS, incluyendo: AUFS, btrfs, vfs y DeviceMapper.<\/p>\n<h4>Formatos de contenedores<\/h4>\n<p>\nDocker combina estos componentes en un contenedor, que llamamos formato de contenedor. El formato utilizado por defecto se llama <code>libcontainer<\/code>. Adem\u00e1s, Docker soporta el formato tradicional de contenedores en Linux a trav\u00e9s de <noindex><a rel=\"nofollow\" href=\"http:\/\/linuxcontainers.org\">LXC<\/a><\/noindex>. En el futuro, es posible que Docker admita otros formatos de contenedores, por ejemplo, integr\u00e1ndose con BSD Jails o Solaris Zones.<br \/>\n<br \/>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/253877\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e docker \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\/\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f\u043c \u00ab\u0425\u0430\u0431\u0440\u0430\u0445\u0430\u0431\u0440\u0430\u00bb \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0432\u0432\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e docker \u2014 \u00abUnderstanding docker\u00bb. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0434\u043e\u043a\u0435\u0440? \u0414\u043e\u043a\u0435\u0440 \u2014 \u044d\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. Docker \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e docker \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0442 \u0432\u0430\u0448\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36772","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0423\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e docker \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\/\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/ponimaya-docker\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u043e\u043d\u0438\u043c\u0430\u044f Docker | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e docker \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\/\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/ponimaya-docker\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:13:44+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:13:44+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Comprendiendo Docker | ProHoster","description":"He estado usando Docker durante varios meses para estructurar el proceso de desarrollo\/entrega de proyectos web.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/ponimaya-docker","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u043e\u043d\u0438\u043c\u0430\u044f Docker | ProHoster","og:description":"\u0423\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e docker \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\/\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/ponimaya-docker","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:13:44+00:00","article:modified_time":"2019-10-31T19:13:44+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36772","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 04:47:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:39:22","updated":"2026-01-22 04:47:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/36772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=36772"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/36772\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=36772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=36772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=36772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}