{"id":31641,"date":"2019-10-31T21:42:19","date_gmt":"2019-10-31T18:42:19","guid":{"rendered":"https:\/\/prohoster.info\/blog\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\/"},"modified":"2019-10-31T21:42:19","modified_gmt":"2019-10-31T18:42:19","slug":"docker-eto-igrushka-ili-net-ili-vsyo-taki-da","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","title":{"rendered":"\u00bfDocker es un juguete o no? \u00bfO s\u00ed lo es?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00a1Hola a todos!<\/p>\n<p><\/p>\n<p>Realmente quiero comenzar de inmediato con el tema, pero es correcto contar un poco sobre mi historia:<\/p>\n<p><\/p>\n<h2>Introducci\u00f3n<\/h2>\n<p><\/p>\n<p>Soy programador con experiencia en el desarrollo de aplicaciones de una sola p\u00e1gina frontend, scala\/java y nodejs en el servidor. <\/p>\n<p><\/p>\n<p>Durante bastante tiempo (ya son un par \u2014 tres a\u00f1os), he mantenido la opini\u00f3n de que Docker es un regalo del cielo y en general una herramienta muy genial que absolutamente todo desarrollador deber\u00eda saber utilizar. Y de aqu\u00ed se desprende que cada desarrollador deber\u00eda tener Docker en su m\u00e1quina local. No solo es mi opini\u00f3n, pueden revisar las ofertas de trabajo que se publican en hh. En cada segunda hay una menci\u00f3n a Docker y si lo dominan, ser\u00e1 su ventaja competitiva \ud83d\ude09<\/p>\n<p><\/p>\n<p>En mi camino, me he encontrado con muchas personas, cada una con su diferente actitud hacia Docker y su ecosistema. Algunos dec\u00edan que es una herramienta conveniente que garantiza la multiplataforma. Otros no entend\u00edan por qu\u00e9 deber\u00edan ejecutarse en contenedores y qu\u00e9 beneficio obten\u00edan de ello, a otros simplemente no les importaba y no se complicaban (solo escrib\u00edan c\u00f3digo y se iban a casa \u2014 envidio, por cierto, a esas personas \ud83d\ude42)<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Razones para usar<\/h2>\n<p><\/p>\n<p>\u00bfPor qu\u00e9 utilic\u00e9 Docker? Probablemente por las siguientes razones:<\/p>\n<p><\/p>\n<ul>\n<li>lanzar bases de datos, el 99% de las aplicaciones las utilizan<\/li>\n<li>lanzar nginx para servir el frontend y hacer proxy al backend<\/li>\n<li>puedes empaquetar la aplicaci\u00f3n en una imagen de Docker, de esta manera mi aplicaci\u00f3n funcionar\u00e1 en cualquier lugar donde haya Docker, el problema de la distribuci\u00f3n se resuelve de inmediato<\/li>\n<li>descubrimiento de servicios desde el principio, puedes crear microservicios, cada contenedor (conectado a una red com\u00fan) puede acceder f\u00e1cilmente a otro por alias, es muy conveniente<\/li>\n<li>Es genial crear un contenedor y 'jugar' con \u00e9l.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Lo que siempre NO me ha gustado de Docker:<\/h2>\n<p><\/p>\n<ul>\n<li>para que mi aplicaci\u00f3n funcione, Docker necesita estar en el servidor. \u00bfY para qu\u00e9 necesito esto, si mis aplicaciones funcionan en jre o en nodejs y su entorno ya est\u00e1 en el servidor?<\/li>\n<li>si quiero ejecutar mi imagen (privada) creada localmente en un servidor remoto, necesito mi propio repositorio de Docker, y tambi\u00e9n necesito que haya un registro funcionando en alg\u00fan lugar y hay que configurar https porque Docker cli solo funciona a trav\u00e9s de https. Oh, maldita sea... hay opciones, claro, guardar la imagen localmente a trav\u00e9s de <code>docker save<\/code> Y a trav\u00e9s de scp simplemente transferir la imagen... Pero eso implica mucho trabajo. Adem\u00e1s, parece una soluci\u00f3n 'chapucera', hasta que salga su propio repositorio.<\/li>\n<li><code>docker-compose<\/code>Solo se necesita para iniciar contenedores. Y eso es todo. No puede hacer nada m\u00e1s. <code>Docker-compose<\/code> tiene un mont\u00f3n de versiones de sus archivos, su propia sintaxis. Por muy declarativa que sea, no quiero leer su documentaci\u00f3n. No la necesitar\u00e9 en ning\u00fan otro lugar.<\/li>\n<li>en el trabajo en equipo, la mayor\u00eda de las personas escriben Dockerfile de manera muy deficiente, no entienden c\u00f3mo se cachea, a\u00f1aden a la imagen todo lo que necesitan y lo que no, heredan de im\u00e1genes que no est\u00e1n en dockerhub o en un repositorio privado, crean algunos <code>docker-compose<\/code> Los archivos de bases de datos no se persisten. Aun as\u00ed, los desarrolladores afirman orgullosamente que docker es genial, que todo funciona localmente, y el departamento de Recursos Humanos destaca en las ofertas: 'Usamos docker y necesitamos un candidato con esa experiencia'.<\/li>\n<li>siempre tienen la idea de levantar en Docker todo y cualquier cosa: postgresql, kafka, redis. Es una l\u00e1stima que no todo funcione en contenedores, no todo se puede configurar y lanzar f\u00e1cilmente. Esto es soportado por desarrolladores externos y no por los propios proveedores. Y, por cierto, surge inmediatamente la pregunta, si los proveedores no se preocupan por mantener sus productos en Docker, \u00bfpor qu\u00e9 ser\u00e1, quiz\u00e1s saben algo?<\/li>\n<li>siempre surge la pregunta sobre la persistencia de datos del contenedor. Y aqu\u00ed te preguntas, \u00bfdeber\u00eda simplemente montar un directorio del host o crear un volumen de Docker o hacer un contenedor de datos que ahora <code>est\u00e1 obsoleto<\/code>? \u0415\u0441\u043b\u0438 \u044f \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0442\u043e \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0447\u0442\u043e uid \u0438 gid \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 id \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0438\u043d\u0430\u0447\u0435 \u0444\u0430\u0439\u043b\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 root. \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <code>volumen<\/code> los datos simplemente se crear\u00e1n en alg\u00fan <code>\/usr\/*<\/code> Y habr\u00e1 la misma historia con uid y gid como en el primer caso. Si inicias un componente externo, necesitas leer la documentaci\u00f3n y buscar la respuesta a la pregunta: '\u00bfen qu\u00e9 directorios del contenedor escribe el componente sus archivos?'<\/li>\n<\/ul>\n<p>Siempre me ha molestado que tengo que lidiar tanto tiempo con Docker <strong>en la etapa inicial<\/strong>: pensaba en c\u00f3mo ejecutar contenedores, de qu\u00e9 im\u00e1genes iniciar, hac\u00eda Makefile que conten\u00eda alias a largos comandos de Docker. No soportaba Docker-compose, porque no quer\u00eda aprender otro instrumento del ecosistema Docker. Y <code>docker-compose up<\/code> me estresaba, especialmente si all\u00ed se presentaban <code>build<\/code> estructuras en lugar de im\u00e1genes ya compiladas. Todo lo que realmente quer\u00eda era hacer el producto de manera eficaz y r\u00e1pida. Pero no pod\u00eda desglosar el uso de Docker.<\/p>\n<p><\/p>\n<h2>Introducci\u00f3n a Ansible<\/h2>\n<p><\/p>\n<p>Recientemente (hace tres meses), trabaj\u00e9 con un equipo de DevOps, casi cada miembro de este equipo ten\u00eda una opini\u00f3n negativa sobre Docker. Por las razones:<\/p>\n<p><\/p>\n<ul>\n<li>Docker controla iptables (aunque se puede desactivar en daemon.json)<\/li>\n<li>No vamos a ejecutar Docker en producci\u00f3n<\/li>\n<li>Si el daemon de Docker falla, todos los contenedores de infraestructura tambi\u00e9n fallan<\/li>\n<li>No hay necesidad de Docker<\/li>\n<li>\u00bfPara qu\u00e9 Docker si tenemos Ansible y m\u00e1quinas virtuales?<\/li>\n<\/ul>\n<p><\/p>\n<p>En mi trabajo tambi\u00e9n conoc\u00ed otra herramienta: Ansible. Hab\u00eda o\u00eddo hablar de ella, pero nunca hab\u00eda probado a escribir mis propios playbooks. Ahora empec\u00e9 a escribir mis tareas y mi perspectiva cambi\u00f3 por completo. Porque entend\u00ed: Ansible tiene m\u00f3dulos para ejecutar contenedores Docker, construir im\u00e1genes, redes, etc\u00e9tera, y se pueden ejecutar contenedores no solo localmente, sino tambi\u00e9n en servidores remotos. \u00a1Mi alegr\u00eda no ten\u00eda l\u00edmites! Encontr\u00e9 una herramienta SOLVENTE y desech\u00e9 mis archivos Makefile y docker-compose, que fueron reemplazados por tareas YAML. El c\u00f3digo se redujo gracias al uso de construcciones como <code>loop<\/code>, <code>when<\/code>, etc.<\/p>\n<p><\/p>\n<h2>Docker se utiliza para ejecutar componentes externos como bases de datos<\/h2>\n<p><\/p>\n<p>Recientemente, me familiaric\u00e9 con los t\u00faneles ssh. Resulta que es muy f\u00e1cil 'redirigir' el puerto de un servidor remoto al puerto local. El servidor remoto puede ser tanto una m\u00e1quina en la nube como una m\u00e1quina virtual funcionando en VirtualBox. Si yo o mi colega necesitamos una base de datos (o alg\u00fan otro componente externo), simplemente podemos iniciar el servidor con ese componente y detenerlo cuando ya no lo necesitemos. La redirecci\u00f3n de puertos tiene el mismo efecto que una base de datos corriendo en un contenedor docker.<\/p>\n<p><\/p>\n<p>Este comando redirige mi puerto local al servidor remoto con PostgreSQL:<\/p>\n<p><\/p>\n<blockquote><p>ssh -L 9000:localhost:5432 user@example.com<\/p><\/blockquote>\n<p>Usar un servidor remoto resuelve el problema del desarrollo en equipo. Varios desarrolladores pueden usar ese servidor al mismo tiempo, no necesitan saber c\u00f3mo configurar PostgreSQL, lidiar con Docker y otras complicaciones. En el servidor remoto, se puede instalar la misma base de datos en Docker, si se necesita una versi\u00f3n espec\u00edfica. Lo \u00fanico que requerir\u00e1n los desarrolladores es acceso SSH.<\/p>\n<p><\/p>\n<p>Recientemente le\u00ed que los t\u00faneles SSH son una funcionalidad limitada de una VPN convencional. Se puede configurar f\u00e1cilmente OpenVPN u otras implementaciones de VPN, establecer la infraestructura y ponerla a disposici\u00f3n de los desarrolladores. \u00a1Es realmente genial!<\/p>\n<p><\/p>\n<p>Afortunadamente, AWS, Google Cloud y otros ofrecen un a\u00f1o de uso gratuito, \u00a1as\u00ed que \u00fasalos! Son econ\u00f3micos si los apagas cuando no est\u00e1n en uso. Siempre me he preguntado para qu\u00e9 podr\u00eda necesitar un servidor remoto tipo gcloud, parece que finalmente lo he encontrado.<\/p>\n<p><\/p>\n<p>Como m\u00e1quina virtual en local, puedes usar el mismo Alpine que se usa activamente en contenedores de Docker. O bien, alguna otra distribuci\u00f3n ligera para que la m\u00e1quina arranque m\u00e1s r\u00e1pido.<\/p>\n<p><\/p>\n<p>En resumen: correr bases de datos y otras funcionalidades de infraestructura se puede y se debe hacer en servidores remotos o en VirtualBox. No necesito Docker para estos prop\u00f3sitos.<\/p>\n<p><\/p>\n<h2>Un poco sobre las im\u00e1genes de Docker y la distribuci\u00f3n<\/h2>\n<p><\/p>\n<p>Ya he escrito <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/443136\/\">art\u00edculo<\/a><\/noindex> en la que quer\u00eda transmitir que el uso de im\u00e1genes de Docker no ofrece ninguna garant\u00eda. Las im\u00e1genes de Docker son necesarias solo para crear contenedores de Docker. Si te basas en una imagen de Docker, significa que te basas en el uso de contenedores de Docker y solo estar\u00e1s con ellos.<\/p>\n<p><\/p>\n<p>\u00bfHas visto en alguna parte a desarrolladores de software portando sus productos solo en forma de imagen de Docker?<br \/>\nEl resultado de la mayor\u00eda de los productos son archivos binarios para una plataforma espec\u00edfica, que simplemente se a\u00f1aden a la imagen de Docker que hereda de la plataforma necesaria. \u00bfNo te has preguntado por qu\u00e9 hay tantas im\u00e1genes similares en Docker Hub? Por ejemplo, escribe nginx, ver\u00e1s 100500 im\u00e1genes de diferentes personas. Estas personas no desarrollaron nginx, solo a\u00f1adieron el nginx oficial a su imagen de Docker y lo complementaron con sus configuraciones para facilitar el arranque de contenedores. <\/p>\n<p><\/p>\n<p>En general, se puede almacenar simplemente en tgz; si alguien necesita ejecutarlo en Docker, que lo agregue en el Dockerfile, herede del entorno necesario y cree funcionalidades adicionales que no cambien la propia aplicaci\u00f3n en tgz. Quien vaya a crear la imagen de Docker sabr\u00e1 qu\u00e9 es ese tgz y qu\u00e9 necesita para que funcione. As\u00ed es como utilizo Docker. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kondaurovDev\/dockerfile\">aqu\u00ed<\/a><\/noindex><\/p>\n<p><\/p>\n<p>En resumen: no necesito un registro de Docker, usar\u00e9 alg\u00fan S3 o simplemente un almacenamiento de archivos como Google Drive\/Dropbox.<\/p>\n<p><\/p>\n<h2>Docker en CI<\/h2>\n<p><\/p>\n<p>Todas las empresas en las que he trabajado son similares entre s\u00ed. Por lo general, son de productos. Es decir, tienen una aplicaci\u00f3n \u00fanica, una pila de tecnolog\u00edas (bueno, quiz\u00e1s un par o tr\u00edo de lenguajes de programaci\u00f3n).<\/p>\n<p><\/p>\n<p>Estas empresas utilizan Docker en sus servidores donde se ejecuta el proceso de CI. La pregunta es: \u00bfpor qu\u00e9 es necesario compilar proyectos en un contenedor Docker en sus servidores? \u00bfPor qu\u00e9 no simplemente preparar el entorno para la compilaci\u00f3n, por ejemplo, escribiendo un playbook de Ansible que instale las versiones necesarias de Node.js, PHP, JDK, copie claves SSH, etc., en el servidor donde tendr\u00e1 lugar la compilaci\u00f3n? <\/p>\n<p><\/p>\n<p>Ahora entiendo que esto es dispararse en el pie, porque Docker no aporta ning\u00fan beneficio con su aislamiento. Los problemas con CI en Docker con los que me he encontrado son:<\/p>\n<p><\/p>\n<ul>\n<li>de nuevo se necesita una imagen de Docker para la compilaci\u00f3n. Hay que buscar una imagen o escribir su propio Dockerfile.<\/li>\n<li>90% de probabilidad de que haya que pasar algunas claves SSH, datos secretos que no se quieren escribir en la imagen de Docker.<\/li>\n<li>el contenedor se crea y muere, se pierden todas las cach\u00e9s con \u00e9l. La siguiente compilaci\u00f3n descargar\u00e1 todas las dependencias del proyecto desde cero, lo que es largo e ineficiente, y el tiempo es dinero.<\/li>\n<\/ul>\n<p><\/p>\n<p>Los desarrolladores no compilan proyectos en contenedores Docker (yo sol\u00eda ser un gran fan\u00e1tico, la verdad, me da pena mi yo del pasado xD). En Java hay la posibilidad de tener m\u00faltiples versiones y cambiarlas con un solo comando a la que se necesita en el momento. En Node.js es lo mismo, existe nvm.<\/p>\n<p><\/p>\n<h2>Salida<\/h2>\n<p><\/p>\n<p>Creo que docker es una herramienta muy poderosa y flexible, y en eso radica su desventaja (suena extra\u00f1o, \u00bfverdad?). A trav\u00e9s de ella, las empresas f\u00e1cilmente 'se enganchan' y la utilizan donde se necesita y donde no. Los desarrolladores inician sus propios contenedores, su propio entorno, y luego todo eso fluye suavemente hacia CI, producci\u00f3n. El equipo de DevOps crea alg\u00fan tipo de 'bicicletas' para iniciar estos contenedores.<\/p>\n<p><\/p>\n<p>Usa Docker solo en <strong>la etapa m\u00e1s tard\u00eda<\/strong> de tu proceso de trabajo, no lo lleves al proyecto al principio. No resolver\u00e1 tus problemas empresariales. Solo trasladar\u00e1 problemas a OTRO nivel y ofrecer\u00e1 sus propias soluciones, lo que te har\u00e1 hacer el trabajo dos veces.<\/p>\n<p><\/p>\n<p><strong><em>Cu\u00e1ndo se necesita Docker<\/em><\/strong>: llegu\u00e9 a la conclusi\u00f3n de que Docker es muy bueno para optimizar el proceso establecido pero no para construir la funcionalidad b\u00e1sica.<\/p>\n<p><\/p>\n<p>Si decides usar Docker, entonces:<\/p>\n<p><\/p>\n<ul>\n<li>ten mucho cuidado<\/li>\n<li>no impongas el uso de Docker a los desarrolladores<\/li>\n<li>localiza su uso en un solo lugar, no lo repartas por todos los repositorios Dockerfile y docker-compose.<\/li>\n<\/ul>\n<p><\/p>\n<p>PD:<\/p>\n<p><\/p>\n<ul>\n<li>Recientemente me top\u00e9 con <noindex><a rel=\"nofollow\" href=\"https:\/\/www.packer.io\/\">packer<\/a><\/noindex> Y dicen que funciona muy bien con Ansible y permite unificar el proceso de creaci\u00f3n de im\u00e1genes (incluida la imagen de docker)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.smashcompany.com\/technology\/docker-is-a-dangerous-gamble-which-we-will-regret\">Tambi\u00e9n sobre docker, un art\u00edculo interesante<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>\u00a1Gracias por leer hasta aqu\u00ed! Les deseo soluciones transparentes en sus asuntos y d\u00edas laborales productivos.<\/p>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/445914\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, scala\/java \u0438 nodejs \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0433\u043e (\u0443\u0436\u0435 \u0442\u043e\u0447\u043d\u043e \u043f\u0430\u0440\u0443 \u2014 \u0442\u0440\u043e\u0439\u043a\u0443 \u043b\u0435\u0442), \u044f \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0441\u044f \u043c\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e docker \u044d\u0442\u043e \u043c\u0430\u043d\u043d\u0430 \u043d\u0435\u0431\u0435\u0441\u043d\u0430\u044f \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 [&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-31641","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=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend.\" \/>\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\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\" \/>\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\udd47Docker \u2014 \u044d\u0442\u043e \u0438\u0433\u0440\u0443\u0448\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442? \u0418\u043b\u0438 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0434\u0430? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\" \/>\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-31T18:42:19+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:42:19+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\udd47\u00bfDocker es un juguete o no? \u00bfO s\u00ed que lo es? | ProHoster","description":"\u00a1Hola a todos! Me encantar\u00eda empezar de inmediato con el tema, pero lo correcto ser\u00e1 contar un poco sobre mi historia: Introducci\u00f3n Soy un programador con experiencia en desarrollo frontend.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","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\udd47Docker \u2014 \u044d\u0442\u043e \u0438\u0433\u0440\u0443\u0448\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442? \u0418\u043b\u0438 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0434\u0430? | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","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-31T18:42:19+00:00","article:modified_time":"2019-10-31T18:42:19+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31641","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-21 07:08:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:13:28","updated":"2026-01-21 07:08:22","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\/31641","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=31641"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/31641\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=31641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=31641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=31641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}