Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Contenedores 101 Digital Ocean CDMX

Hableremos historia de los contenedores, por qué son necesarios, cómo docker llegó a cambiar el panoram, competencia de docker (rkt, etc.), la mejor ruta de aprendizaje y mejores prácticas.

Ähnliche Bücher

Kostenlos mit einer 30-tägigen Testversion von Scribd

Alle anzeigen

Ähnliche Hörbücher

Kostenlos mit einer 30-tägigen Testversion von Scribd

Alle anzeigen
  • Loggen Sie sich ein, um Kommentare anzuzeigen.

  • Gehören Sie zu den Ersten, denen das gefällt!

Contenedores 101 Digital Ocean CDMX

  1. 1. Contenedores 101 Contenedores algo similar a LXC
  2. 2. –Alguien Para entender contenedores, hay que entender procesos.
  3. 3. Procesos de Linux • Linux es un sistema operativo multiprocesamiento. • Los procesos son tareas separadas, cada una con sus propios permisos y responsabilidades. Si un proceso falla, no afectará otro proceso en el sistema. • Cada proceso individual se ejecuta en su propio espacio de dirección virtual y no es capaz de interactuar con otro proceso, excepto a través de mecanismos seguros gestionados por el kernel. • Utilizará el CPU del sistema para ejecutar sus instrucciones y la memoria física del sistema para guardar sus datos. Usará archivos dentro de los sistemas de archivos y puede usar directa o indirectamente los dispositivos físicos en el sistema. • Linux debe realizar un seguimiento del proceso en sí y de los recursos del sistema que tiene para que pueda administrarlo y los demás procesos del sistema de manera justa. No sería justo para los otros procesos en el sistema si un proceso monopolizara la mayor parte de la memoria física del sistema o sus CPU.
  4. 4. CPU • El recurso más valioso del sistema es la CPU. • Linux es un sistema operativo multiprocesamiento, su objetivo es tener un proceso ejecutándose en cada CPU del sistema en todo momento, para maximizar la utilización de la CPU. Si hay más procesos que CPU, el resto de los procesos deben esperar antes de que una CPU quede libre hasta que puedan ejecutarse. • El multiprocesamiento es una idea simple; un proceso se ejecuta hasta que deba esperar, generalmente por algún recurso del sistema; cuando tiene este recurso, puede volver a ejecutarse. • Cada vez que un proceso tiene que esperar, el sistema operativo le quita la CPU y lo entrega a otro proceso. Es el planificador (scheduler) el que elige cuál es el proceso más apropiado para ejecutar a continuación y Linux utiliza una serie de estrategias de planificación para garantizar la equidad.
  5. 5. • Para que Linux pueda administrar los procesos en el sistema, cada proceso está representado por una estructura de datos: task_struct (tarea y proceso son términos que Linux usa indistintamente). El vector tasks es una matriz de punteros a cada estructura de datos task_struct en el sistema. • Esto significa que el número máximo de procesos en el sistema está limitado por el tamaño del vector tasks. A medida que se crean los procesos, se asigna una nueva task_struct desde la memoria del sistema y se agrega al vector de tareas. Para facilitar su búsqueda, el puntero actual señala el proceso actual en ejecución.
  6. 6. Creación de procesos • La llamada fork() al sistema crea un nuevo proceso al duplicar uno existente. • El proceso que llama fork () es el padre, mientras que el nuevo proceso es el hijo. • El padre reanuda la ejecución y el hijo comienza la ejecución en el mismo lugar: donde vuelve la llamada a fork(). • La llamada al sistema fork() regresa del kernel dos veces: una en el proceso padre y otra vez en el hijo recién creado. • fork() esta implementado por la llamada al sistema clone()
  7. 7. Forking • Linux implementa fork() a través de la llamada al sistema clone() que toma una serie de flags que especifican qué recursos deben compartir el proceso primario y secundario. • Las llamadas fork(), vfork() y __clone() invocan la llamada al sistema clone() con los flags necesarios. • La llamada al sistema clone() llama a do_fork(). • do_fork() invoca copy_process()
  8. 8. • copy_process() hace cosas realmente interesantes: • Permite duplicar o compartir recursos como: • Archivos • Filesystems • Espacios de direcciones de procesos • Namespaces • Regresa el apuntador al proceso recién creado
  9. 9. Linux namespaces • Namespaces dividen los recursos del kernel de modo que un conjunto de procesos ve un conjunto de recursos mientras que otro conjunto de procesos ve un conjunto diferente de recursos. Ejemplos de nombres de recursos que pueden existir en múltiples espacios, son ID de proceso, nombres de host, ID de usuario, nombres de archivo y algunos nombres asociados con el acceso a la red y la comunicación entre procesos. • Linux comienza con un solo espacio de nombres de cada tipo, utilizado por todos los procesos. Los procesos pueden crear espacios de nombres adicionales y unir diferentes espacios de nombres. • Los espacios de nombres son un aspecto fundamental de los contenedores en Linux.
  10. 10. Tipos de Namespaces • Mount • Pid • Net • Ipc • UTS • User ID • Control Group
  11. 11. Control Groups (cgroups) • Limitan el uso y consumo de recursos de los procesos • Creados en Google por Paul Menage y Rohit Seth en 2006 • En ese tiempo se llamaba “process containers” • En 2007 se cambia el nombre a control groups • Se incorpora en el kernel de Linux 2.6.24 en Enero de 2008. Versión 1 • Actualmente esta vigente la versión 2, que es una reescritura hecha por Tejun Heo, introducida en la versión 4.5 en Marzo de 2016.
  12. 12. Paul Menage Rohit Seth Tejun Heo
  13. 13. LXC • LXC proporciona virtualización a nivel de sistema operativo a través de un entorno virtual que tiene su propio proceso y espacio de red, en lugar de crear una máquina virtual completa. • LXC se basa en la funcionalidad cgroups de kernel de Linux que se lanzó en la versión 2.6.24. También se basa en otros tipos de funcionalidad de aislamiento de espacio de nombres, que se desarrollaron e integraron en el núcleo principal de Linux. • Inicialmente implementado por IBM en 2008
  14. 14. ¿Porqué son necesarios?
  15. 15. Un poco de historia…
  16. 16. Docker Inc • Sus implantaciones y aportes ayudaron a definir los dos principales estándares de industria que existen sobre Contenedores (2015) • Runtime Specification (runtime-spec) • Image Specification (image-spec) • Ambas especificaciones están mantenidos por la Open Containers Iniciative (OCI) • https://www.opencontainers.org/
  17. 17. Algunas implementaciones
  18. 18. https://katacontainers.io/ https://katacontainers.io/

×