Resumen de combate real de Docker (colección recomendada muy completa)

1. Introducción a Docker

Docker es un motor de contenedor de aplicaciones de código abierto. Los desarrolladores pueden empaquetar sus propias aplicaciones en contenedores y luego migrar a aplicaciones de Docker en otras máquinas para lograr una implementación rápida.

Comprenda simplemente que Docker es una plataforma de software en contenedores. Al igual que los barcos, trenes y camiones transportan contenedores independientemente de sus mercancías internas, los contenedores de software sirven como una unidad estándar para la implementación de software, que puede contener diferentes códigos y dependencias.

De esta manera, para contener el software, los desarrolladores y los profesionales de TI pueden implementarlo en diferentes entornos con una modificación mínima o nula. Si ocurre una falla, el servicio también se puede restaurar rápidamente a través de la duplicación.

2. Ventaja de Docker

1. Características

2. Ventajas de recursos

Tres, conceptos básicos de Docker

Cliente : es el cliente de Docker, que puede aceptar comandos de usuario e identificación de configuración, y comunicarse con el demonio de Docker.

Imágenes : Es una plantilla de solo lectura con instrucciones para crear contenedores Docker. Es un poco similar al CD de instalación del sistema operativo.

Contenedores (contenedores) : la instancia en ejecución de la imagen, la relación entre la imagen y el contenedor es análoga a las clases y objetos en la orientación a objetos.

Registro (almacén): es un servicio de almacenamiento y distribución centralizados de imágenes. El registro más utilizado es el Docker Hub oficial.

Cuatro, instalación y uso de Docker

  • Sistema operativo: CentOS 7

1. Dependencias de instalación

yum install -y yum-utils device-mapper-persistent-data lvm2

2. Agregar fuente de software

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Especificar la fuente de espejo de Alibaba Cloud

3. Instale docker-ce (existen ciertos requisitos para el kernel del sistema, centos6 no es compatible)

yum limpia todo yum makecache rápido # Regenera el caché

yum -y instalar docker-ce docker-ce-cli containerd.io

4. Configure el inicio automático y el inicio

systemctl enable docker

systemctl start docker

5. Ver versión

versión docker

  •  Ejemplo de ejecución: Nginx

1. Busque y descargue el espejo

docker búsqueda nginx

docker pull nginx

2. Inicie un contenedor y asigne el puerto al local

docker run -d -p 8080: 80 --name Nginx nginx # Consulte a continuación para obtener detalles sobre los parámetros

3. Accede al puerto mapeado local

Cinco, Docker comandos de uso común

1. Control de espejos

 Espejo de búsqueda: búsqueda de Docker [OPCIONES] TERM

Subir imagen: docker push [OPTIONS] NAME [: TAG]

Descarga el espejo: docker pull [OPCIONES] NOMBRE [: TAG]

Enviar espejo: confirmación de Docker [OPCIONES] NOMBRE DEL CONTENEDOR [: TAG]

Construye la imagen: Docker build [OPTIONS] PATH

Eliminar imagen: docker rmi [OPCIONES] IMAGEN [IMAGEN ...]

Agregar etiqueta de imagen: etiqueta de Docker SOURCE_IMAGE [: TAG] TARGET_IMAGE [: TAG]

Ver todas las imágenes: imágenes de la ventana acoplable [OPCIONES] [REPOSITORIO [: ETIQUETA]]

2. Control de contenedores

Iniciar / reiniciar el contenedor: Docker start / restart CONTAINER

Detener / forzar la detención del contenedor: Docker stop / kill CONTAINER

Eliminar contenedor: docker rm [OPTIONS] CONTAINER [CONTAINER ...]

Cambiar el nombre del contenedor: docker renombrar CONTAINER CONTAINER_NEW

Entrar en el contenedor: docker adjuntar CONTAINER

Ejecutar el comando de contenedor: docker exec CONTAINER COMMAND

Ver registros de contenedores: registros de Docker [OPCIONES] CONTAINER

Ver la lista de contenedores: docker ps [OPCIONES]

3. Inicio del contenedor

Docker ejecutar [OPCIONES] IMAGEN [COMANDO] [ARG ...]

-d:  ejecuta el contenedor en segundo plano y devuelve el ID del contenedor

-i: ejecuta el contenedor en modo interactivo, generalmente se usa con -t

-t: reasigna una pseudo terminal de entrada para el contenedor, generalmente se usa junto con -i

-v: enlazar directorio de montaje

--name = "mycontainer":  especifique un nombre para el contenedor

--net = "puente":  especifique el tipo de conexión de red del contenedor, que admite lo siguiente:

     puente / host / ninguno / contenedor: <nombre | id>

-p / -P: mapeo de puertos, el formato es como se muestra en la figura:

4. Otros comandos

Ver información de la ventana acoplable: información de la ventana acoplable

Ayuda del comando docker: docker run --help

Copie el archivo al contenedor: docker cp custom.conf Nginx: /etc/nginx/conf.d/

Actualice los elementos de inicio del contenedor: actualización del contenedor de la ventana acoplable --restart = always nginx

Ver el registro de Docker: tail -f / var / log / messages

Seis, construcción de imágenes de Docker

1. Confirmación de Docker (1 ejecutar 2 modificar 3 guardar)

a) Ejecutar el contenedor

docker ejecutar -dit -p 8080: 80 --nombre Nginx nginx

b) Modifique el contenedor (solo estoy haciendo una demostración aquí, así que simplemente copie el archivo, la modificación específica debe basarse en su situación real)

docker cp custom.conf Nginx: /etc/nginx/conf.d/

c) Guarde el contenedor como una nueva imagen

Docker confirma Nginx zwx / nginx

 

 2. Dockerfile (1 escritura 2 compilación)

a) Escribir archivo Dockerfile

vim Dockerfile

b) Ejecutar el archivo Dockerfile

docker build -t zwx / nginx. # Hay un punto detrás, que representa el archivo dockerfile en el directorio actual

 3. Instrucciones comunes de Dockerfile

Siete, almacén local de Docker

1. Tire del almacén de espejos

registro de búsqueda de Docker

Docker pull registro

2. Inicie el servicio de duplicación

docker ejecutar -dit \

--name = Registry \ # Especifique el nombre del contenedor

-p 5000: 5000 \ # El puerto predeterminado del almacén es 5000, que se asigna al host, de modo que se puede acceder a él utilizando la dirección del host

--restart = always \ # Reinicio automático, de modo que el contenedor del almacén se iniciará automáticamente cada vez que se reinicie la ventana acoplable

--privileged = true \ # Aumentar los permisos de seguridad, generalmente no se agregan

-v / usr / local / my_registry: / var / lib / registry \ # guardar los datos de la imagen del almacén en el host

registro

3. Regístrese para el protocolo https (necesita descargar la imagen espejo a través del almacén local, todo debe configurarse)

vim /etc/docker/daemon.json # No existe tal archivo por defecto, debe agregarlo usted mismo o agregar el contenido si lo tiene.

   {"insecure-registries": ["xx.xx.xx.xx: 5000"]} # Especifique la dirección IP o el nombre de dominio

4. Agregue una etiqueta para indicar la dirección del almacén.

etiqueta acoplable   zwx / nginx x.xx.xx.xx: 5000 / zwx / nginx # Si la dirección del almacén se ha especificado durante la construcción, se puede omitir

5. Sube la imagen al almacén local.

docker  push  x.xx.xx.xx: 5000 / zwx / nginx

6. Ver el almacén local

curl -XGET http: //x.xx.xx.xx: 5000 / v2 / _catalog

8. Docker y Portainer, una herramienta de gestión gráfica

1. Introducción

Portainer es una herramienta de administración gráfica para Docker, que proporciona paneles de visualización de estado, implementación rápida de plantillas de aplicaciones y operaciones básicas de contenedores que reflejan volúmenes de datos de red (incluida la carga y descarga de imágenes, la creación de contenedores, etc.).

Visualización del registro de eventos, operación de la consola de contenedores, administración y operación centralizadas de clústeres y servicios Swarm, funciones de control y administración de usuarios de inicio de sesión. Las funciones son muy completas y básicamente pueden cubrir todas las necesidades de pequeñas y medianas unidades para la gestión de contenedores.

2. Instalación y uso

a) Busca y descarga el espejo

portainer de búsqueda de ventana acoplable

portainer / portainer estibador

b) Operación autónoma

Docker ejecutar -d \

-p 9000: 9000 \ # El puerto predeterminado de portainer es 9000, que se asigna al puerto local 9000 y se accede a través de la dirección local

--restart = always \ # establecer reinicio automático

-v /var/run/docker.sock:/var/run/docker.sock \ # Una sola máquina debe especificar docker.sock

--nombre Prtainer portainer / portainer

c) Visite http: // localhost: 9000

Para iniciar sesión por primera vez, debe registrar un usuario, establecer una contraseña para el usuario administrador y luego seleccionar la conexión local para la versión independiente.

 d) Gestión de control

Nine, Docker y la herramienta de gestión de clústeres Swarm

1. Introducción

Swarm es una herramienta de administración de clústeres proporcionada oficialmente por Docker. Su función principal es abstraer varios hosts de Docker en un todo y administrar varios recursos de Docker en estos hosts de Docker a través de una entrada.

2. Instalación y uso

    Swarm era un proyecto independiente antes de Docker 1.12. Después del lanzamiento de Docker 1.12, el proyecto se fusionó con Docker y se convirtió en un subcomando de Docker.

a) Para iniciar el clúster de enjambre solo es necesario ejecutar el comando de inicialización:

docker swarm init \ # El nodo de inicialización predeterminado es el nodo de administración
--advertise-addr xx.xx.xx.xx \ #Especifique la ip usada
--listen-addr xx.xx.xx.xx: 2377 #Especifique la ip y el puerto de escucha, El valor predeterminado es 2377

    

b) Configurar el nodo administrador

    docker swarm join-token manager #Obtenga el      token del nodo de administración y ponga el siguiente comando

enjambre ventana acoplable unirse \
--advertise-addr xx.xx.xx.xx \
--listen-addr xx.xx.xx.xx: 2377 \
--token SWMTKN-1-29ynh5uyfiiospy4fsm4pd4xucyji2rn0oj4b4ak4s7a37syf9-ajkrv2ctjr5cmxzuij75tbrmz \
xx.xx.xx.xx : 2377

c) Configurar nodos de trabajo

    docker swarm join-token worker #Obtén el token del nodo del trabajador y pon el siguiente comando

enjambre ventana acoplable unirse \
--advertise-addr xx.xx.xx.xx \
--listen-addr xx.xx.xx.xx: 2377 \
--token SWMTKN-1-29ynh5uyfiiospy4fsm4pd4xucyji2rn0oj4b4ak4s7a37syf9-ajkrv2ctjr5cmxzuij75tbrmz \
xx.xx.xx.xx : 2377

c) Ver nodos

 nodo acoplable ls

    

 

d) Crear servicio

servicio docker crear [OPCIONES] IMAGEN [COMANDO] [ARG ...]

--detach, -d: especifica si el contenedor se ejecuta en primer plano o en segundo plano, el valor predeterminado es falso

--name: nombre del servicio

--red: conexión de red

--publish, -p: mapeo de puertos

--env, -e: establecer variables de entorno

--tty, -t: asigna dispositivos tty, que pueden admitir el inicio de sesión de terminal

--mount: montaje de archivo

--replicas: especifica el número de tareas

3. ¿Cuáles son las similitudes y diferencias en comparación con los K8?

a) Diferentes nacimientos

Basándose en su experiencia en la gestión de contenedores en Linux, Google lo ha transformado en gestión de docker, que es kubernetes. Su desempeño es bueno en muchos aspectos, el más importante de los cuales se basa en los años de valiosa experiencia de Google.

Kubernetes no está escrito para Docker. Kubernetes lleva la agrupación en clústeres a un nivel completamente nuevo, a costa de una curva de aprendizaje pronunciada. docker-swarm utiliza un enfoque diferente, es una herramienta de clúster nativa para docker.

La parte más conveniente es que expone la interfaz de programación estándar de la ventana acoplable, lo que significa que cualquier herramienta que haya estado usando para comunicarse con la ventana acoplable (CLI de la ventana acoplable, composición de la ventana acoplable, etc.) se puede usar sin problemas en el enjambre de la ventana acoplable.

b) Diferentes configuraciones de instalación

Instalar y configurar swarm es muy simple, simple, claro y flexible. Todo lo que tenemos que hacer es instalar una herramienta de descubrimiento de servicios y luego instalar el contenedor swarm en todos los nodos.

En comparación, la instalación de kubernetes es un poco complicada y oscura. La instalación es diferente en diferentes sistemas operativos. Cada sistema operativo tiene sus propias instrucciones de instalación independientes.

c) Diferentes modos de funcionamiento

Usar Swarm no es diferente de usar contenedores. Por ejemplo, si está acostumbrado a usar la CLI (interfaz de línea de comandos) de Docker, puede continuar usando casi los mismos comandos.

Si está acostumbrado a usar Docker Componse para ejecutar contenedores, puede continuar usándolo en un clúster Swarm. No importa cómo esté acostumbrado a usar contenedores antes, aún puede usarlos, pero solo en grupos más grandes.

Kubernetes requiere que aprenda su propia CLI (interfaz de línea de comandos) y configuración. No puede usar la configuración docker-compose.yml que creó anteriormente, debe crear una nueva configuración correspondiente a Kubernetes.

Tampoco puede usar la CLI de Docker (interfaz de línea de comandos) que aprendió anteriormente. Tienes que aprender Kubernetes CLI (interfaz de línea de comandos)

Finalmente, cuando necesite elegir entre Docker Swarm y Kubernetes, puede considerar los siguientes puntos:

¿Quiere confiar en Docker para resolver el problema del clúster por sí solo?

Si es así, elija Swarm. Si ciertas funciones no son compatibles con Docker, es muy probable que no se encuentren en Swarm, porque Swarm se basa en la API de Docker.

Por otro lado, si desea una herramienta que pueda resolver las limitaciones de Docker, Kubernetes será una buena opción. Kubernetes no se basa en Docker, sino en los años de experiencia de Google en la gestión de contenedores. Está actuando a su manera.

Diez, diagrama de flujo de operación y mantenimiento de Docker

 Once, gestión de la configuración de Docker

1. Después de usar el contenedor, ¿todavía necesito la administración de la configuración?

Al principio, pertenecíamos a la escuela idealista al igual que los oficiales de Docker. Piense ingenuamente que el contenedor debe ser inmutable. Cuando se necesitan cambios de configuración, la imagen se reconstruye y se implementa.

Basado en esta idea, hemos agregado un módulo de duplicación automática a cSphere, y los usuarios pueden configurar la dirección del repositorio de código.

El archivo de configuración del servicio se almacena en la biblioteca Git o SVN. Cuando se necesiten cambios de configuración, empújelo a la biblioteca de versiones para activar automáticamente la construcción de la imagen a través del enlace y completar automáticamente la reconstrucción del contenedor en línea.

A través de este sistema, los usuarios pueden actualizar los servicios en línea en lotes de manera muy conveniente, sin limitarse a cambios en el archivo de configuración, los cambios de código también son naturalmente compatibles.

Después del uso real, este sistema puede satisfacer las necesidades del entorno de desarrollo y prueba y mejorar la eficiencia del trabajo.

Sin embargo, cuando se utiliza en un entorno de producción, encontramos que este proceso en realidad no es tan perfecto, principalmente en:

Aunque la construcción y la implementación de la imagen están automatizadas, la construcción es para un determinado almacén en VCS. Si cambia la configuración de una línea, debe reconstruir la totalidad. Al actualizar el contenedor, debe redistribuir la imagen a todas las máquinas. La velocidad de cambio de configuración es demasiado lenta. .

El cambio de configuración de esta manera implicará el reinicio del servicio, lo cual es inaceptable en algunos escenarios del entorno de producción y puede provocar una breve interrupción del servicio.

2. ¿Qué debe hacer el archivo de configuración de la aplicación?

El archivo de configuración de la aplicación Docker puede seguir siendo capaz de admitir cambios en diferentes entornos. Además, el archivo de configuración admite cambios en línea, que entrarán en vigor después del reinicio. Generalmente se divide en las siguientes dos formas.

a) Variables de entorno de Docker

Debe averiguar de antemano al crear la imagen, qué parámetros se cambian con frecuencia cuando se implementa el contenedor, y luego extraer estos parámetros para crear las variables de entorno del contenedor, y luego completar diferentes parámetros al implementar el contenedor. lata.

Sin embargo, si descubre que algunos parámetros se modificarán cuando se implementen en diferentes escenarios, debe volver a crear la imagen.

b) Archivo de configuración de la aplicación

El método de administración anterior no es muy flexible. El método de administración flexible es separar el archivo de configuración y el espejo, de modo que no quede limitado por el espejo.

Nota: La última versión puede hacer referencia a la administración de comandos de configuración de docker

12. Preguntas de seguimiento de Docker

  •    Entorno de clúster
  •    la seguridad cibernética
  •    Administración de almacenamiento
  •    Recolección de registros
  •    monitoreo en tiempo real
  •    La optimización del rendimiento
  •    ……

Lectura recomendada de obras:

Entrevista ¿Meituan fue abusada por JVM? Los arquitectos de Ali P9 usan 500 minutos para hablar sobre JVM desde la entrada hasta el combate real # 集集

El arquitecto Ali P9 lo lleva a dominar el grupo de subprocesos en 120 minutos, para que ya no se preocupe por los subprocesos

El código fuente de Spring combate las obras completas, los arquitectos senior lo guiarán para comprender la parte inferior del código fuente de Spring desde la entrada hasta la tumba

[Entrevista] Es genial, Ali P8 en realidad apareció para explicar la estructura de datos, la entrevista del algoritmo de la gran fábrica y la capa inferior de Redis.

No acepte ninguna refutación, el tutorial de principios subyacentes de Netty más completo y detallado en toda la estación B, todo el proceso es seco y sin tonterías, ¡y no puedo entenderme comiendo papel!

Supongo que te gusta

Origin blog.csdn.net/weixin_45132238/article/details/108664115
Recomendado
Clasificación