Una introducción práctica a los contenedores Docker

Una introducción práctica a los contenedores Docker

La popularidad de Docker se disparó desde su introducción en 2013. Las empresas y las personas ahora usan o planean usarlo, ya sea en las instalaciones o en la nube. La flexibilidad de Docker apela a desarrolladores, administradores de sistemas y gestión.

Este artículo muestra cómo comenzar con Docker, que muestra comandos básicos para llevarlo al carro del contenedor.

En este tutorial aprenderás:

  • ¿Qué es Docker y cómo se usa?.
  • Cómo instalar Docker en Linux.
  • Cómo ejecutar contenedores Docker.

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Cualquier distribución de Linux
Software Estibador
Otro Acceso privilegiado a su sistema Linux como root o a través del sudo dominio.
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Conceptos básicos de Docker

Las plataformas de virtualización tradicionales, como Virtualbox y VMware, abstractan una computadora completa, con el objetivo de aislar el anfitrión y invitado sistemas operativos, y requerir que se instale un sistema operativo completo en el invitado máquina virtual (VM). La virtualización de Docker adopta un enfoque diferente: resume solo el sistema operativo, lo que significa que el host y los invitados comparten lo mismo núcleo.

Las ventajas son que huéspedes (llamado contenedores) No tiene que empacar un sistema operativo completo, lo que los hace livianos, de tamaño pequeño y muy rápido para arrancar. Además, al interactuar directamente con el sistema operativo del host, los contenedores Docker no incurren en las penalizaciones de rendimiento de la virtualización tradicional, lo que requiere la traducción de las llamadas del sistema entre los sistemas operativos de huéspedes y host a través de controladores que abstractan un hardware virtual.

Las desventajas son que no es posible alojar a un invitado de Windows en un host de Linux, por ejemplo, y que todos los invitados comparten recursos (CPU, RAM y disco) en el host, lo que significa que un contenedor mal comportado puede derribar todo el servidor. Es seguro que Docker no tiene la intención de reemplazar la virtualización tradicional, que todavía tiene muchos escenarios válidos. Simplemente proporciona otra forma de obtener el aislamiento de la aplicación al tiempo que reduce las dependencias de las bibliotecas, sin perder el rendimiento.

Docker le permite lanzar contenedores, que están ejecutando instancias de imágenes. Una imagen contiene el disco con todas las dependencias de las bibliotecas requeridas para ejecutar una aplicación, mientras que un contenedor contiene el contexto de ejecución. Puede haber múltiples contenedores de la misma imagen que se ejecuta al mismo tiempo, cada uno separado de los otros.

Existe una recomendación de que un contenedor Docker ejecuta una sola aplicación, que con frecuencia se malinterpreta para "ejecutar solo un proceso". No hay problema para ejecutar más de un proceso en un contenedor, siempre y cuando pertenezcan a la misma aplicación. Sin embargo, una aplicación compleja puede requerir la ejecución de múltiples contenedores, como, por ejemplo, una para el servidor web (Apache, Nginx), uno para la aplicación (PHP-FPM) y otro para la base de datos (MySQL, Postgresql, MongoDB ). Esos contenedores pueden ejecutarse en el mismo o en diferentes hosts. Los contenedores en el mismo host se comunican a través de una red virtual administrada por Docker.



Las imágenes de Docker se recuperan de un repositorio llamado registro y se almacenan en caché localmente. Si no se especifica un registro, Docker intentará encontrar la imagen en el repositorio predeterminado, llamado el Centro de acopolador. Docker Hub contiene una enorme cantidad de imágenes listas para ser utilizadas por empresas e individuos, y también puede publicar sus imágenes. Además, también está el Tienda de acopolador, donde las empresas pueden ofrecer profesionalmente imágenes curadas de su software. Se recomienda que pase algún tiempo navegando y aprendiendo cómo funcionan esos repositorios.

Suficiente dicho, instalemos Docker y aprendamos algunos comandos básicos.

Instalación de Docker en Linux

Ubuntu

En Ubuntu Bionic Beaver 18.04, tener Docker instalado es sencillo.

# APT Install Docker.IO 

Debian

Si está ejecutando pruebas o inestables de Debian, el comando anterior también funcionará. Para Debian Stable (estiramiento), visite nuestro motor Docker en la Guía de instalación de Debian 9 Stretch Linux.

Cento

En Centos 1804, es uno beque dominio.

# yum instalación de instalación 

Fedora

En Fedora 28 también está listo para instalarse con uno DNF dominio.

# DNF Install Docker 

Después de la instalación de Docker

Una vez que está instalado, puede verificar el servicio Docker se ejecuta.

# Estado de Docker de servicio 

Si no es así, comience.

# Servicio Docker Inicio 

Una vez que se ejecuta el servicio, puede verificar si hay contenedores en ejecución.

# Docker PS 

Si no quieres escribir sudo Para interactuar con Docker Service, simplemente agregue su usuario al grupo Docker. Debe iniciar sesión nuevamente para hacer que el cambio entren en vigencia.

# usermod -a -g Docker Nombre de usuario 

Después de iniciar sesión, verifique que esté en Docker Group

$ Grupos Roger ADM CDROM SUDO DIP PLOGDEV LPADmin Sambashare estibador 


Ahora no necesitas sudo interactuar con el motor Docker.

Ejecutar un contenedor Docker

Ejecutemos un Hola Mundo envase.

$ Docker Run Hello-World No se puede encontrar la imagen 'Hello-World: Último' Localmente Último: Tirar de Biblioteca/Hello-World D1725B59E92D: Pull Complete Digest: SHA256: 0add3ace90ECB4ADBF777777E9AACF18357296E799F81CABC9FDE470971E! Este mensaje muestra que su instalación parece estar funcionando correctamente. Para generar este mensaje, Docker dio los siguientes pasos: 1. El cliente de Docker contactó al Docker Daemon. 2. El Docker Daemon sacó la imagen de "Hello-World" del Docker Hub. (AMD64) 3. Docker Daemon creó un nuevo contenedor a partir de esa imagen que ejecuta el ejecutable que produce la salida que está leyendo actualmente. 4. El Docker Daemon transmitió esa salida al cliente Docker, que lo envió a su terminal. Para probar algo más ambicioso, puede ejecutar un contenedor de Ubuntu con: $ Docker Run -it Ubuntu Bash Compartir imágenes, automatizar flujos de trabajo y más con una ID de Docker gratuita: https: // Hub.estibador.com/Para más ejemplos e ideas, visite: https: // docs.estibador.com/Get-started/ 
Copiar

El comando es realmente simple, pero sucedieron muchas cosas. Primero, el motor Docker se dio cuenta de que la imagen solicitada no estaba en el caché local (línea 2). Luego, la imagen se extrae del registro de Docker y se almacena localmente (línea 3). Finalmente, se crea, se ejecuta un contenedor (línea 8) y termina. Si vuelve a intentarlo, notará que la ejecución es mucho más rápida ya que ambos, la imagen y el contenedor, se almacenan en caché. Ahora revise las imágenes almacenadas localmente.

$ Docker Images Repositorio de la imagen ID de imagen creada Tamaño Hello-World Último 4AB4C602AA5E Hace 2 semanas 1.84kb 
Copiar

Observe que el Hola Mundo La imagen es mínima, con solo 1.84 kb de tamaño. Esto ilustra que gran parte del sistema operativo del host se utiliza y que la imagen solo contiene las dependencias de la aplicación.

Puedes eliminar esta imagen.

$ Docker Images RM Hello-World $ Docker Images 

Ahora hagamos algo más ambicioso: Pull and Apache Webserver Image y ejecute un contenedor.

$ Docker Pull httpd usando la etiqueta predeterminada: Último último: tirar de la biblioteca/httpd f189db1b88b3: pull completo ba2d31d4e2e7: pull completo 23a65f5e3746: pull completo 5e8eccbd4bc6: pull completo 4C145EEC18D8: PULL completo v1'1c74ffd6fD6 8631904C6E92918B6C7DD82B72512714E7FBC3F1A1ACE2DE17CB2746C401B8FB ESTADO: Descargado NUEVA IMAGEN para HTTPD: LESTA $ DOCKER Repository Repository Id de imagen creada Tamaño de Hello Hello-World Último 4AB4C602AA5E 2 SEMANAS.84kb httpd Último d595a4011ae3 hace 6 semanas 178mb 
Copiar

Luego ejecuta un contenedor desde esta imagen.

$ docker run -d -p 8000: 80 httpd dd703b1590a91bdc10488b48798e42ddecd1c6519324a613f4b5563c21874a98 roger@slash: ~ $ Docker PS contenedor de contenedores.0.0.0: 8000-> 80/TCP Cranky_torvalds 
Copiar

En su forma más simple, el comando sería Docker Run httpd, Pero el contenedor se detendría justo después de que Apache se estaba ejecutando, y no se expusiría ningún puerto. El -d (separar) se necesita opción para que el contenedor permanezca funcionando en segundo plano.

El -P 8000: 80 La opción es mapear el puerto 80 del contenedor al puerto 8000 en el host, haciendo que el servidor web esté disponible en la red. Por defecto, los puertos de contenedores no están expuestos al host. Ahora, puede señalar un navegador web a http: // localhost: 8000 y vea la página de prueba de Apache.



Página predeterminada de Apache que indica que está funcionando

Ok, pero cómo cambiar la página web? Necesitamos vincular una carpeta del host al contenedor /usr/local/apache2/htdocs/ Directorio (veremos más tarde que la imagen de Apache está construida a partir de un Jessy Debian, independientemente del sabor de Linux de su host). Detén el contenedor y vuelva a ejecutarlo.

$ Docker PS $ Docker Stop Cranky_TorValds $ Echo "My Webpage"> Índice.HTML $ Docker Run -d -p 8000: 80 -V "$ pwd":/usr/local/apache2/htdocs/httpd 
Copiar

Creamos un índice.html Archivo en el directorio actual en el host y asignó este directorio dentro del htdocs directorio del contenedor con el -V cambiar. Ahora refresca el navegador web.

Índice.html

Ahora la cobertura: experimentar editando el índice.html Archivo en el host y actualizar el navegador web, sin cambiar el estado del contenedor. Sí, cada vez que se edita un archivo, o se agrega un nuevo archivo al directorio actual, está disponible dentro del contenedor debido al -V cartografía.

Cree otro archivo y acceda a él en el navegador.

$ echo "segunda página"> índice2.html 


Índice2.html

Cuando haya terminado, detenga la ejecución del contenedor.

$ Docker Stop Angry_poincare 

Tenga en cuenta que ahora tiene un servidor web listo para ser ejecutado cuando lo necesite, y no tocó ningún archivo de configuración en su sistema operativo. Todo está encapsulado en la imagen de Apache que se almacena en caché por Docker. Además, puede descargar la imagen e iniciar un contenedor en cualquier otra computadora.

Conclusión

Este artículo introdujo los principales conceptos de Docker y algunos comandos básicos. Espero que comprenda los beneficios y vea que, una vez que se entienden los conceptos, no es complicado usar Docker. Los artículos futuros presentarán otras características y casos de uso.

Más en esta serie de artículos de Docker

  • Cómo interactuar con los contenedores Docker
  • Cómo personalizar las imágenes de Docker con DockerFiles

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Mastering Bash Script Loops
  • Archivos de configuración de Linux: los 30 principales más importantes
  • La mejor distribución de Linux para desarrolladores
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Cosas para instalar en Ubuntu 22.04
  • Descarga de Linux
  • Cómo arrancar dual Kali Linux y Windows 10