[Docker | 1] Introducción a los conceptos básicos de Docker

 

1 ¿Qué es Docker? 

Docker es una plataforma de contenedorización de aplicaciones de código abierto que puede empaquetar aplicaciones en contenedores para su implementación y operación en diferentes entornos.

Docker se implementa sobre la base de la tecnología de contenedores, que puede crear, lanzar y ejecutar aplicaciones rápidamente, a la vez que proporciona una solución de implementación de aplicaciones ligera, flexible y portátil. 

1.1 Los componentes principales de Docker

Los componentes principales de Docker incluyen:

  1. Motor de Docker : el motor de Docker es el componente central de Docker y se usa para administrar y ejecutar contenedores. El motor de Docker incluye componentes como el demonio de Docker, la CLI de Docker y la API de Docker. Puede realizar operaciones como crear, iniciar, detener y eliminar contenedores a través de la interfaz de línea de comandos o la API.

  2. Imagen de Docker : la imagen de Docker es el formato de empaquetado de la aplicación, que contiene información como el código, las dependencias y la configuración de la aplicación. Las imágenes de Docker se pueden crear a través de Dockerfile u obtenerse de almacenes de imágenes como Docker Hub. Una imagen de Docker es la base de un contenedor y se puede usar para crear e iniciar un contenedor.

  3. Contenedor de Docker : un contenedor de Docker es una instancia en ejecución de una imagen de Docker que puede ejecutar aplicaciones dentro del contenedor. Los contenedores Docker proporcionan un entorno de tiempo de ejecución aislado y liviano que evita conflictos e interferencias entre aplicaciones. Los contenedores Docker se pueden crear, iniciar, detener, eliminar y otras operaciones a través del motor Docker.

1.2 Ventajas de Docker

Las ventajas de Docker incluyen:

  1. Simplifique la implementación de aplicaciones : Docker puede empaquetar aplicaciones en imágenes, evitando dependencias y problemas de configuración, y puede implementar aplicaciones de manera rápida y confiable en diferentes entornos.

  2. Mejore la portabilidad de las aplicaciones : Docker proporciona una solución de implementación de aplicaciones portátil y liviana que puede ejecutar aplicaciones en diferentes sistemas operativos y plataformas de hardware.

  3. Mejore la seguridad de las aplicaciones : Docker proporciona un entorno operativo aislado, que puede evitar interferencias y ataques entre aplicaciones y mejorar la seguridad de las aplicaciones.

  4. Mejore la escalabilidad de la aplicación : Docker puede crear e iniciar contenedores rápidamente y ajustar dinámicamente la cantidad de contenedores de acuerdo con la carga de la aplicación, lo que mejora la escalabilidad de la aplicación.

En resumen, Docker es una plataforma de contenedorización de aplicaciones muy útil que puede mejorar en gran medida el despliegue, la portabilidad, la seguridad y la escalabilidad de las aplicaciones.

2 Principio de implementación de Docker

El principio de implementación de Docker se basa principalmente en la tecnología de contenedores del kernel de Linux, que incluye los siguientes aspectos:

  1. espacio de nombres
  2. Grupo de control (grupo C)
  3. Sistema de archivos de unión (UnionFS)
  4. Imagen de contenedor (Imagen de contenedor)
  5. Envase

2.1 Espacio de nombres

Espacio de nombres (Namespace) : un espacio de nombres es un mecanismo de aislamiento que puede aislar los recursos del sistema, y ​​cada espacio de nombres tiene su propia vista de recursos.

Docker utiliza espacios de nombres para aislar sistemas de archivos, redes, procesos, usuarios e IPC.

Espacios de nombres de uso común en Docker 

Específicamente, los espacios de nombres de uso común en Docker incluyen lo siguiente:

  1. Espacio de nombres del sistema de archivos (espacio de nombres de montaje): cada contenedor tiene su propio espacio de nombres del sistema de archivos, que puede montar su propio sistema de archivos en el contenedor y aislar los sistemas de archivos de otros contenedores. De esta forma, la vista del sistema de archivos en el contenedor es diferente a la del host y otros contenedores, y se puede realizar el aislamiento del sistema de archivos.

  2. Espacio de nombres de red (Network Namespace): cada contenedor tiene su propio espacio de nombres de red, que puede tener sus propios dispositivos de red, direcciones IP, tablas de enrutamiento, etc., y está aislado del host y otros contenedores. De esta forma, la vista de la red en el contenedor es diferente a la de la máquina host y otros contenedores, y se puede lograr el aislamiento de la red.

  3. Espacio de nombres de proceso (espacio de nombres PID): cada contenedor tiene su propio espacio de nombres de proceso y puede tener su propio espacio de ID de proceso, que está aislado del host y otros contenedores. De esta forma, la vista del proceso en el contenedor es diferente a la del host y otros contenedores, y se puede realizar el aislamiento del proceso.

  4. Espacio de nombres de usuario: cada contenedor tiene su propio espacio de nombres de usuario y puede tener su propio espacio de ID de usuario, que está aislado del host y de otros contenedores. De esta forma, la vista del usuario en el contenedor es diferente a la de la máquina host y otros contenedores, y se puede lograr el aislamiento del usuario.

  5. Espacio de nombres IPC (espacio de nombres IPC): cada contenedor tiene su propio espacio de nombres IPC y puede tener su propia cola de mensajes System V IPC y POSIX, etc., aislada del host y otros contenedores. De esta forma, la vista de IPC en el contenedor es diferente a la del host y otros contenedores, y se puede lograr el aislamiento de IPC.

2.2 Grupo de control (grupo C)

Grupo de control (Cgroup) : un grupo de control es un mecanismo de limitación de recursos que puede limitar el uso de recursos de un proceso, como CPU, memoria, disco y red. Docker usa grupos de control para limitar y administrar los recursos del contenedor.

Grupos de control de uso común 

Los grupos de control comúnmente utilizados en Docker incluyen los siguientes:

  1. Grupo de control de CPU : puede limitar el intervalo de tiempo y la cantidad de núcleos de CPU utilizados por el contenedor para evitar que el contenedor ocupe demasiados recursos de CPU y afecte el rendimiento de otros contenedores y el host.

  2. Grupo de control de memoria : puede limitar el tamaño de la memoria y el espacio de intercambio utilizado por el contenedor, etc., para evitar que el contenedor ocupe demasiados recursos de memoria, lo que resulta en memoria insuficiente en el host.

  3. Grupo de control de E/S : puede limitar la velocidad y el ancho de banda de los recursos, como el ancho de banda del disco y de la red que utilizan los contenedores, para evitar que los contenedores ocupen demasiados recursos de E/S y afecten el rendimiento de otros contenedores y hosts.

  4. Grupo de control de dispositivos : puede limitar la autoridad y el alcance del contenedor para acceder y usar el dispositivo, a fin de evitar que el contenedor cause daños o impactos en el dispositivo del host. 

 2.3  Sistema de archivos de unión (UnionFS)

Sistema de archivos de unión (UnionFS) : un sistema de archivos de unión es una jerarquía de sistemas de archivos que puede combinar varios sistemas de archivos en un solo sistema de archivos. Docker utiliza un sistema de archivos conjuntos para implementar capas y compartir imágenes, lo que reduce el uso del espacio de almacenamiento.

El sistema de archivos de unión comúnmente utilizado en Docker es AUFS (Another UnionFS). AUFS es un sistema de archivos implementado basado en el sistema de archivos de unión, que puede fusionar varios sistemas de archivos en un solo sistema de archivos y admite la creación de capas y el uso compartido de espejos.

En Docker, cada contenedor tiene su propia vista del sistema de archivos y el contenedor está aislado de la vista del sistema de archivos de la máquina host y otros contenedores.

Docker utiliza AUFS para implementar capas y compartir imágenes de contenedores. Los principios básicos son los siguientes:

  1. Cada imagen de Docker se compone de varias capas de solo lectura (Capa) y cada capa es un sistema de archivos.
  2. Cuando se inicia el contenedor, Docker usa AUFS para combinar varias capas de solo lectura en una capa de escritura (capa de escritura), que sirve como sistema de archivos raíz del contenedor.
  3. Cuando el contenedor modifica el sistema de archivos, Docker guardará el contenido modificado en la capa de escritura sin afectar la capa original de solo lectura.
  4. Al crear un nuevo contenedor, Docker puede compartir la capa de solo lectura existente, lo que acelera la creación y la implementación del contenedor.

2.4 Imagen de contenedor (Container Image)

Imagen de contenedor : una imagen de contenedor es el formato de empaquetado de una aplicación, que contiene información como el código, las dependencias y la configuración de la aplicación.

Docker usa Dockerfile y Union File System para crear imágenes de contenedores, que pueden crear e implementar aplicaciones rápidamente.

En Docker, cada contenedor se crea a partir de una o más imágenes. A través del mecanismo de estratificación y uso compartido de imágenes de Docker, se pueden combinar varias imágenes para formar una imagen de contenedor completa.

El mecanismo de capas de la imagen de Docker puede reducir en gran medida el espacio de almacenamiento y mejorar la reutilización y escalabilidad de la imagen.

Las imágenes de Docker se pueden definir y crear a través de Dockerfile.

Dockerfile es un archivo de texto que contiene una serie de instrucciones y parámetros para indicarle a Docker que construya una imagen. A través del Dockerfile, puede especificar la imagen base de la imagen del contenedor, los paquetes de software que se instalarán, los archivos de configuración y las instrucciones de inicio.

La gestión y distribución de imágenes de Docker se puede lograr a través de Docker Hub y almacenes privados. Docker Hub es un almacén de imágenes público de Docker, que contiene decenas de miles de imágenes de uso común, donde los usuarios pueden buscar y descargar las imágenes que necesitan. Un repositorio privado es un repositorio de imágenes de Docker creado y administrado por el usuario, que se puede usar para almacenar y distribuir imágenes personalizadas.

Ejemplo de construcción de imagen

Aquí hay un Dockerfile de ejemplo para una imagen de compilación Java de backend:

archivo acoplable

# 基础镜像
FROM openjdk:11-jdk

# 镜像作者信息
MAINTAINER Your Name <[email protected]>

# 设置工作目录
WORKDIR /app

# 复制项目文件到镜像中
COPY ./target/my-application.jar /app/my-application.jar

# 设置容器启动命令
CMD ["java", "-jar", "/app/my-application.jar"]

La imagen base de este Dockerfile es openjdk:11-jdk, que es el entorno de desarrollo de Java 11.

A continuación, establezca el directorio de trabajo del contenedor en /app y copie el archivo my-application.jar generado por la compilación del proyecto en el directorio /app de la imagen.

Finalmente, establezca el comando de inicio del contenedor en java -jar /app/my-application.jar, es decir, use el comando Java para iniciar la aplicación.

Construir

Al construir una imagen, puede usar los siguientes comandos:

docker build -t my-application .

Entre ellos, el parámetro -t especifica el nombre y la etiqueta de la imagen, a saber, my-application.

El último .indica que el Dockerfile en el directorio actual se usa para la construcción.

correr

Una vez que se completa la compilación, el contenedor se puede ejecutar con el siguiente comando:

docker run -p 8080:8080 my-application

Entre ellos, el parámetro -p especifica la asignación de puertos entre el host y el contenedor, es decir, el puerto 8080 del contenedor se asigna al puerto 8080 del host.

my-application es el nombre y la etiqueta de la imagen construida previamente.

2.5 Contenedores

Contenedor : un contenedor es una instancia en ejecución de una imagen que puede ejecutar aplicaciones dentro del contenedor.

Docker utiliza espacios de nombres y grupos de control para aislar y restringir contenedores, lo que proporciona un entorno operativo ligero y aislado.

Container (Contenedor) es un concepto importante en Docker, que es una instancia en ejecución creada por la imagen de Docker. Un contenedor se puede considerar como un entorno operativo independiente y aislado, que contiene información como el entorno de tiempo de ejecución de la aplicación, el sistema de archivos y la configuración de la red.

En Docker, cada contenedor se crea a partir de una o más imágenes. A través del mecanismo de estratificación y uso compartido de imágenes de Docker, se pueden combinar varias imágenes para formar una imagen de contenedor completa. En el contenedor, se puede ejecutar cualquier aplicación, incluida la aplicación web, la base de datos, la cola de mensajes, el caché, etc.

Características del contenedor Docker

Los contenedores Docker tienen las siguientes características:

  1. Ligero: los contenedores son una tecnología de virtualización liviana. En comparación con las máquinas virtuales tradicionales, los contenedores se pueden iniciar y destruir más rápido y consumen menos recursos.

  2. Aislamiento: cada contenedor es un entorno operativo independiente, que está aislado del host y de otros contenedores para evitar conflictos e interferencias entre aplicaciones.

  3. Portabilidad: los contenedores pueden ejecutarse en diferentes plataformas y entornos, con buena portabilidad y repetibilidad.

  4. Escalabilidad: los contenedores se pueden escalar hacia arriba y hacia abajo fácilmente, y la cantidad de contenedores y la asignación de recursos se pueden ajustar automáticamente de acuerdo con la carga de la aplicación.

En Docker, la gestión y operación de contenedores se puede realizar a través de la herramienta de línea de comandos de Docker. Puede usar el comando docker run para crear e iniciar un contenedor, usar el comando docker stop para detener el contenedor, usar el comando docker rm para eliminar el contenedor y usar el comando docker ps para ver el estado de ejecución del contenedor, etc. .

En resumen, un contenedor es un concepto importante en Docker. Es una instancia en ejecución creada por una imagen de Docker y puede considerarse como un entorno en ejecución independiente y aislado. El contenedor Docker tiene las características de peso ligero, aislamiento, portabilidad y escalabilidad, y proporciona una forma eficiente y confiable para la implementación y administración de aplicaciones.

Comandos de operación simple para contenedores

Los siguientes son algunos comandos de operación de contenedores de Docker comúnmente utilizados:

1 Cree e inicie el contenedor:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Entre ellos, OPCIONES son algunos parámetros opcionales, como -p especifica la asignación de puertos, -v especifica el montaje del volumen de datos, -e especifica las variables de entorno, etc.; IMAGE es el nombre de la imagen y la etiqueta que se usará; COMMAND y ARG son contenedores opcionales Comandos y parámetros de inicio.

Por ejemplo, cree e inicie un contenedor basado en nginx:latest image y asigne el puerto 80 del host al puerto 80 del contenedor:

docker run -p 80:80 nginx:latest
2 Ver el estado de funcionamiento del contenedor:
docker ps [OPTIONS]

Entre ellos, OPCIONES son algunos parámetros opcionales, como -a significa ver todos los contenedores, -q significa mostrar solo la ID del contenedor, etc.

Por ejemplo, para ver todos los contenedores que se están ejecutando actualmente:

docker ps
3 Detenga el contenedor:
docker stop [OPTIONS] CONTAINER [CONTAINER...]

Entre ellos, OPCIONES son algunos parámetros opcionales, como -t especifica el tiempo de espera para detener el contenedor.

Por ejemplo, para detener un contenedor llamado my-container:

docker stop my-container
4 Inicie el contenedor detenido:
docker start [OPTIONS] CONTAINER [CONTAINER...]

Entre ellos, OPCIONES son algunos parámetros opcionales, como -un medio para iniciar todos los contenedores detenidos.

Por ejemplo, para iniciar un contenedor llamado my-container:

docker start my-container
5 Eliminar el contenedor:
docker rm [OPTIONS] CONTAINER [CONTAINER...]

Entre ellos, OPCIONES son algunos parámetros opcionales, como -f significa forzar la eliminación del contenedor, incluso si el contenedor se está ejecutando.

Por ejemplo, para eliminar un contenedor llamado my-container:

docker rm my-container
6 Introduzca el contenedor:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Entre ellos, OPCIONES son algunos parámetros opcionales, como -especifica el uso de una terminal interactiva para ingresar al contenedor.

Por ejemplo, ingrese un contenedor llamado my-container y use el comando bash:

docker exec -it my-container bash

Los anteriores son algunos comandos de operación de contenedores de Docker comúnmente utilizados, que se pueden usar para crear, iniciar, detener, eliminar e ingresar contenedores para lograr la administración y operación de contenedores.

2.6 Resumen 

El principio de implementación de Docker se basa principalmente en la tecnología de contenedores del kernel de Linux. A través de componentes como espacios de nombres, grupos de control, sistemas de archivos conjuntos, imágenes de contenedores y contenedores, funciones como el aislamiento, la restricción, el empaquetado y la implementación de aplicaciones son comprendió. Estos componentes cooperan entre sí para realizar las características eficientes, confiables, portátiles y seguras de Docker.

Supongo que te gusta

Origin blog.csdn.net/qq_35133411/article/details/131686362
Recomendado
Clasificación