Diferencia entre revisiones de «Plantilla:Docker/conceptosGenerales»
De WikiEducator
(→Docker en el desarrollo web) |
(→Qué es docker) |
||
(16 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 3: | Línea 3: | ||
{{MRM_Objetivos| | {{MRM_Objetivos| | ||
;Ver qué es docker desde el punto de vista de ser usado para dockerizar un desarrollo web | ;Ver qué es docker desde el punto de vista de ser usado para dockerizar un desarrollo web | ||
− | *Docker, contenedor, | + | *Docker, contenedor, imagen, domandos |
;Conceptos e instalaciones | ;Conceptos e instalaciones | ||
− | *Comandos de docker | + | *Comandos de docker en el cliente |
− | * | + | *Contenedores e imágenes (crear y gestionar en ambas direcciones). |
− | * | + | *Portabilidad de los contenedores |
− | * | + | *Crear nuestro ambiente de trabajo dockerizado |
− | + | ||
− | + | ||
− | + | ||
}} | }} | ||
<br /> | <br /> | ||
− | + | ||
+ | ;Recursos de la web | ||
+ | *La mejor la oficial: | ||
+ | https://docs.docker.com/engine/ | ||
*Artículo interesante de Mauricio Collados, donde he sacado ideas para este tema | *Artículo interesante de Mauricio Collados, donde he sacado ideas para este tema | ||
https://medium.com/ingenier%C3%ADa-en-tranqui-finanzas/una-gu%C3%ADa-no-tan-r%C3%A1pida-de-docker-y-kubernetes-933f5b6709df | https://medium.com/ingenier%C3%ADa-en-tranqui-finanzas/una-gu%C3%ADa-no-tan-r%C3%A1pida-de-docker-y-kubernetes-933f5b6709df | ||
− | + | *Curso gratuito de docker | |
+ | https://jgaitpro.com/p/introduccion-a-containers-en-docker | ||
+ | *Instalar contenedor en windows (ver minutos 6:10 - 9:21 | ||
+ | https://www.youtube.com/watch?v=9FoWrDx6n2k | ||
+ | |||
+ | {{Tip| Esta es una lectura para contextualizar qué es docker y para qué sirve}} | ||
===Qué es docker=== | ===Qué es docker=== | ||
− | *'''''Docker''''' es una empresa que ofrece una tecnología de virtualización basada en contenedores. | + | *'''''Docker''''' es una empresa https://www.docker.com/company/ que entre otros productos ofrece una tecnología de virtualización basada en contenedores. |
− | * | + | *Empieza su desarrollo en 2010 impulsada por Solomon Hykes, y actualmente la compañía se llama '''''Moby Proyect'''''. |
− | *Entre otras, en | + | |
− | * | + | {{Tip|MRM TODO Historia ???}} |
+ | |||
+ | |||
+ | *Entre otras, en una idea inicial, Docker permite tomar instantáneas de un determinado entorno de ejecución, incluyendo el sistema operativo, servicios y procesos necesarios, aislándolo del sistema anfitrión dónde se esté ejecutando. Para hacer instantáneas, se procede igual que los commit de git (también es el comando docker commit) y pudiendo en cualquier momento recuperar dicho entorno de ejecución en un determinado instante, siempre independizados del entorno (Sistema anfitrión dónde se esté ejecutando el elemento concreto de docker). | ||
+ | *En este proceso de <span class="R">empaquetamiento</span> en una sola entidad con forma de archivo (<span class="R">contenedor</span>) se van a agrupar el código fuente y las dependencias requeridas para que el software funcione. | ||
+ | *Aquí está el concepto de '''''contenedor ''''' un programa que virtualiza el software deseado para ese determinado entorno de ejecución. De este <span class="R">contenedor</span> podemos comitear a imágenes nuevas en cualquier momento. Igualmente de una imagen concreta se puede levanta un contendor de forma muy rápida (cuestión de segundos o menos....). Si vamos realizando nuevas instalaciones en el contenedor, vamos guardando solo los cambios que se van produciendo. Podremos visualizar los difernetes cambios. | ||
+ | {{Nota|En cada commit solo se guardan los cambios realizados desde el commit anterior.}} | ||
{{MRM_Definicion|Es un sistema de virtualización de código abierto basado en contenedores.}} | {{MRM_Definicion|Es un sistema de virtualización de código abierto basado en contenedores.}} | ||
{{MRM_Definicion|Title="Idea intuitiva de virtualizar un S.O."| | {{MRM_Definicion|Title="Idea intuitiva de virtualizar un S.O."| | ||
Utilizar '''''software''''' para ''emular'' el sistema necesario que pueda contener '''un determinado sistema operativo disponible para ser usado''' | Utilizar '''''software''''' para ''emular'' el sistema necesario que pueda contener '''un determinado sistema operativo disponible para ser usado''' | ||
}} | }} | ||
+ | {{MRM_Pregunta|Title="Docker virtualiza un S.O. ??"| | ||
+ | *No es cierto, docker utiliza y comparte el kernel del sistema operativo anfitrión, virtualiza todo lo necesario para poder crear un determinado entorno de ejecución de forma totalmente aislada al sistema operativo anfitrión, incluyendo cambios en el propio sistema operativo. En esta línea sí que se puede comparar a una instantánea de un sistema operativo, pero no es su objetivo ni lo que pretende. Su objetivo es crear un entorno de ejecución independiente y chroot}} | ||
+ | [[Imagen:docker_general_1.png|900px|center]] | ||
===Cómo actúa Docker en una máquina anfitriona=== | ===Cómo actúa Docker en una máquina anfitriona=== | ||
*El elemento funcional u operativo de en un sistema basado en docker es el '''''contenedor''''' | *El elemento funcional u operativo de en un sistema basado en docker es el '''''contenedor''''' | ||
− | + | ====Qué es un contenedor==== | |
+ | <br /> | ||
{{MRM_Definicion|Title=Un contenedor| | {{MRM_Definicion|Title=Un contenedor| | ||
− | '''Es una pieza de software liviana, independiente, empaquetable y ejecutable que incluye todo lo que necesita para correr: código, runtime, herramientas de sistema, librerías y configuraciones''' [https://www.docker.com/resources/what-container/ traducido de la página oficial de | + | '''Es una pieza de software liviana, independiente, empaquetable y ejecutable que incluye todo lo que necesita para correr: código, runtime, herramientas de sistema, librerías y configuraciones''' [https://www.docker.com/resources/what-container/ traducido de la página oficial de docker]}} |
<br /> | <br /> | ||
[[Imagen:Docker_distancia_1.png]] | [[Imagen:Docker_distancia_1.png]] | ||
Línea 46: | Línea 61: | ||
*Es seguro, el docker está encerrado en un chroot, podemos asegurar las versiones de nuestros servicios y sistema operativo. | *Es seguro, el docker está encerrado en un chroot, podemos asegurar las versiones de nuestros servicios y sistema operativo. | ||
*Muy flexible y de fácil adaptación con el exterior: es muy cómodo y sencillo pasar ficheros entre el contenedor y el host. Se puede mantener un volumen que sea compartido por ambos sistemas de ficheros (el del host y el del contenedor). | *Muy flexible y de fácil adaptación con el exterior: es muy cómodo y sencillo pasar ficheros entre el contenedor y el host. Se puede mantener un volumen que sea compartido por ambos sistemas de ficheros (el del host y el del contenedor). | ||
+ | |||
====Vitualización basada en contenedores Vs Máquinas virtuales==== | ====Vitualización basada en contenedores Vs Máquinas virtuales==== | ||
Línea 51: | Línea 67: | ||
*En ambos perseguimos el objetivo de tener un sistema operativo '''''diferente''''' e '''''independiente''''' de la máquina anfitriona donde desplegamos la virtualización. Pero el método de conseguirlo es totalmente diferente. | *En ambos perseguimos el objetivo de tener un sistema operativo '''''diferente''''' e '''''independiente''''' de la máquina anfitriona donde desplegamos la virtualización. Pero el método de conseguirlo es totalmente diferente. | ||
[[Imagen:Docker_distancia_MV.png]]<br /> | [[Imagen:Docker_distancia_MV.png]]<br /> | ||
− | {{Tip|Esta imagen tiene imágenes y texto obtenidos de wikipedia | + | {{Tip|Esta imagen tiene imágenes y texto obtenidos de wikipedia que he adaptado |
https://es.wikipedia.org/wiki/Hipervisor }} | https://es.wikipedia.org/wiki/Hipervisor }} | ||
*Observamos en la imagen, como cada máquina virtual implementa la parte del hardware como parte de la máquina virtual, incluso reservando recursos físicos de la máquina anfitriona para cada máquina virtual. | *Observamos en la imagen, como cada máquina virtual implementa la parte del hardware como parte de la máquina virtual, incluso reservando recursos físicos de la máquina anfitriona para cada máquina virtual. | ||
Línea 60: | Línea 76: | ||
*Es una manera de que el desarrollador tenga justo lo que necesita, sin alterar el sistema o host principal dónde desarrolla | *Es una manera de que el desarrollador tenga justo lo que necesita, sin alterar el sistema o host principal dónde desarrolla | ||
[[Imagen:Docker_1.jpg]] | [[Imagen:Docker_1.jpg]] | ||
− | + | *Está basado en una '''''imagen'''''. A partir de ella (y dependiendo siempre de ella) tendremos uno o varios '''''contenedores''''', software operativo que virtualiza y me ofrece todas sus prestanciones. | |
+ | *La dependencia entre una '''''image''''' y sus '''''contenedores''''' es total, de modo que no podremos borrar una imagen si hay contenedores que se hayan creado a partir de ella. | ||
+ | *Esto es normal, ya que la gran velocidad y flexibilidad de docker está basada en que solo guardamos los cambios que realicemos, por eso todo es tan dinámico. |
Última revisión de 04:45 6 mar 2023
Contenido
|
- Recursos de la web
- La mejor la oficial:
https://docs.docker.com/engine/
- Artículo interesante de Mauricio Collados, donde he sacado ideas para este tema
https://medium.com/ingenier%C3%ADa-en-tranqui-finanzas/una-gu%C3%ADa-no-tan-r%C3%A1pida-de-docker-y-kubernetes-933f5b6709df
- Curso gratuito de docker
https://jgaitpro.com/p/introduccion-a-containers-en-docker
- Instalar contenedor en windows (ver minutos 6:10 - 9:21
https://www.youtube.com/watch?v=9FoWrDx6n2k
Tip: Esta es una lectura para contextualizar qué es docker y para qué sirve
Qué es docker
- Docker es una empresa https://www.docker.com/company/ que entre otros productos ofrece una tecnología de virtualización basada en contenedores.
- Empieza su desarrollo en 2010 impulsada por Solomon Hykes, y actualmente la compañía se llama Moby Proyect.
Tip: MRM TODO Historia ???
- Entre otras, en una idea inicial, Docker permite tomar instantáneas de un determinado entorno de ejecución, incluyendo el sistema operativo, servicios y procesos necesarios, aislándolo del sistema anfitrión dónde se esté ejecutando. Para hacer instantáneas, se procede igual que los commit de git (también es el comando docker commit) y pudiendo en cualquier momento recuperar dicho entorno de ejecución en un determinado instante, siempre independizados del entorno (Sistema anfitrión dónde se esté ejecutando el elemento concreto de docker).
- En este proceso de empaquetamiento en una sola entidad con forma de archivo (contenedor) se van a agrupar el código fuente y las dependencias requeridas para que el software funcione.
- Aquí está el concepto de contenedor un programa que virtualiza el software deseado para ese determinado entorno de ejecución. De este contenedor podemos comitear a imágenes nuevas en cualquier momento. Igualmente de una imagen concreta se puede levanta un contendor de forma muy rápida (cuestión de segundos o menos....). Si vamos realizando nuevas instalaciones en el contenedor, vamos guardando solo los cambios que se van produciendo. Podremos visualizar los difernetes cambios.
(: En cada commit solo se guardan los cambios realizados desde el commit anterior.)
Utilizar software para emular el sistema necesario que pueda contener un determinado sistema operativo disponible para ser usado |
|
Cómo actúa Docker en una máquina anfitriona
- El elemento funcional u operativo de en un sistema basado en docker es el contenedor
Qué es un contenedor
Es una pieza de software liviana, independiente, empaquetable y ejecutable que incluye todo lo que necesita para correr: código, runtime, herramientas de sistema, librerías y configuraciones traducido de la página oficial de docker |
- No se virtualiza el sistema operativo entero, solo los servicios que queremos usar con sus dependencias (Esta es la idea de un contenedor)
- El kernel del sistema operativo es compartido con el host anfitrión dónde el contenedor es ejecutado.
- Con todo ello conseguimos
- Un sistema muy ligero, tanto en peso como en ejecución. Esto se consigue, ya que en realidad lo que voy almacenando en el contenedor son las diferencias respecto a una imagen o al kernel del sistema operativo, no tengo una réplica de todo como ocurre en una máquina virtual. Utilizo todo del sistema dónde me alojo y tengo en cuenta la peculiaridades o diferencias que he agregado en el contenedor que estoy ejecutando.
- Totalmente portable: podemos desplegar un contenedor en cualquier otro anfitrión o máquina que soporte esa tecnología. El contenedor lo podemos llevar en un fichero tar
- Es seguro, el docker está encerrado en un chroot, podemos asegurar las versiones de nuestros servicios y sistema operativo.
- Muy flexible y de fácil adaptación con el exterior: es muy cómodo y sencillo pasar ficheros entre el contenedor y el host. Se puede mantener un volumen que sea compartido por ambos sistemas de ficheros (el del host y el del contenedor).
Vitualización basada en contenedores Vs Máquinas virtuales
- Un sistema de virtualización basado en docker es muy diferente de un sistema basado en máquinas virtuales
- En ambos perseguimos el objetivo de tener un sistema operativo diferente e independiente de la máquina anfitriona donde desplegamos la virtualización. Pero el método de conseguirlo es totalmente diferente.
Tip: Esta imagen tiene imágenes y texto obtenidos de wikipedia que he adaptado
https://es.wikipedia.org/wiki/Hipervisor
- Observamos en la imagen, como cada máquina virtual implementa la parte del hardware como parte de la máquina virtual, incluso reservando recursos físicos de la máquina anfitriona para cada máquina virtual.
- Arrancar cada máquina puede constar minutos, al igual que cuando arrancamos físicamente nuestro equipo
- Como ventaja tenemos realmente una máquina independiente, pero perdemos la flexibilidad, velocidad y ligero de un contenedor, no tiene nada que ver.
Docker en el desarrollo web
- Es una manera de que el desarrollador tenga justo lo que necesita, sin alterar el sistema o host principal dónde desarrolla
- Está basado en una imagen. A partir de ella (y dependiendo siempre de ella) tendremos uno o varios contenedores, software operativo que virtualiza y me ofrece todas sus prestanciones.
- La dependencia entre una image y sus contenedores es total, de modo que no podremos borrar una imagen si hay contenedores que se hayan creado a partir de ella.
- Esto es normal, ya que la gran velocidad y flexibilidad de docker está basada en que solo guardamos los cambios que realicemos, por eso todo es tan dinámico.