-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathque-es-docker-y-porque-es-tan-popular.html
269 lines (232 loc) · 13.2 KB
/
que-es-docker-y-porque-es-tan-popular.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="HandheldFriendly" content="True" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="" />
<link href="https://fonts.googleapis.com/css?family=Source+Code+Pro|Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="https://agutierrezrodriguez.github.io/theme/stylesheet/style.min.css">
<link rel="stylesheet" type="text/css" href="https://agutierrezrodriguez.github.io/theme/pygments/github.min.css">
<link rel="stylesheet" type="text/css" href="https://agutierrezrodriguez.github.io/theme/font-awesome/css/font-awesome.min.css">
<link href="https://agutierrezrodriguez.github.io/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Antonio Gutiérrez Atom">
<!-- Google Analytics -->
<script type="text/javascript">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-101620037-1', 'auto');
ga('send', 'pageview');
</script>
<!-- End Google Analytics -->
<meta name="author" content="Antonio Gutiérrez" />
<meta name="description" content="Para quien no lo conozca, Docker es un sistema de virtualización basado en contenedores o virtualización de sistema operativo que funciona bajo sistemas Linux y permite ejecutar los contenedores (máquinas virtuales) sin apenas penalización. Un poco de historia La primera versión de Docker fue lanzada en marzo de 2013 como …" />
<meta name="keywords" content="Linux, Docker, Devops">
<meta property="og:site_name" content="Antonio Gutiérrez"/>
<meta property="og:title" content="¿Qué es Docker y porqué es tan popular?"/>
<meta property="og:description" content="Para quien no lo conozca, Docker es un sistema de virtualización basado en contenedores o virtualización de sistema operativo que funciona bajo sistemas Linux y permite ejecutar los contenedores (máquinas virtuales) sin apenas penalización. Un poco de historia La primera versión de Docker fue lanzada en marzo de 2013 como …"/>
<meta property="og:locale" content="es_ES"/>
<meta property="og:url" content="https://agutierrezrodriguez.github.io/que-es-docker-y-porque-es-tan-popular.html"/>
<meta property="og:type" content="article"/>
<meta property="article:published_time" content="2017-10-13 17:30:00+02:00"/>
<meta property="article:modified_time" content=""/>
<meta property="article:author" content="https://agutierrezrodriguez.github.io/author/antonio-gutierrez.html">
<meta property="article:section" content="Linux"/>
<meta property="article:tag" content="Linux"/>
<meta property="article:tag" content="Docker"/>
<meta property="article:tag" content="Devops"/>
<meta property="og:image" content="/images/agutierrez.jpg">
<title>Antonio Gutiérrez – ¿Qué es Docker y porqué es tan popular?</title>
</head>
<body>
<aside>
<div>
<a href="https://agutierrezrodriguez.github.io">
<img src="/images/agutierrez.jpg" alt="" title="">
</a>
<h1><a href="https://agutierrezrodriguez.github.io"></a></h1>
<p>SysAdmin / DevOps / Python Backend</p>
<nav>
<ul class="list">
<li><a href="https://agutierrezrodriguez.github.io/category/linux.html">Linux</a></li>
<li><a href="https://agutierrezrodriguez.github.io/pages/sobre-mi.html">Sobre mí</a></li>
</ul>
</nav>
<ul class="social">
<li><a class="sc-rss" href="/feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
<li><a class="sc-linkedin" href="https://www.linkedin.com/in/antonio-gutierrez-rodriguez/" target="_blank"><i class="fa fa-linkedin"></i></a></li>
<li><a class="sc-twitter" href="https://twitter.com/toniusco" target="_blank"><i class="fa fa-twitter"></i></a></li>
<li><a class="sc-github" href="https://github.com/agutierrezrodriguez/" target="_blank"><i class="fa fa-github"></i></a></li>
</ul>
</div>
</aside>
<main>
<article class="single">
<header>
<h1 id="que-es-docker-y-porque-es-tan-popular">¿Qué es Docker y porqué es tan popular?</h1>
<p>
Publicado el viernes 13 de octubre de 2017 en <a href="https://agutierrezrodriguez.github.io/category/linux.html">Linux</a>
</p>
</header>
<div>
<p><img alt="Docker imagen" src="https://agutierrezrodriguez.github.io/images/docker.png"></p>
<p>Para quien no lo conozca, Docker es un sistema de virtualización basado en
contenedores o virtualización de sistema operativo que funciona bajo sistemas
Linux y permite ejecutar los contenedores (máquinas virtuales) sin apenas
penalización. </p>
<h2>Un poco de historia</h2>
<p>La primera versión de Docker fue lanzada en marzo de 2013 como proyecto interno
de la empresa dotCloud. A partir de entonces Docker empezó a recibir
colaboración de grandes empresas como RedHat, Microsoft o IBM debido al gran
potencial que mostraba.</p>
<p>En sus inicios Docker se lanzaba sobre LXC (Linux Containers) hasta la versión
0.9 que se lanzó el soporte para libcontainer y ya lanzaba el propio Docker
sus contenedores sobre el kernel de Linux.</p>
<p>La primera versión (1.0) disponible para producción llegaría en junio de 2014
en la cual Docker ya tenía soporte para ejecutar los contenedores, basarse en
una imagen y construir las imágenes mediante un archivo Dockerfile.</p>
<p>En las siguientes versiones se fue puliendo el sistema agregando soporte para
otros sistemas de archivos, soporte para variables de entorno, soporte para
IPv6, etc...</p>
<p>A partir de la versión 1.9 se integró una nueva capa de red en Docker dando
mayor capacidad de configuración entre contenedores como múltiples redes,
redes privadas, soporte para plugins de red externos entre otras mejoras.</p>
<p>Hasta ahora Docker se ha centrado en mejorar y pulir el sistema de contenedores
pero sobre un mismo host o servidor, a partir de la versión 1.12 incluye a
Docker Swarm dentro de Docker como orquestador de varios hosts con Docker para
montar servicios en alta disponibilidad, balanceo de carga y descubrimiento de
servicios. A partir de ahora Docker se centra en llegar a un ámbito mas
profesional.</p>
<p>En marzo de 2017 Docker se bifurca en 2 soluciones, Docker CE y Docker EE.
Docker CE (Community Edition) es el motor Docker libre con todas las
características mencionadas anteriormente, y con colaboración del a comunidad.
Docker EE (Enterprise Edition) es Docker con añadidos empresariales y de pago,
diseñado para tener mas robustez, y características que no se encontrarán en
Docker CE como integración con LDAP, asistencia, escaneos de seguridad, etc.</p>
<h2>Cómo funciona</h2>
<p>Como ya hemos comentado anteriormente, Docker es un sistema de virtualización
de sistema operativo, a diferencia de otros sistemas de virtualización como los
de hypervisor, no necesita emular el hardware ya que se ejecuta sobre el kernel
de Linux (v3.10 o superior) y sobre el kernel se ejecutan las aplicaciones
directamente por lo que el aumento de rendimiento es considerable.</p>
<p><img alt="Docker containers vs hypervisor image" src="https://agutierrezrodriguez.github.io/images/docker2.png"></p>
<p>Docker utiliza la característica del kernel cgroups y namespaces para
funcionar. Dichas características ofrecen aislamiento de los procesos y
limitación de los recursos para cada contenedor a ejecutar.</p>
<p>Docker almacena toda la información en un sistema de capas de solo lectura y
de lectura y escritura sobre la última capa. Esto provoca que varias imágenes
puedan tener la misma capa reduciendo el espacio utilizado en disco de forma
eficiente. Además, las imágenes Docker también se componen de un conjunto de
capas y de unas versiones a otras puede que tan solo se descarguen unas capas
porque el resto permanecen intactas por lo que también se consigue reducir el
ancho de banda necesitado para funcionar.</p>
<h2>¿Porque tiene tanto éxito Docker?</h2>
<p>Docker se ha extendido muy rápido a pesar de lo joven que es (4 años) y es
porque aglutina varias características que lo hacen único y productivo.
Docker no es el primer sistema de virtualización de contenedores, antes de el
ya existían LXC (Linux Containers), OpenVZ, Jails en FreeBSD, etc. Pero como
es que si ya existían otros sistemas de contenedores, Docker se haya expandido
tanto.</p>
<ul>
<li>
<p><strong>Repositorio de imágenes</strong>. Docker proporciona un repositorio central de
imágenes alojado en Internet (https://hub.docker.com/) donde los usuarios y/o
instituciones pueden subir sus imágenes listas para funcionar. Además
proporciona el software necesario para que cualquier empresa pueda montarse un
repositorio privado. Esto posibilita que todas las imágenes están accesibles
de una forma rápida y sencilla.</p>
</li>
<li>
<p><strong>Infraestructura como código</strong>. Para generar imágenes Docker se puede
utilizar un archivo Dockerfile que no es mas que las instrucciones a ejecutar
por Docker a la hora de construir la imagen. Con esto se consigue que podamos
tener versionada toda la infraestructura de imágenes y sea fácilmente
replicable.</p>
</li>
<li>
<p><strong>Inmutabilidad</strong>. Una imagen Docker se ejecuta igual sobre cualquier sistema
operativo o versión de Docker (A excepción de usar características no
disponibles en versiones anteriores), por lo que un contenedor que nos funciona
en local va a funcionar igual en el servidor/es empresarial/es de producción.
Esta característica resuelve muchos problemas de dependencias, versiones, etc.
en el desarrollo de software, ya que el contenedor tendrá únicamente las
librerías y programas que necesite en la versión correcta.</p>
</li>
<li>
<p><strong>Ligereza</strong>. Como ya hemos comentado, Docker utiliza un sistema de capas
para almacenar la información, por lo que una actualización no tendrá que
descargar una imagen grande y pesada. Además un contenedor Docker arranca en
segundos, por lo que un despliegue a producción de Docker dura unos pocos
segundos reduciendo el riesgo de sobrecarga o despliegues eternos.</p>
</li>
<li>
<p><strong>Operatividad</strong>. Docker soporta el "Taggueado" de las imágenes, por lo que
al igual que podemos tener versionado nuestro software, podemos versionar
nuestras imágenes y etiquetarlas según la versión de nuestro código, por lo que
distribuir una aplicación es tan sencillo como indicar la ruta de una imagen
con su etiqueta.</p>
</li>
</ul>
<p>A parte de estas características, Docker ha desarrollado otras herramientas
como docker-compose que te permiten el despliegue en segundos de una
infraestructura completa con cada elemento diferenciado y configurable o como
Docker Swarm que maneja varios nodos con Docker y balancea servicios, escala y
maneja los despliegues.</p>
<p>También he intentado resumir un poco y no entrar en detalles, ya que Docker es
mucho mas de lo que he comentado, pero nos podemos hacer a una idea del
potencial que tiene.</p>
<h3>Fuentes</h3>
<ul>
<li>https://docs.docker.com/</li>
<li>https://es.wikipedia.org/wiki/Docker_(software)</li>
<li>https://en.wikipedia.org/wiki/Operating-system-level_virtualization#IMPLEMENTATIONS</li>
</ul>
</div>
<div class="tag-cloud">
<p>
<a href="https://agutierrezrodriguez.github.io/tag/linux.html">Linux</a>
<a href="https://agutierrezrodriguez.github.io/tag/docker.html">Docker</a>
<a href="https://agutierrezrodriguez.github.io/tag/devops.html">Devops</a>
</p>
</div>
<div class="center social-share">
<p>¿Te gusta este artículo? ¡Compártelo con tus amigos!</p>
<div class="addthis_native_toolbox"></div>
<div class="addthis_sharing_toolbox"></div>
<div class="addthis_inline_share_toolbox"></div>
</div>
<div class="addthis_relatedposts_inline"></div>
<!-- Disqus -->
<div id="disqus_thread"></div>
<script type="text/javascript">
var disqus_shortname = 'agutierrezrodriguez-github-io';
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>
Por favor, habilita JavaScript para ver los comentarios.
</noscript>
<!-- End Disqus -->
</article>
<footer>
<p>© </p>
<p>Este sitio usa <a href="http://getpelican.com" target="_blank">Pelican</a> - tema <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> por <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a></p> </footer>
</main>
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-598f3d1eafff98c0" async="async"></script>
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "Blog",
"name": " Antonio Gutiérrez ",
"url" : "https://agutierrezrodriguez.github.io",
"image": "/images/agutierrez.jpg",
"description": ""
}
</script>
</body>
</html>