No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Docker

Curso de Docker

Guido Vilariño

Guido Vilariño

Conceptos fundamentales de Docker: contenedores

8/32
Recursos

Aportes 56

Preguntas 5

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Que es un contenedor ?

  • Es una agrupación de procesos.

  • Es una entidad lógica, no tiene el limite estricto de las máquinas virtuales, emulación del sistema operativo simulado por otra más abajo.

  • Ejecuta sus procesos de forma nativa.

  • Los procesos que se ejecutan adentro de los contenedores ven su universo como el contenedor lo define, no pueden ver mas allá del contenedor, a pesar de estar corriendo en una maquina más grande.

  • No tienen forma de consumir más recursos que los que se les permite. Si esta restringido en memoria ram por ejemplo, es la única que pueden usar.

  • A fines prácticos los podemos imaginar cómo maquinas virtuales, pero NO lo son. Máquinas virtuales livianas.

  • Docker corre de forma nativa solo en Linux.

  • Sector del disco: Cuando un contenedor es ejecutado, el daemon de docker le dice, a partir de acá para arriba este disco es tuyo, pero no puedes subir mas arriba.

  • Docker hace que los procesos adentro de un contenedor este aislados del resto del sistema, no le permite ver más allá.

  • Cada contenedor tiene un ID único, también tiene un nombre.

“Un contenedor es truman viviendo en su show y el mundo real es la maquina virtual pero el mundo real es un contenedor del universo y el universo es un contenedor de QUE”

Para limitar los recursos que un contenedor usa, lo podemos hacer desde su creacion (cuando corremos el comando docker run) usando flags de:
Runtime constraints on resources
Y se veria algo asi:

docker run --memory="100m" --cpus=0.5 <image>

pueden checar todos los constraints aqui:
https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources

El contenedor es como “Truman Show”… mejor explicado que esto no se puede jajaja

Creo que es bueno tener en cuenta que hay algunas características del anfitrión que afectan diréctamente a los contenedores, más allá de la transversalidad de Docker. Por ejemplo, ** la arquitectura del procesador de la máquina anfitriona, tiene un impacto directo en las imágenes que podemos usar para nuestros contenedores.**
En mi caso, curioseando con Docker en una Raspberry pi, me di cuenta que sólo puedo usar imagenes que tengan una versión para arquitectura ARM, de lo contrario, no es posible usar la imaage.

<h1>¿Qué es Docker?</h1>

Docker es un software que nos ayuda en el proceso del desarrollo de software, solucionado problemas en diferentes aspectos como lo son la construcción, distribución y ejecución mediante el concepto de contenedores

🐵Dato curioso: Docker esta escrito en Go

Contenedores🚢

Un contenedor la unidad logica mas importande de docker que permite encapsular las dependencias de un proyecto en un entorno aislado, con esto puedes conseguir resolver el problema de “But it works in my machine” ya que te permite crear una especie de maquina virtual y pasársela a tus compañeros o colocarlo en un servidor para el despliegue de manera fácil.

¡✋Alerta! Puedes ver a un contendor como una maquina virtual pero eso no significa que lo sea, una maquina virtual puede llegar a se muy similar debido a sus funcionalidades como el aislamiento de procesos.

Entonces… ¿cuál es el beneficio de usar contenedores en lugar de maquinas virtuales?

El mayor beneficio es que los contenedores de Docker están en el nivel de los MB eso nos da ventajas en el consumo de recursos, ya que estos corren compartiendo el host del kernel de Linux, por otro lado las maquinas virtuales son un sistema operativo(O.S) con sus propias apps que corre sobre el tuyo usando virtualizacion y que consume muchos recursos en el nivel de los GB. Una mejor forma de ver esto es observando la arquitectura de los contendores y de las maquinas virtuales

Containers Vs Maquinas virtuales

Muchos cometen el error de decir que es una máquina virtual liviana, y no es el caso, una VM emula el hardware y cada sistema operativo corre su propio kernel, y tiene su espacio de procesos.

En el contenedor, corre como un grupo de procesos aislado pero en el mismo kernel del sistema anfitrión, es más como una jaula.

No se trata de ser purista sino de ser más preciso y entender a mayor profundidad las cosas.

Explicación de IBM de las diferencias entre VMs y Containers

Desmitificando los contenedores, parte 1

Entonces el concepto de “máquina virtual” solo lo usamos para describir qué es Docker sin tanto problema, pero realmente no es una máquina virtual, sino servicios que limitan al contenedor 🤔
.
Lo que me causa ruido es el hecho de tener que especificarle los recursos máximos que puede consumir, es decir yo preferiría que fuera tipo: “Consume lo que necesites consumir” 🤔

Dross

📦 Conceptos fundamentales de Docker: contenedores

Apuntes

  • El concepto de contenedor es uno de los más importantes en el mundo de Docker
  • El contenedor será el lugar donde se correrán nuestras aplicaciones
  • Un contenedor se podría entender como una máquina virtual liviana
    • Una máquina virtual es un programa que corre en una máquina, pero tiene un sistema operativo, propia memoria, interfaces de red, etc. Es decir, que todo lo que tiene una computadora es virtualizado.
  • Un contenedor es una agrupación de procesos que corren nativamente en la máquina, pero están aislados del resto del sistema
  • Un contenedor es una unidad lógica, no como una máquina virtual, que es una agrupación física aunque virtualizada que tiene abstracciones de memoria, CPU, etc.
  • Al ser una agrupación lógica puede correr de manera nativa en la máquina anfitriona
    • Dicha agrupación está limitada a que cosas acceder y ver de la máquina anfitriona
  • Lo que corre adentro de un contenedor, realmente cree que está en la máquina virtual, representada por el contenedor.
    • Es decir que no puede ver más allá de lo que permitamos
📌 **RESUMEN:** A fines prácticos, un contenedor es como una máquina virtual, para el software que deseemos correr. Lo que caracteriza a un contenedor es que se hace sencillo definir los alcances que tendrá cada contenedor, es liviano y corre de manera nativa.

¿Qué es un contenedor?

  • Es una agrupación de n procesos que corren de forma nativa en la maquina, peor están aislados del resto del sistema. El contenedor es una unidad lógica, no como la maquina virtual es que es una agrupación fisica y virtualizada, que tiene las abstracciones de memoria, cpu, etc.

Una nueva forma de ver de Truman Show.

docker everywhere

¿Se podria decir que Docker son procesos independientes que se apoyan de nuestra PC para ejecutar aplicaciones que necesitemos?

8. Conceptos fundamentales de Docker: contenedores
¿Qué es un contenedor?
Un contenedor es una instancia ejecutable de una imagen. Puede crear, iniciar, detener, mover o eliminar un contenedor mediante la API o la CLI de Docker. Puede conectar un contenedor a una o más redes, adjuntarle almacenamiento o incluso crear una nueva imagen basada en su estado actual.
De forma predeterminada, un contenedor está relativamente bien aislado de otros contenedores y de su máquina host. Puede controlar qué tan aislados están la red, el almacenamiento u otros subsistemas subyacentes de un contenedor de otros contenedores o de la máquina host.
Un contenedor se define por su imagen, así como por las opciones de configuración que le proporcione al crearlo o iniciarlo. Cuando se quita un contenedor, cualquier cambio en su estado que no esté almacenado en el almacenamiento persistente desaparece.
Referencia:
https://docs.docker.com/get-started/overview/
Características de unos contendores

  • Los contenedores: son una agrupación de procesos que se encuentran dentro de una entidad lógica.
  • Los contenedores están aislados, y tienen recursos limitados.
  • Los contenedores ejecutan procesos de forma nativa en linux.
  • Los contenedores se pueden ver como máquinas virtuales livianas y aisladas.
  • Cada contenedor tiene un ID único, también tiene un nombre
  • Un contenedor es una agrupación de procesos, entidad lógica.
  • Los procesos que se ejecutan en los contenedores sólo tienen rango de acción dentro del espacio del contenedor que se ejecutan.
  • Los contenedores son versátiles, ya que son ligeras y contienen todas las dependencias para su ejecución, garantizando su ejecución en todos lados.
  • Los contenedores son más eficientes, ya que comparten los archivos del sistema base con otros contenedores de manera inmutable. No ejecutan todo el OS, sino sólo procesos.

Chicos aquí el paso a paso para nosotros los usuarios de Linux para configurar nuestro usuario, y ejecutar docker run sin la necesidad de usar sudo

Post-installation steps for Linux

Importante, tener la virtualización activa en la BIOS

Contenedor:
A diferencia de una máquina virtual que proporciona virtualización de hardware, un contenedor proporciona virtualización ligera a nivel de sistema operativo mediante la abstracción del “espacio del usuario”. Los contenedores comparten el núcleo del sistema host con otros contenedores. Un contenedor, que se ejecuta en el sistema operativo host, es una unidad de software estándar que empaqueta código y todas sus dependencias, para que las aplicaciones se puedan ejecutar de forma rápida y fiable de un entorno a otro. Los contenedores no son persistentes y se activan desde imágenes.

Características de un contenedor

El concepto más importante de Docker porque en ellos correrá nuestras aplicaciones.

  • Se pueden comparar con una MV.
  • Un contenedor es una unidad lógica y a su vez una agrupación de ps que corren en la máquina pero aislados del sistema y bajo las especificaciones que le indiquemos.
  • Usa el mismo SO de la máquina anfitriona, el mismo Kernel y los mismo recursos limitados por el usuario.

en resumen un contenedor es como una maquina virtual liviana corren nativamente y lo puedes poner limitaciones por ejemplo tienes una pc con 8 ram y a un contenedor le das 2 gb de ram a otro contenedor le brindas 4 gb de ram

No me la conteiner!

Buena referencia la The Truman Show, con esto no lo olvidaré.

Que es un contenedor?

Un contenedor es como una maquina virtual liviana. Un contenedor es una agrupación lógica, y puede correr de manera nativa en la maquina anfitriona. Se pueden limitar los recursos que puede usar de una manera sencilla.

El contenedor es el concepto más importante que existe en el mundo de Docker
El contenedor es donde van a correr y se van a ejecutar nuestras aplicaciones. Es la forma en que vamos a correr software gracias a Docker. Sin contenedores no habría nada

Ques es un container

  • Un contenedor es un conjunto de procesos que corren nativamente en la máquina, pero que están aislados del resto del sistema.
  • Un contenedor es una unidad lógica.
  • Dicho container está limitado en cuanto a qué cosas puede ver o acceder de la máquina anfitriona

En síntesis, un contenedor es como una maquina virtual.

Un contenedor es una maquina virtual ligera.

interesante!

Un contenedor es una maquina virtual fitness.

cuando te refieres a que esta ejecutando de manera nativa y que están usando el mismo kernel me parece raro, ósea en un windows un contendor linux trabajaría de manera distinta ?

Un contenedor es entonces una agrupación lógica ligera que se ejecuta de forma nativa en una máquina huésped y que esta limitada en recursos y accesos.

CONCEPTS FUNDAMENTAL OF DCOKER: CONTEINERS

Los contenedores es el concepto mas importante de docker ya que es donde nuestras aplicaciones van a estar ejecutándose.

Un contenedor es como una maquina virtual liviana que no pesa tanto, que es mas ágil y que va mas rapido. Pero que nos ofrece casi lo mismo que una maquina virtual.

Un contenedor es una agrupación de procesos que corren nativamente en la maquina pero estan aislados del resto del sistema.

Un contenedor es una unidad lógica no como una maquina virtual que es una agrupación fisica que tiene las abstracciones, no los contenedores simplemente agrupación logica y por eso puede correr de manera nativa en la maquina anfitriona.

Eso contenedor o agrupación lógica esta limitada en cuanto a que cosas puede ver o acceder de la computadora anfitriona , es decir puede correr otro programa de la maquina anfitriona pero solamente deacuerdo a las limitaciones que le pongamos.

  • No tienen forma de consumir más recursos que los que se les permite. Si esta restringido en memoria ram por ejemplo, es la única que pueden usar.
  • A fines prácticos los podemos imaginar cómo maquinas virtuales, pero NO lo son. Máquinas virtuales livianas.
  • Docker corre de forma nativa solo en Linux.
  • Sector del disco: Cuando un contenedor es ejecutado, el daemon de docker le dice, a partir de acá para arriba este disco es tuyo, pero no puedes subir mas arriba.
  • Docker hace que los procesos adentro de un contenedor este aislados del resto del sistema, no le permite ver más allá.
  • Cada contenedor tiene un ID único, también tiene un nombre.

Docker Engine se encarga de lanzar y gestionar los contenedores con nuestras aplicaciones, pero en lugar de exponer los diferentes recursos de hardware de la máquina de manera discreta (es decir, 1 procesador y “x” GB de RAM… para cada aplicación), lo que hace es compartirlos entre todos los contenedores optimizando su uso y eliminando la necesidad de tener sistemas operativos separados para conseguir el aislamiento.
Los procesos de un contenedor se limitan al mismo; es decir que para esos procesos, su universo es lo que existe en dicho contenedor. Por ejemplo, solo se limitan a los recursos asignados al contenedor (disco, RAM, núcleos de procesamiento, etc). En el caso del disco, se le indica al contenedor la ruta del directorio que podrá implementar (ignorando cualquier otro directorio).

Así te ves cuando le dices a tu contenedor a que recursos de tu maquina anfitriona puede acceder:

Contenedores = The Truman Show

Para fines prácticos un contenedor es una máquina virtual

El conteiner es la versión moderna del mito de la caverna de Platón

Me causa ansiedad tantas explicaciones de los mismo una y otra vez sin poner nada a prueba!

Bueno debido a que el comentario con mas likes tien una imagen muerta. pongo estas imagenes que mas o menos explican el concepto de que es un ocntainer y como se relacionan con el docker engine

.

En conclusion estamos contenidos en la 3d dimencion de un contenedor de multiples dimenciones🤯🤯

Contenedor: La piedra fundamentar, podriamos entender un contenedor como una VMs, pero el contenedor es una unidad logica y por eso puede correr de manera nativa, esta limitada en que puede ver o acceder. A fines practicos es como una VMs, pero hiper liviano y corre de manera nativa, corre sobre la maquina nativa

aquí puedes explorar algo más https://aws.amazon.com/es/docker/

Parcero que buenas explicaciones paso a paso. Por fin alguien que explique cómo es y se nota que sabes que es lo que estas enseñando. Bendiciones

Contenedor es como una máquina virtual, a fines prácticos, para el software que queremos correr, nos permite muy fácilmente limitar qué parte de la computadora nativa del sistema anfitriona puede ver.

Comparten:
SO
Kernel
Recursos
Limitados según le asignemos

Un Contenedor es una unidad lógica

Un contenedor podría entenderse cómo una ‘máquina virtual’ pero con restricciones de recursos y accesos.

Aquí la definición y detalle de los contenedores, directamente de la documentación oficial de docker:
https://www.docker.com/resources/what-container

Y aquí algo más aterrizado a redhat, pero con mayor detalle
https://www.redhat.com/en/topics/containers

contenedor= the truman show , que no ve mas alla de lo que quieren que vea

Los contenedores son el concepto fundamental al hablar de docker. Un contenedor es una entidad lógica, una agrupación de procesos que se ejecutan de forma nativa como cualquier otra aplicación en la máquina host.

Un contenedor ejecuta sus procesos de forma nativa

Que es un contenedor ?

* Es la pieza fundamental de docker.
* Es una agrupación de varios procesos. También puede ser un solo proceso.
* Los procesos que se definen para un contenedor, solo pueden vivir en el contexto de ese contenedor.
* Los procesos usarán los recursos que el contenedor defina.
* Los procesos corren de forma nativa en máquinas linux, lo único que se comparte es el kernel. por eso en ambientes productivos se usa linux con docker.
* No son máquinas virtuales.

Me encantó la referencia a Truman jajajaja

Un contenedor es un conjunto de uno o más procesos que son ejecutados nativamente en la máquina anfitriona pero están aislados del resto del sistema.

Un contenedor es una unidad o agrupación lógica, y es por esto que puede correr de manera nativa en la máquina anfitriona; no como una máquina virtual que es una agrupación física (aunque virtualizada) que tiene las abstracciones de memoria, CPU, etc.

La agrupación lógica de un contenedor está limitada en cuanto a qué puede ver o a qué puede acceder de la computadora anfitriona. Puede correr como si fuese cualquier otro servicio o programa de la computadora, pero de acuerdo a las limitaciones que se le sean especificadas.

Contenedores

Agrupación lógica, en la que limitamos el uso de recursos, como una máquina virtual, con la ventaja de que puede correr en múltiples entornos compartiendo información y recursos entre contenedores para lograrlo

¿Qué es un contenedor?
Es donde va a correr nuestra aplicación.
Podríamos entender a un contenedor (a fines prácticos) como una “máquina virtual liviana”, si entendemos que es un entorno que nos permite ejecutar de forma aislada una aplicación. Pero es importante entender que un contenedor en ningún caso intenta emular una computadora física como lo hace una VM.
Un contenedor en cambio es una agrupación de procesos que corren de forma nativa en una máquina pero que están aislados del resto del sistema. Es una unidad lógica que está limitada de lo que puede hacer o acceder de la computadora anfitriona, según lo definamos.