Sutra del corazón de Docker (1)

Tabla de contenido

1. Directorio de recursos de Docker

2. ¿Qué es Docker?

3. Docker derivado

4. Idea y núcleo de Docker

4.1.Idea acoplable

4.1.1 Contenedores

4.1.2 Estandarización

4.1.3 Aislamiento

4.2 Núcleo de Docker

4.2.1 Imagen especular

4.2.2 Contenedor (contenedor)

4.2.3 Almacén (donde se almacena la imagen)

5. Qué puede hacer Docker (escenarios de aplicación)

6. Problemas resueltos por Docker

6.1 Entorno de sistema inconsistente

6.2 Fallo del sistema (avalancha)

6.3 La concurrencia es demasiado alta

7.Características de Docker

7.1 Las principales características de Docker son las siguientes:

7.2.Ventajas y desventajas de Docker

8. La diferencia entre la tecnología de contenedores Docker y la máquina virtual

8.1 ¿Cuál es la diferencia entre Docker y una máquina virtual normal?

8.2 ¿Por qué Docker es más rápido que las máquinas virtuales?

8.3 Resumen de comparación

8.4 Limitaciones de Docker:

9. Instalación

9.1.ubuntu

9.2.Windows

10.Comandos comunes de Docker

Comandos básicos de 10.1.docker

Comando de imagen 10.2.docker

Referencias


1. Directorio de recursos de Docker

Página de inicio oficial de Docker: https://www.docker.com Se abre en una nueva ventana
Blog oficial de Docker: https://blog.docker.com/
Documentación oficial de Docker: https://docs.docker.com/
Tienda de Docker: https : //store.docker.com
Docker Cloud: https://cloud.docker.com
Docker Hub: https://hub.docker.com
Repositorio de código fuente de Docker: https://github.com/moby/moby
Lanzamiento de Docker Historial de versiones: https://docs.docker.com/release-notes/
Preguntas frecuentes de Docker: https://docs.docker.com/engine/faq/
API de aplicación remota de Docker: https://docs.docker.com/develop /sdk/

Imagen doméstica Docker

Acelerador en la nube Alibaba: https://help.aliyun.com/document_detail/60750.html
Acelerador NetEase: http://hub-mirror.c.163.com
Acelerador oficial de China: https://registry.docker-cn.com
espejo ustc: https://docker.mirrors.ustc.edu.cn
daocloud: https://www.daocloud.io/mirror#accelerator-doc (usar después del registro)

Registre una cuenta de Docker gratis:

Estibador

2. ¿Qué es Docker?

Docker tiene dos significados:

        1) Hace referencia a la palabra inglesa docker, cuya traducción al chino es "docker";

        2) El contenedor Docker es un motor contenedor de aplicaciones de código abierto que permite a los desarrolladores empaquetar sus aplicaciones y dependencias en una imagen portátil y luego publicarla en cualquier máquina con sistema operativo popular para lograr la virtualización.

3. Docker derivado

        El rápido desarrollo de Docker se debe precisamente a que brinda una solución estandarizada y, por supuesto, también está relacionado con la comodidad, la eficiencia y la ligereza del propio Docker.

        Antes de hablar de Docker, repasemos los problemas espinosos que se encuentran en el proceso tradicional de desarrollo de productos. Desde el desarrollo hasta el lanzamiento, un producto pasa por diferentes sistemas operativos, entornos operativos, configuraciones de aplicaciones y otros entornos, como el entorno de desarrollo, el entorno de prueba y el entorno de producción. Y cuestiones como la compatibilidad entre distintas versiones.

        Estos problemas son una gran prueba para los desarrolladores y el personal de operación y mantenimiento, y también son una prueba de la capacidad de colaboración del equipo. Para evitar la situación embarazosa de "Puedo ejecutar todo aquí, y todo aquí está bien". La aparición de Docker es proporcionar un conjunto de soluciones estándar para resolver este tipo de problemas.

Por ejemplo:

          a. Configuración repetida de componentes, como varias dependencias de componentes: jdk, tomcat, nginx, jboss, Weblogic;

          B. Implementación rápida de aplicaciones: el cliente del sistema de aplicaciones implementa, prepara el entorno relevante con anticipación y puede realizar la copia rápida del mismo entorno, que se encuentra en la implementación e implementación recientes;

         c. Copia de seguridad del entorno: en algunos procesos de desarrollo, después de configurar el entorno, haga un buen trabajo de copia de seguridad del entorno y cambie el servidor de prueba para lograr una implementación o recuperación rápida

        En base a los problemas anteriores encontrados en el proceso de producción real, como el desarrollo, las pruebas y la implementación, hay un mercado donde hay demanda. Docker se enfoca en resolver los puntos débiles anteriores.

        El mantra de Docker es " construir o configurar una vez, ejecutar en cualquier lugar ". La aparición de Docker es una gran ayuda para el personal de desarrollo, operación y mantenimiento. Basado en Docker, el proceso de lanzamiento estandarizado se puede realizar fácilmente y no hay necesidad de preocuparse por los problemas causados ​​por diferentes entornos.

        De hecho, el uso de Docker puede entenderse como: empaquetar aplicaciones implementadas, complementos, middleware y sistemas operativos. Elimina el problema de diferentes sistemas operativos que ejecutan diferentes resultados.

4. Idea y núcleo de Docker

Ideas (Características): Contenedores, Estandarización, Aislamiento

Núcleo: espejo, contenedor, almacén

Docker utiliza un patrón de arquitectura cliente-servidor (C/S) y utiliza API remotas para administrar y crear contenedores Docker.

  • Cliente de Docker (cliente) : el cliente de Docker utiliza el SDK de Docker (https://docs.docker.com/develop/sdk/) para comunicarse con el demonio de Docker a través de la línea de comandos u otras herramientas.
  • Docker host (Host) : una máquina física o virtual utilizada para ejecutar el demonio y los contenedores de Docker.

Docker consta de tres conceptos básicos:

  • Imagen : una imagen de Docker es equivalente a un sistema de archivos raíz. Por ejemplo, la imagen oficial ubuntu:16.04 contiene un conjunto completo del sistema de archivos raíz del sistema mínimo Ubuntu16.04.
  • Contenedor : la relación entre la imagen y el contenedor es como las clases y las instancias en la programación orientada a objetos.Mirror es una definición estática, y el contenedor es una entidad cuando se ejecuta la duplicación. Los contenedores se pueden crear, iniciar, detener, eliminar, pausar, etc.
  • Almacén (Repositorio) : El almacén puede buscar en un centro de control de código para guardar la imagen.

4.1.Idea acoplable

4.1.1 Contenedores

        Antes de transportar mercancías sin contenedores, las cosas están dispersas y son fáciles de perder. Después de tener contenedores, las mercancías no son fáciles de perder. Podemos pensar en las mercancías como programas. Actualmente, tenemos que implementar el programa en una nueva máquina, que puede no start, por ejemplo, less Para archivos de configuración o datos faltantes, el contenedor docker puede garantizar que a nuestro programa no le falte nada sin importar dónde se ejecute.

4.1.2 Estandarización

1) Método de envío

        Docker tiene una súper terminal para transportar cosas. Donde sea que se necesiten bienes, la ballena primero enviará los bienes a la súper terminal, y luego la ballena entregará los bienes desde la súper terminal al destino. Para la tecnología correspondiente, por ejemplo, queremos usar aplicaciones de escritorio Para implementar en una computadora portátil, podemos elegir usar QQ para enviarlo o usar un disco U para copiarlo. Docker estandariza este proceso. Solo necesitamos ejecutar un comando docker en el escritorio para enviar la ballena y envía el programa al superdock, luego ejecuta un comando docker en el notebook, y luego la ballena envía el programa desde el superdock al notebook.

2) método de almacenamiento

        Cuando almacenamos el programa en el portátil, necesitamos un directorio, y tenemos que recordar este directorio, porque es posible que tengamos que modificarlo la próxima vez. Después de tener la ventana acoplable, no tenemos que recordar dónde está el programa. uno que usamos Todo lo que se necesita es un comando.

3) interfaz API

        Docker proporciona una serie de interfaces api de descanso, que incluyen iniciar, detener, ver, eliminar, etc. para docker, es decir, nuestra aplicación. Por ejemplo, cuando queremos iniciar tomcat, debemos ejecutar el comando de inicio y cuando queremos detener, necesitamos ejecutar el comando de apagado, si no es tomcat, es posible que necesitemos otros comandos. Con docker, podemos operarlo recordando el comando docker.

4.1.3 Aislamiento

        Cuando usamos una máquina virtual, tenemos nuestra propia CPU, disco duro y memoria, y no sentimos la existencia de un host externo en absoluto. Docker es similar, pero es más ligero. Puede tomar unos minutos para nosotros creamos una máquina virtual, pero Docker solo tarda un segundo. La tecnología de nivel más bajo es un mecanismo de restricción del kernel de Linux, llamado LXC. LXC es una tecnología de virtualización de contenedores liviana. Aísla procesos y recursos con la mayor eficiencia. A través de cgroup, espacio de nombres y otras restricciones, el grupo de proceso de aislamiento utiliza los recursos físicos, como CPU, MEMORIA, etc., este mecanismo se agregó al kernel de Linux hace 7 u 8 años, y no se hizo popular hasta el nacimiento. de docker en 2013. Quizás se pregunte por qué una tecnología tan buena ha estado enterrada durante tantos años. ¿Qué descubrió la gente? Los héroes hacen los tiempos y los tiempos hacen los héroes. Si no hay computación en la nube, desarrollo ágil, alta frecuencia los requisitos de escalado elástico y el rápido desarrollo de la industria de TI durante tantos años, no habrá ventana acoplable.

4.2 Núcleo de Docker

Imagen de Docker: contiene todo sobre la aplicación y sus dependencias. Los contenedores de Docker se pueden crear utilizando imágenes de Docker .

Contenedor de Docker: un contenedor de Docker es una instancia en ejecución creada a partir de una imagen de Docker. Cada contenedor está aislado entre sí, con su propio sistema de archivos, red y espacio de proceso.

Repositorio de Docker: un repositorio de Docker es un lugar para almacenar y compartir imágenes de Docker. Los repositorios públicos de Docker incluyen Docker Hub y Google Container Registry.

Juntos, estos componentes forman el núcleo de Docker y hacen de Docker una poderosa herramienta de contenedorización de aplicaciones.

4.2.1 Imagen especular

         Una imagen de Docker es similar a una imagen de máquina virtual, que puede entenderse como una plantilla de solo lectura.

1) Definición

        La imagen de Docker se puede considerar como un sistema de archivos especial que proporciona programas, bibliotecas, recursos, configuraciones y algunos parámetros de configuración preparados en tiempo de ejecución (como volúmenes anónimos, variables de entorno, usuarios, etc.) necesarios para el tiempo de ejecución del contenedor;

        Un espejo puede contener un entorno de sistema operativo básico (por ejemplo: Centos), que se puede llamar un espejo Centos

2) Función

​ Similar a una instantánea de una máquina virtual, utilizada para crear un nuevo contenedor (la operación de servicio final o la operación del proyecto está en el contenedor);

3) Características

​ La imagen no contiene datos dinámicos y su contenido no cambiará después de la construcción;

4.2.2 Contenedor (contenedor)

        Antes de transportar mercancías sin contenedores, las cosas están dispersas y son fáciles de perder. Después de tener contenedores, las mercancías no son fáciles de perder. Podemos pensar en las mercancías como programas. Actualmente, tenemos que implementar el programa en una nueva máquina, que puede no start, por ejemplo, less ¿Qué pasa con el archivo de configuración o qué datos faltan? Con el contenedor docker podemos asegurar que a nuestro programa no le faltará nada sin importar dónde se ejecute.

Qué es un contenedor: un contenedor es equivalente a una máquina virtual

1) Un lugar para ejecutar uno o un grupo de programas de forma independiente, similar a una caja de arena liviana, Docker usa contenedores para ejecutar y aislar aplicaciones  

2) Con un contenedor, todos los recursos necesarios para el funcionamiento del software pueden empaquetarse en un contenedor aislado para ejecutarse por separado;

3) Este contenedor puede entenderse como un sistema Linux simple;

4) Un contenedor es una aplicación que ejecuta una instancia creada a partir de un espejo, pero puede usar DockerAPI o CLI para crear, iniciar, detener, mover o eliminar un contenedor, y estos contenedores están aislados entre sí y son invisibles entre sí;

5) Puede ejecutarse en una máquina local, una máquina virtual o implementarse en la nube;

6) Ejecute la aplicación usando Docker Compose;

4.2.3 Almacén (donde se almacena la imagen)

El almacén de Docker es similar al almacén de código, similar a Git, y es el lugar donde Docker almacena de forma centralizada los archivos de imagen;

El almacén espejo de Docker tiene:

        1) Almacén compartido del concentrador Docker;

        2) Registro de depósito privado;

        3) Harbor Enterprise Private Warehouse, que es un paquete más avanzado de Docker Registry;

        4) Almacén privado personal de Alibaba Cloud.

Nota: La diferencia entre el almacén de Docker y el servidor de registro de almacén (Registro) El
servidor de registro de almacén es el lugar donde se almacena el almacén. A menudo hay varios almacenes almacenados en él. Cada almacén almacena de forma centralizada un determinado tipo de imagen, como el almacén que almacena la imagen del sistema operativo CentOS Puede haber muchas versiones diferentes del espejo, se llama el almacén CentOS

5. Qué puede hacer Docker (escenarios de aplicación)

Entonces, para resumir, ¿qué puede hacer Docker? Mi resumen personal es el siguiente:

1) Crear rápidamente un entorno de desarrollo o una replicación del entorno;

        El método tradicional instala el software uno por uno. Realmente lleva mucho tiempo instalar una gran cantidad de software. El uso de la tecnología de contenedores ahorra tiempo y esfuerzo. ¿Por qué no hacerlo? Le permite poner el entorno operativo y la configuración en el código y luego implementar.La misma configuración de Docker se puede usar en diferentes entornos, lo que reduce el acoplamiento entre los requisitos de hardware y los entornos de aplicación.

2) El entorno operativo y la configuración se pueden colocar en el código e implementar;

3) Puede usar docker-compose para simular el entorno de producción;

4) Realizar pruebas automáticas;

        Solo imagine esa pregunta, cómo escribir casos de prueba de integración automatizados, estos casos de prueba no tardan mucho en comenzar a ejecutarse y los usuarios pueden administrarlos fácilmente.

Esto no se refiere a ejecutar casos de prueba en Docker, sino a ejecutar casos de prueba junto con imágenes. Hay una gran ventaja cuando escribe pruebas contra una imagen acoplable. Aquí hay una breve introducción a mi proceso de prueba: ejecute dos imágenes acoplables (aplicación + base de datos), cargue datos cuando se inicie MySQL y use la API en la ventana acoplable de la aplicación.

5) Use imágenes acoplables para autoimplementación, etc.

6) Limite el uso de la CPU, la memoria y el disco duro más grandes de la aplicación para desempeñar un papel de aislamiento y evitar la situación de "una pieza de código genera un bucle infinito, llena el disco y otros programas se ven afectados";

7) Microservicios

        Arquitectura de microservicios: divida una aplicación monolítica en servicios individuales poco acoplados. Cada servicio se empaqueta como una imagen de docker y utiliza docker-compose para simular el entorno de producción (revisar redes de docker). Puede llevar mucho tiempo y ser laborioso al principio, pero a la larga, eventualmente conducirá a una gran productividad.

8) Despliegue continuo

        Se dice que Docker es naturalmente adecuado para la integración continua/implementación continua, al usar Docker en la implementación, la implementación continua será muy simple y comenzará de nuevo después de ingresar una nueva imagen.

En cuanto a la automatización de esta parte, ya hay muchas opciones para elegir, y Kubernetes es un nombre familiar. Kubernetes es un sistema de gestión de clústeres de contenedores. Es una plataforma de código abierto que puede realizar funciones como la implementación automática, la expansión y contracción automáticas y el mantenimiento de clústeres de contenedores.

9) Expansión de QPS (Escalado de QPS)

        Docker lo ayuda a escalar horizontalmente fácilmente al crear otro contenedor. Si encuentra un gran pico de tráfico, Docker puede ayudarlo a resolver el problema: simplemente agregue más máquinas y aumente la cantidad de contenedores que se ejecutan detrás del balanceador de carga.

En general, los usos de Docker, actualmente hay tres categorías

        1. Proporcionar un entorno desechable. Por ejemplo, pruebe localmente el software de otras personas y proporcione un entorno para la prueba y construcción de unidades durante la integración continua
        2. Proporcione servicios de nube elástica. Debido a que el contenedor Docker se puede abrir y cerrar en cualquier momento, es muy adecuado para la expansión y contracción dinámica
        3. Establezca una arquitectura de microservicio. A través de múltiples contenedores, una máquina puede ejecutar múltiples servicios, por lo que la arquitectura de microservicios se puede simular localmente

6. Problemas resueltos por Docker

        Docker resuelve el problema de implementar y ejecutar aplicaciones en diferentes entornos. Tradicionalmente, las aplicaciones requerían configuración e instalación en cada entorno, lo que requería mucho tiempo y era propenso a errores. Con Docker, una aplicación y sus dependencias se pueden empaquetar en un solo contenedor, que luego se puede implementar y ejecutar fácilmente en cualquier entorno. Esto permite a los desarrolladores entregar aplicaciones más rápido y asegurarse de que se comporten de manera uniforme en todos los entornos.

6.1 Entorno de sistema inconsistente

Desarrollo: No tengo problema localmente O&M: El servidor no tiene problema Este problema se convierte en una pelota.

¿Qué necesita una aplicación para iniciarse normalmente? Por ejemplo, una aplicación web java.

Se requiere un sistema operativo y jdk, tomcat, nuestro código y archivos de configuración además del sistema operativo.

Los cambios en el sistema operativo pueden hacer que nuestra aplicación no se abra, por ejemplo, llamamos a algunos comandos del sistema.

La versión jdk también puede hacer que el programa falle, por ejemplo, el archivo de clase debe compilarse con 1.7 e instalamos un jdk 1.6.

La versión de tomcat también puede causar fallas, por ejemplo, algunas configuraciones de la versión anterior ya no son compatibles con la nueva versión.

Para el código, por ejemplo, se utiliza un archivo en el disco C o disco D, o se utilizan algunos códigos de entorno del sistema.

Si lo configuramos, puede que nos falte algún archivo de configuración determinado y así sucesivamente.

docker está aquí, coloca el sistema operativo, jdk, tomcat, el código y la configuración en el contenedor. Luego, se empaqueta y se coloca en la ballena, y la ballena lo envía al servidor. ¿Cómo funciona en mi máquina? En otras máquinas No habrá problemas En una palabra, Docker resuelve los problemas causados ​​​​por las inconsistencias en el entorno operativo.

6.2 Fallo del sistema (avalancha)

    Si tiene raíces en el servidor compartido de otras personas, puede tener esa experiencia. De alguna manera, descubre que su programa se cuelga. Si verifica el motivo, no hay suficiente memoria, o el disco duro está lleno, o encuentra que un Cierto servicio se ha ralentizado o incluso golpeado Los terminales están relativamente atascados, pero Linux en sí mismo es un sistema operativo multiusuario y puede ser utilizado por múltiples usuarios. El aislamiento de Docker puede resolver este problema. Incluso si los programas de otras personas todavía están en un bucle sin fin y consume CPU a lo loco, es mejor empaquetarlos y registrarlos a lo loco. El disco duro está lleno o la memoria se pierde. Si la memoria está llena, no hará que nuestro programa se ejecute incorrectamente. Porque docker es limitado cuando se inicia, el disco duro de la CPU máxima que utiliza, si se excede, matará el proceso correspondiente.

6.3 La concurrencia es demasiado alta

        El volumen de negocios de la mayoría de los sistemas no es promedio todos los días, especialmente para algunos sistemas de comercio electrónico, siempre hay varias veces o incluso docenas de veces el volumen de negocios todos los días. En términos de escala, es un gran desperdicio, por lo que la máquina se expande temporalmente antes del festival, y los nodos redundantes se desconectan después del festival, lo que genera una carga de trabajo muy grande para la operación y el mantenimiento. Se implementan varios servicios en cada máquina. Necesitamos java, tocmat, etc. para iniciar el programa , y es posible que no podamos iniciar y depurar. Este es un trabajo muy desagradable. Con docker, todo mejora. Simplemente haga clic Un clic del servidor puede cambiar de 10 a 100 o incluso 1000, 1W. Es cuestión de minutos.

        ¿Por qué es tan rápido? Enviamos nuestro programa de manera estándar, lo descargamos y lo ejecutamos de manera estándar. Se puede hacer ejecutando uno o dos comandos en cada máquina. Puede dejar que el programa se ejecute normalmente y no tienes que preocuparte por los problemas.
        Docker es un contenedor para aplicaciones, al igual que una taza puede contener agua, un portalápices puede contener bolígrafos, una mochila puede contener libros, puede poner palabras de saludo en la ventana acoplable, puede poner sitios web en la ventana acoplable y puede poner cualquier programa que desee. quiero poner en la ventana acoplable

7.Características de Docker

7.1 Las principales características de Docker son las siguientes:

1) Aislamiento del sistema de archivos

Cada contenedor de procesos se ejecuta en un sistema de archivos raíz completamente independiente.

2) Aislamiento de recursos

A cada contenedor de procesos se le pueden asignar diferentes recursos del sistema, como CPU y memoria, mediante cgroups.

3) Aislamiento de red

Cada contenedor de procesos se ejecuta en su propio espacio de nombres de red, con su propia interfaz virtual y dirección IP.

4) copia en escritura

El sistema de archivos raíz se crea utilizando un método de copia en escritura, lo que hace que la implementación sea extremadamente rápida y ahorra memoria y espacio en el disco duro.

5) Registro

Docker recopilará y registrará el flujo estándar (stdout/stderr/stdin) de cada contenedor de proceso para la recuperación en tiempo real o por lotes.

6) Gestión del Cambio

Los cambios en el sistema de archivos del contenedor se pueden enviar a una nueva imagen y reutilizar para crear más contenedores sin el uso de plantillas o configuración manual.

7) Concha Interactiva

Docker puede asignar un terminal virtual y adjuntarlo a la entrada estándar de cualquier contenedor, por ejemplo, para ejecutar un shell interactivo único.

7.2.Ventajas y desventajas de Docker

Docker tiene las siguientes ventajas:

1) La cantidad de código es pequeña y la velocidad de ejecución es rápida. Docker inicia una instancia de contenedor en muy poco tiempo, alrededor de 1-2 segundos.

2) Docker es altamente adaptable. Puede ejecutarse en una computadora portátil, una máquina virtual en un centro de datos o incluso en cualquier nube.

3) Docker es compatible con los sistemas operativos Linux, Unix y Windows.

4) Google, Microsoft, Amazon e IBM son compatibles con Docker.

Docker tiene las siguientes desventajas:

1) Docker es adecuado para computación, pero no para almacenamiento.

2) Docker no es adecuado para instalar bases de datos y otro software o servicios que requieran almacenamiento de datos.

3) Docker no es adecuado para almacenar grandes cantidades de datos, por lo que los datos y registros generados por el contenedor Docker deben colocarse fuera del contenedor. El problema de almacenamiento de datos de Docker se puede solucionar mediante NFS, particiones de disco mapeadas, etc.

8. La diferencia entre la tecnología de contenedores Docker y la máquina virtual

        La virtualización se puede realizar no solo a través de la simulación de hardware, sino también a través del software del sistema operativo, mientras que la tecnología de contenedores es más elegante. Hace un uso completo de los mecanismos y características existentes del propio sistema operativo, y puede lograr máquinas virtuales mucho más livianas que las tradicionales. máquinas virtuales Virtualización cuantitativa Por lo tanto, algunas personas incluso lo llaman una tecnología de " nueva generación de virtualización ", y cariñosamente llaman a la plataforma en la nube basada en contenedores "nube de contenedores".

        No hay duda de que Docker es la mejor entre muchas tecnologías de contenedores, y es un color deslumbrante y brillante en el desarrollo de la tecnología de contenedores.

Máquina virtual: la máquina virtual es a través de Hypervisor (sistema de administración de máquinas virtuales, estación de trabajo VMWare común, VirtualBox), hardware virtual como tarjeta de red, CPU, memoria, etc., y luego crea una máquina virtual en ella, cada máquina virtual es independiente operación El sistema tiene su propio núcleo del sistema.

Contenedores: los contenedores usan espacios de nombres para aislar recursos como sistemas de archivos, procesos, redes y dispositivos, y usan cgroups para restringir permisos y recursos de CPU, de modo que los contenedores no se afecten entre sí y no puedan afectar al host .

        Actualmente, Docker utiliza internamente Linux Containers (LXC), que se ejecuta en el mismo sistema operativo que su máquina host. Esto le permite compartir muchos recursos del sistema con la máquina host. También utilizará AuFS como sistema de archivos y también administrará la red por usted.

8.1 ¿Cuál es la diferencia entre Docker y una máquina virtual normal?

Compara artículos Estibador máquina virtual
puesta en marcha segundo nivel nivel de minutos
pérdida de rendimiento casi sin pérdida de rendimiento Gran pérdida
Pérdida de disco duro MEGABYTE ES
aislamiento docker pertenece al aislamiento entre procesos Las máquinas virtuales permiten el aislamiento a nivel del sistema

1) Utilización del sistema

Docker es más ligero y la arquitectura de Docker puede compartir un kernel y una biblioteca de aplicaciones compartida, ocupando una cantidad muy pequeña de memoria. En el mismo entorno de hardware, la cantidad de imágenes que se ejecutan en Docker es mucho mayor que la cantidad de máquinas virtuales, y la tasa de utilización del sistema es muy alta.

2) Seguridad

La seguridad de Docker también es más débil . La raíz del inquilino de Docker es equivalente a la raíz de la máquina host. Una vez que el usuario en el contenedor se actualiza de la autoridad de usuario normal a la autoridad raíz, tendrá directamente la autoridad raíz de la máquina host y luego podrá realizar operaciones ilimitadas. La autoridad raíz del inquilino de la máquina virtual está separada de la autoridad raíz de la máquina virtual del host, y la máquina virtual utiliza tecnología de aislamiento de hardware de anillo 1, como VT-d y VT-x de Intel, que evita que las máquinas virtuales se abran paso e interactúen entre sí. interacción, y los contenedores aún no han tenido ninguna forma de aislamiento de hardware, lo que hace que los contenedores sean vulnerables a los ataques.

3) Manejabilidad

Las herramientas de administración centralizada de Docker aún no están maduras. Varias tecnologías de virtualización tienen herramientas de administración maduras, por ejemplo, VMware vCenter brinda capacidades completas de administración de máquinas virtuales.

4) Disponibilidad y recuperabilidad

El soporte de alta disponibilidad de Docker para empresas se realiza mediante una rápida redistribución. La virtualización tiene mecanismos de garantía maduros, como equilibrio de carga, alta disponibilidad, tolerancia a fallas, migración y protección de datos que han sido probados en la práctica de producción. VMware puede prometer una alta disponibilidad del 99,999 % de las máquinas virtuales para garantizar la continuidad del negocio.

5) Crear y eliminar velocidad

La creación de virtualización está en el nivel de minutos y la creación de contenedores de Docker está en el segundo nivel.La naturaleza iterativa rápida de Docker determina que se puede ahorrar mucho tiempo en el desarrollo, las pruebas y la implementación.

6) Velocidad de entrega y despliegue

Las máquinas virtuales pueden lograr la consistencia de la entrega del entorno a través de la duplicación, pero la distribución de la duplicación no puede ser sistemática; Docker registra el proceso de construcción del contenedor en Dockerfile, que puede realizar una distribución rápida y una implementación rápida en el clúster;

8.2 ¿Por qué Docker es más rápido que las máquinas virtuales?

1. Docker tiene menos capas de abstracción que las máquinas virtuales;

2. Docker usa el kernel de la máquina host y la VM necesita un sistema operativo invitado;

3. Al crear un nuevo contenedor, Docker no necesita volver a cargar un sistema operativo como una máquina virtual.La máquina virtual carga el sistema operativo invitado en el nivel de minutos. Docker, por su parte, utiliza el sistema operativo de la máquina host, omitiendo esta complicada operación, en el segundo nivel ;

8.3 Resumen de comparación

Mismo punto:

        Docker, la tecnología de contenedores y la tecnología de máquinas virtuales son todas tecnologías de virtualización.

diferencia:

        Docker es más eficiente que las máquinas virtuales. Ha llegado al punto de arrancar en segundos.

Ventajas de docker en comparación con VM:

1) Más pequeño y más rápido que VM, la reducción de tamaño del contenedor Docker simplifica en gran medida la sobrecarga de distribución
a la nube y el tiempo de distribución en comparación con toda la máquina virtual. Docker solo tarda unos segundos en iniciar una instancia de contenedor.

2) Docker es una plataforma abierta para crear, publicar y ejecutar aplicaciones distribuidas.

3) Los desarrolladores no necesitan saber qué sistema operativo Linux es específico

4) Google, Microsoft (azure), Amazon, IBM, etc., todos son compatibles con Docker.

5) Docker es compatible con los sistemas operativos Unix/Linux, así como con Windows y Mac.

8.4 Limitaciones de Docker:

        Docker es más útil cuando se usa para aplicaciones, pero no para datos. Los registros, las bases de datos, etc. generalmente se colocan fuera del contenedor de Docker. La imagen de un contenedor suele ser muy pequeña y no necesita almacenar una gran cantidad de datos.El almacenamiento puede ser utilizado por montaje externo, como: NFS, ipsan, MFS, etc., o el comando docker, -v to mapear particiones de disco.
En resumen, la ventana acoplable solo se usa para la informática y el almacenamiento se entrega a otros.

9. Instalación

Requisitos de la versión de CentOS

El sitio web oficial requiere que se use la versión estable de CentOS7 y, al mismo tiempo:

  • habilitar centos-extras
  • Se recomienda utilizar el controlador de almacenamiento overlay2

9.1.ubuntu

Es muy fácil instalar Docker en ubuntu, solo ejecuta el siguiente comando

sudo apt-get install lxc-docker

9.2.Windows

1) Condiciones previas

        Windows debe ser una versión de 64 bits. Las funciones de contenedor y Hyper-V en el sistema operativo Windows deben estar habilitadas (el soporte de virtualización de hardware en la configuración del BIOS está activado).

2) descarga de la ventana acoplable

        Paso 1: visite la página de descarga de Docker ( https://www.docker.com/products/docker-desktop ) y haga clic en el botón Descargar para Windows.

Paso dos: haga clic en cualquier enlace de descarga Obtener Docker. Docker para Windows se divide en una versión estable (Stable) y una versión anterior (Edge). La versión preliminar contiene algunas funciones nuevas, pero es posible que no sea lo suficientemente estable. Después de hacer clic en el enlace de descarga, se descarga un paquete de instalación denominado Docker para Windows Installer.exe en el directorio de descarga predeterminado.


3) instalar 

Busque el paquete de instalación descargado en el paso anterior y ejecútelo.

Ejecute el asistente de instalación como administrador y siga las indicaciones para completar todo el proceso de instalación paso a paso. Una vez completada la instalación, Docker se iniciará automáticamente como un servicio del sistema y verá el icono de ballena grande de Docker en la barra de notificaciones de Windows.

 

4) Verificar

Abra la línea de comandos o la interfaz de PowerShell e intente ejecutar docker versionel comando.

Preste atención a la salida del comando, donde la propiedad OS/Arch en la sección Servidor muestra que el sistema operativo actual es linux/amd64.

Esto se debe a que, en la instalación predeterminada, el demonio Docker se ejecuta en un Linux ligero en una máquina virtual Hyper-V. En este caso, solo puede ejecutar contenedores de Linux en Docker para Windows.

Si desea ejecutar contenedores nativos de Windows (contenedores nativos de Windows), puede hacer clic con el botón derecho en el ícono de la ballena Docker en la barra de notificaciones de Windows y seleccionar "Cambiar a contenedores de Windows".

El cambio también se puede realizar con el siguiente comando (ingrese al directorio \Archivos de programa\Docker\Docker para ejecutar).

C:\Program Files\Docker\Docker> .\dockercli -SwitchDaemon

Si la función de contenedor de Windows no está habilitada, verá el mensaje que se muestra en la figura a continuación.
 


Si la función Contenedores de Windows se ha activado, solo se necesitan unos segundos para completar el cambio. docker versionUna vez que se completa el cambio, el resultado de ejecutar el comando en la línea de comando es el siguiente.

C:\> docker version

Se puede ver que la información de la versión del servidor ahora ha cambiado a windows/amd64. Esto significa que el demonio de Docker se ejecuta en el kernel nativo de Windows y solo puede ejecutar contenedores de Windows.

Al mismo tiempo, también se puede encontrar que el valor del atributo Experimental es verdadero. Esto indica que la versión actualmente en ejecución de Docker es experimental.

Como se mencionó anteriormente, Docker para Windows tiene dos versiones: la versión estable y la versión preliminar . Windows Containers es una función experimental en Early Access.

Los lectores pueden dockercli -Versionverificar la versión actual de Docker ejecutando el comando.

dockercli Los comandos están en el directorio C:\Program Files\Docker\Docker.

C:\Program Files\Docker\Docker> .\dockercli -Version


Versión de Docker para Windows
: 18.01.0-ce-win48 (15285)
Canal: edge
Sha1: ee2282129dec07b8c67890bd26865c8eccdea88e
Nombre del sistema operativo: Windows 10 Pro
Windows Edition: Professional
Número de compilación de Windows: 16299

Docker para Windows incluye el motor de Docker (cliente y daemon), Docker Compose, Docker Machine y la línea de comandos de Docker Notary.

Confirme que cada módulo se haya instalado correctamente con los siguientes comandos.

C:\> docker --version
Docker versión 18.01.0-ce, build 03596f5

C:\> docker-compose --version
docker-compose versión 1.18.0, build 8dd22a96

C:\> docker-machine --version
docker- machine.exe versión 0.13.0, compilación 9ba6da9

C:\> versión de notario versión
de notario
: 0.4.3
Git commit: 9211198

10.Comandos comunes de Docker

Comandos básicos de 10.1.docker

​#Iniciar ventana acoplable

ventana acoplable de inicio systemctl

# cerrar ventana acoplable

systemctl detener la ventana acoplable

# reiniciar la ventana acoplable

ventana acoplable de reinicio systemctl

La configuración de #docker se inicia automáticamente cuando se inicia el servicio

systemctl habilitar la ventana acoplable

#Ver el estado de ejecución de la ventana acoplable

------Si ingresa el comando durante la operación, verá verde activo

ventana acoplable de estado de systemctl

#Ver información del número de versión de la ventana acoplable

versión acoplable

información de la ventana acoplable

Comando de imagen 10.2.docker

#Ver la lista de imágenes acoplables en su servidor

Imágenes de docker

#Espejo de búsqueda

docker search image name
docker search --filter=STARS=9000 mysql busca imágenes mysql con STARS >9000

#Extraiga la imagen sin etiqueta (número de versión) para extraer la última versión más reciente de la imagen en el almacén acoplable Agregar: etiqueta para extraer la versión especificada

nombre de la imagen de extracción de la ventana 
acoplable nombre de la imagen de extracción de la ventana acoplable: etiqueta

Referencias

https://blog.csdn.net/m0_61503020/article/details/125456520

https://blog.csdn.net/m0_62019369/article/details/128144877

Supongo que te gusta

Origin blog.csdn.net/qq_20957669/article/details/129784086
Recomendado
Clasificación