Estos “contenedores” de bajo nivel dedicados también mejoran el rendimiento y la sobrecarga mediante el uso de funciones de aislamiento de recursos del kernel de Linux. A gran escala, su fortaleza proviene de la automatización y el despliegue de aplicaciones y servicios de software. Esta publicación cubre los fundamentos de Docker y tiene como objetivo demostrar cómo comprender y trabajar con los conceptos básicos utilizando la línea de comandos de Linux.
1 – Instalación de Docker
El primer “método principal” en este paso siempre debe garantizar que tenga una versión actualizada de Docker instalada en su sistema, y es la ruta recomendada para instalar Docker. Utiliza un script de instalación de uno de sus dominios oficiales y es sugerido por los desarrolladores.
1 – Instalación de DockerPackage Managers MethodDebian2 – Grupo de usuarios de Docker3 – Contenedores e imágenes4 – Docker Hub5 – Ejecución de contenedores de Docker6 – Cliente CLI de Docker
Método principal
A continuación, inicie el servicio docker:
arco linux
Debian/Ubuntu
Método de administradores de paquetes
Se recomienda utilizar el primer “método principal” de instalación de Docker para instalar siempre la última versión y no utilizar los paquetes de compilación incluidos en el administrador de paquetes de su sistema Linux. Sin embargo, aquí se explica cómo usar las versiones actualizadas del paquete manualmente si desea hacerlo.
arco linux
Usando el administrador de paquetes pacman: Con un ayudante de Aurum como Yaourt, puede obtener acceso a otro paquete que se basa en la rama principal de Docker Git: Recuerde iniciar el servicio docker: Se puede encontrar más información en:
Debian
Para que Debian obtenga una versión actualizada de Docker, debe agregar y actualizar el repositorio apt siguiendo los pasos aquí:
ubuntu
Para que Ubuntu obtenga una versión actualizada de Docker, debe agregar y actualizar el repositorio apt y configurar cualquiera de los “requisitos previos” relevantes siguiendo los pasos aquí:
2 – Grupo de usuarios de Docker
Después de instalar Docker, se devuelve un mensaje que dice: Esto, si se sigue, le permite ejecutar Docker como un usuario no root; con el usuario que agregue al grupo. Si bien esto puede parecer una gran idea, tenga en cuenta las posibles implicaciones que implica agregar usuarios a este grupo. El demonio de Docker requiere privilegios de raíz para realizar su trabajo, por lo que solo los usuarios y las cuentas de usuario de confianza deben agregarse a este grupo y recibir el control del demonio de Docker. Lea esta página sobre la seguridad de Docker para razonar y obtener una mejor explicación de por qué esto es potencialmente un riesgo de seguridad: Una vez que comprenda esto, si desea agregar su usuario de Linux al grupo Docker, use el siguiente comando. Donde scarlz se reemplaza por el nombre de usuario que desea agregar.
Ahora cierre la sesión y vuelva a entrar en su sistema Linux.
El resto de este tutorial asume que está ingresando los comandos en cada paso como un usuario que se ha agregado al grupo docker . SI no hizo esto, simplemente agregue sudo a cada comando de Docker cuando sea necesario.
3 – Contenedores e Imágenes
Docker utiliza el concepto de contenedores para brindar los beneficios y la funcionalidad mencionados en el preámbulo. Un contenedor es una versión muy ligera y básica de un sistema operativo (SO Linux). Solo contiene las partes esenciales necesarias para cualquier propósito que necesite servir. Las imágenes se cargan en un contenedor y son el servicio o programa que desea que se ejecute como un proceso acoplable. Esto podría ser cualquier cosa, desde imágenes personalizadas creadas personalmente hasta servidores web oficiales, bases de datos, etc. Las imágenes oficiales de estos están en manos de “Docker Hub”, que se explica más en una próxima sección. Ingrese este comando para ejecutar una imagen de ejemplo de “hola mundo” en un contenedor de Docker: Esto es lo que la imagen hola-mundo debería tener salida: Esto es también lo que sucedió internamente con el comando anterior:
Docker verificó si la imagen del software hello-world estaba presente en el sistema de archivos local de la máquina host. No se encontró la imagen de hola mundo, por lo que Docker descargó la imagen de Docker Hub. Después de que terminó de descargarse, se cargó como una imagen en un contenedor y se “ejecutó” con éxito.
Las imágenes pueden ser muy simples (como esta) o pueden diseñarse para llevar a cabo tareas más complejas de alto nivel. También puede ser tentador pensar en los contenedores como máquinas virtuales “livianas”, y aunque esta es generalmente una buena analogía hasta cierto punto, no tiene en cuenta ni explica todo de lo que se tratan los contenedores Docker.
4 – Centro acoplable
¿Quién creó la imagen del software “hola mundo”? Docker lo hizo, pero cualquiera puede y es bienvenido a contribuir al catálogo en línea de imágenes de Docker conocido coloquialmente como Docker Hub. Docker Hub alberga la mayoría de los servicios y software más familiares y populares a los que está acostumbrado. Veremos uno o dos de estos más adelante. Por ahora, extraiga una segunda imagen de ejemplo de Docker Hub escribiendo en la barra de búsqueda whalesay en el sitio web de Docker Hub y luego busque la imagen oficial de docker/whalesay . La página para ello se ve así: Las descripciones de las imágenes, los comandos de extracción, las instrucciones y los propietarios siempre se enumeran aquí para cualquier tipo de imagen. Ejecute el comando como se muestra en la página: Que ejecuta la imagen en un contenedor que da como resultado: _____ < abucheo > —– \ \ \ ## . ## ## ## == ## ## ## ## === /”””””””””””””””””/ === ~~~ {~~ ~~~ ~ ~~~ ~~~~ ~~ ~ / ===- ~~~ ___ o / \ \ / ______/ Además, aquí está el dockerfile (archivo de configuración) para la imagen de ballena que acabamos de ejecutar: también es posible buscar imágenes por palabra clave desde la línea de comando: Al igual que la búsqueda en el sitio web, se muestra una lista de los repositorios públicos actualmente disponibles en Docker Hub que coinciden con la palabra clave proporcionada. Algunas consideraciones finales para Docker Hub son:
Puede registrarse para obtener una cuenta gratuita de Docker Hub para cargar sus propias imágenes de Docker. También existen repositorios privados para imágenes de toda la organización. Las compilaciones automatizadas le permiten crear automáticamente nuevas imágenes cuando realiza cambios en una fuente de destino, un repositorio de GitHub o un repositorio de Bitbucket. Los webhooks incorporados le permiten activar acciones después de un envío exitoso a un repositorio (o una compilación automatizada exitosa). La integración general de GitHub y Bitbucket agrega las imágenes de Hub y Docker a sus flujos de trabajo actuales.
5 – Ejecución de contenedores Docker
En este paso, hay más contenedores para ejecutar junto con los detalles de cómo funcionan las estructuras de comandos de Docker. Para comenzar con una ejecución de otro comando de ejemplo: En este último comando docker run comienza creando un nuevo contenedor, como antes. Luego, la imagen que solicitamos es esta vez no solo un programa/servicio, sino ubuntu: 14.04, un entorno completo de sistema operativo Linux. ¡Tenga en cuenta la cita de antes! Como no tenemos esta imagen de Docker (todavía está clasificada y utilizada como imagen por Docker), debe descargarse de Docker Hub. Después de esto, le pedimos a Docker que ejecutara un comando de shell dentro del entorno del nuevo contenedor, que era: Luego vimos el resultado de toda esta secuencia como salida en la línea de comando. Los contenedores Docker solo se ejecutan mientras el comando que especifique esté activo. Entonces, tan pronto como se hizo eco de Hello World, el contenedor se detuvo. Pruebe este nuevo comando que tiene algunas opciones y llama a un shell. La opción -t asigna/comienza un pseudo-tty o terminal dentro del nuevo contenedor. La opción -i nos permite hacer una conexión interactiva tomando el estándar en (STDIN) del contenedor. Que, como hemos llamado bash shell, nos llevará a un símbolo del sistema de bash dentro del contenedor. Los comandos habituales funcionarán en este shell y sistema de archivos. Es solo una versión contenida de un entorno normal de sistema operativo Ubuntu. Use salir o CTRL + D para finalizar la sesión, por lo que también finaliza y detiene este contenedor. Aunque estos son ejemplos útiles, la mayoría de las veces es más probable y común que use Docker con programas o servicios “demonizados”. Así es como se ve esto con el ejemplo “Hello World”: Las diferencias aquí son las opciones de la línea de comando y el ciclo while. La opción -d le dice a Docker que ejecute el contenedor, pero lo pone en segundo plano, para “daemonizarlo”. El bucle contiene un comando que repite permanentemente “hola mundo” en el contenedor con un breve retraso en el medio. Habrás notado que, como se demonizó, en lugar de ver ningún resultado, se devolvió una cadena larga compuesta de dígitos y números: Esto se conoce como ID de contenedor; identifica de forma única una instancia de contenedor para que podamos trabajar con ella. El próximo paso muestra cómo puede monitorear, examinar y descubrir qué sucede dentro de los contenedores demonizados.
6 – Cliente CLI de Docker
Podemos usar la identificación del contenedor para ver qué sucede dentro de nuestro contenedor hello world demonizado. Primero, enumeremos todos los contenedores que se están ejecutando actualmente y sus detalles: El comando docker ps consulta el daemon de Docker para obtener información sobre todos los contenedores que tiene vinculados. Tenga en cuenta el ID de contenedor abreviado en la primera columna y el nombre asignado automáticamente en la columna final. Para verificar el funcionamiento interno del contenedor y ver si nuestro ciclo anterior “hola mundo” todavía se está ejecutando, use: El resultado confirma que está funcionando según lo previsto: Por último, para esto, detener y finalizar un contenedor se logra usando: Autocompletar también funciona para este último comando al ingresar el nombre. Para volver a iniciar el contenedor, simplemente reemplace stop en el último comando con start . O para eliminar el contenedor por completo use: Así que el contenedor de antes ya no está. Sin embargo, la imagen de Ubuntu que hemos estado usando todavía está presente en el sistema. Para ver las imágenes que han sido descargadas y aún están presentes ingrese: Lo que dará una salida similar a: Para eliminar y eliminar imágenes, utilice este comando con el nombre de la imagen como parámetro, p. Autocompletar funciona para los nombres de las imágenes y se pueden pasar varios nombres como parámetros. Una eliminación exitosa da un resultado similar a: Si se devuelve un mensaje de error que afirma que otro contenedor está usando la imagen como referencia y sabe que esto no es cierto. Intente usar la opción -f force con el comando de eliminación rmi : Con esto completamos el ciclo de descarga, creación y eliminación de una imagen y sus contenedores. Docker es un increíble paso adelante en el mundo de la virtualización y la eficiencia de los recursos, pero estos ejemplos aquí son solo para fines de demostración y están destinados a enseñar los conceptos básicos. En la medida de lo posible, intente pensar en cómo este concepto podría beneficiar a un gran proveedor de alojamiento o a una empresa que sirve aplicaciones web para muchos. La publicación número dos en Docker brinda más detalles sobre la administración y el manejo de contenedores. Con algunos ejemplos de servicios y aplicaciones reales que se ejecutan en Docker.