[Cloud Native] Comprensión inicial, instalación y funcionamiento básico de Docker

1. El conocimiento sobre
la contenedorización de docker se está volviendo cada vez más popular porque los contenedores son:
●Flexibles: incluso las aplicaciones más complejas pueden contenerse.
● Ligero: el contenedor utiliza y comparte el kernel del host.
● Intercambiable: las actualizaciones y mejoras se pueden implementar al instante.
● Portátil: puede construirse localmente, implementarse en la nube y ejecutarse en cualquier lugar.
●Extensible: las réplicas de contenedores se pueden aumentar y distribuir automáticamente.
●Apilable: los servicios se pueden apilar verticalmente y al instante.

1.1 El concepto de docker
       Docker es un motor contenedor de aplicaciones de código abierto, desarrollado en base al lenguaje go y siguiendo el protocolo apache2.0 para código abierto. Docker permite a los desarrolladores empaquetar sus aplicaciones y dependencias en un contenedor portátil y liviano, y luego publicar en cualquier servidor Linux popular, y también es posible la virtualización. El contenedor usa completamente el mecanismo de la caja de arena, no habrá una interfaz entre ellos (aplicación similar a la de un iPhone) y la sobrecarga del contenedor es extremadamente baja.
 

Los contenedores admiten 2 tecnologías importantes en el kernel:

La esencia de Docker es un proceso de la máquina host. Docker implementa el aislamiento de recursos a través del espacio de nombres, la limitación de recursos a través de cgroup y la operación eficiente de archivos a través de la tecnología de copia en escritura (similar a los discos de máquinas virtuales, como la asignación de 500 g). ocupe 500 g del disco físico y solo copie una copia de los datos cuando sea necesario modificarlos).
 

1.2 Tres conceptos importantes de la duplicación de imágenes docker 
(1)

 Una imagen acoplable es una plantilla de solo lectura. Por ejemplo, una imagen puede contener un centos completo, que solo instala apache u otras aplicaciones del usuario. La imagen se puede usar para crear un contenedor acoplable. Además, acoplable proporciona una mecanismo simple para crear una imagen o actualizar la imagen existente, los usuarios pueden incluso descargar directamente una imagen preparada de otros para usarla directamente

La base para crear un contenedor es un paquete comprimido ejecutable, una plantilla de solo lectura que contiene todos los recursos para ejecutar una aplicación.

(2) contenedor contenedor

 Docker utiliza contenedores para ejecutar aplicaciones. Los contenedores ejecutan instancias creadas a partir de imágenes. Se pueden iniciar, iniciar, detener y eliminar. Cada contenedor está aislado entre sí para garantizar una plataforma segura. Los contenedores se pueden considerar como una versión simple de Linux entorno (incluida la autoridad del usuario raíz, el espacio espejo, el espacio del usuario y el espacio de la red, etc.) y las aplicaciones que se ejecutan en él

 Según la instancia en ejecución creada por la imagen, los contenedores están aislados entre sí.

(3) almacén de depósito

 El almacén es las vicisitudes del almacenamiento centralizado de archivos de imagen. El registro es el servidor maestro-esclavo del almacén. De hecho, hay múltiples almacenes almacenados en el servidor de registro de referencia, y cada almacén contiene múltiples espejos. Cada espejo tiene un tag (etiqueta) Almacén Hay dos tipos: referencia pública y almacén privado. El almacén público más grande es docker hub, que almacena una gran cantidad de imágenes para que los usuarios las descarguen. Domestic docker pool, donde el concepto de almacén es similar a Git, El registro puede entenderse como un programa de cuidado de niños de github.

 Un lugar para el almacenamiento centralizado de imágenes, que se puede dividir en almacenes públicos y almacenes de claves privadas
 

1.3 El propósito principal de docker
El oficial es Bulid, enviar, ejecutar cualquier aplicación/en cualquier lugar, compilar, cargar, ejecutar, cualquier aplicación/en cualquier lugar puede ejecutarse. Es realizar la gestión del ciclo de vida del empaquetado, la implementación y el funcionamiento de la aplicación, siempre que se encuentre en el entorno glibc y pueda ejecutarse. En el entorno de generación de operación y mantenimiento: dockerización.

1. No es necesario preocuparse por el entorno operativo del servidor al publicar servicios, todos los servidores se asignan automáticamente a la ventana acoplable, se implementan automáticamente, se instalan automáticamente y se ejecutan automáticamente

2 Ya no es necesario preocuparse por problemas de disco, problemas de CPU, problemas de sistema de otros motores de servicio

3 Mejor aprovechamiento de los recursos

4 Migración automática, se puede realizar la duplicación y la migración se puede migrar utilizando una duplicación personalizada para evitar problemas

5 La gestión es más rápida y cómoda
 

1.4 La diferencia entre docker y máquina virtual 
El kernel de la máquina virtual docker
utiliza el kernel del sistema operativo del host compartido y tiene un kernel de sistema operativo independiente
Velocidad de inicio Velocidad de inicio rápida, velocidad de segundo nivel Velocidad de inicio lenta,
rendimiento a nivel de minuto cercano a nativo de la nube, casi sin pérdidas El acceso virtual al host a través del hipervisor consumirá más recursos y la pérdida máxima será de casi el 50 % La
capacidad de una sola máquina es de cientos, miles o docenas
Espacio de nombres de aislamiento (espacio de nombres) aisla recursos, y las restricciones de recursos de cgroup aíslan completamente


Tipo de aislamiento de espacio de nombres (espacio de nombres)


 UTS: nombre de host y nombre de dominio

IPC: semáforos, colas de mensajes y contenido compartido

PID: número de proceso

RED: dispositivos de red, puertos, pila de red

MOUNT: punto de montaje (sistema de archivos)

USUARIO: usuarios y grupos de usuarios

Características de cgroups


La API de cgroup se implementa como un pseudo sistema de archivos, y el programa del usuario puede realizar la gestión de componentes de cgroup a través del sistema de archivos.

La unidad de operación de gestión de componentes de cgroup se puede afinar hasta el nivel de hilo. Además, los usuarios pueden crear y destruir cgroups, para realizar la asignación y reutilización de recursos.

Todas las funciones de administración de recursos se implementan en forma de subsistemas, y la subtarea de interfaz unificada está en el mismo grupo de control de cgroup que su tarea principal al comienzo de la creación.

 Las cuatro funciones principales de cgroup
Límite de recursos: se puede limitar la cantidad total de recursos utilizados por la tarea

Asignación de prioridad: a través de la cantidad de segmentos de tiempo de CPU asignados y el tamaño del ancho de banda de E/S del disco, en realidad es equivalente a controlar la prioridad de ejecución de la tarea

Estadísticas de recursos: puede contar el uso de recursos del sistema, como la duración de la CPU, el uso de la memoria, etc.

Control de tareas: cgroup puede realizar operaciones como suspender y reanudar tareas

En general, cgroup controla el límite superior de recursos que los contenedores pueden usar 
 

2. Instalación de yum de docker y compilación e instalación del código fuente
 2.1 instalación de fuente de yum docker
# Desinstalar el paquete docker restante
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker -engine
 
#Se recomienda utilizar la imagen doméstica de Ali como fuente de descarga
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 
#Requiere instalación paquete de instalación de docker
yum install -y yum-utils device-mapper-persistent-data lvm2
 
#Instalar la versión comunitaria de docker
yum install docker-ce
 
#Comprobar si docker se instaló correctamente
docker -v

#Establecer para iniciar automáticamente en el arranque

systemctl iniciar docker.service
systemctl habilitar docker.service 
---------------------------------------- -------------------------------------------------- --El
sistema Docker instalado tiene dos programas, el servidor Docker y el cliente Docker. El servidor Docker es un proceso de servicio responsable de administrar todos los contenedores. El cliente Docker actúa como un controlador remoto del servidor Docker, que se puede usar para controlar el proceso del servidor Docker. En la mayoría de los casos, el servidor y el cliente de Docker se ejecutan en la misma máquina.
-------------------------------------------------- ---------------------------------------------------------

2.2 Compilar e instalar docker desde el origen
tar zxvf docker-19.03.9.tgz
mv docker/* /usr/bin
#Agregar servicio de inicio del sistema docker
cat > /usr/lib/systemd/system/docker.service << EOF
[Unidad]
Descripción =Docker Application Container Engine
Documentación=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
 
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload= / bin/kill -s HUP $MAINPID
LimitNOFILE=infinito
LimitNPROC=infinito
LimitCORE=infinito
TimeoutStartSec=0
Delegate=sí
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
 
[Instalar]
WantedBy=multi-user.target
EOF
#Iniciar abrir
systemctl start docker
#Verificar estado
systemctl status docker
 
#Ver información de la versión de docker
versión de docker
 
#información de docker ver
información de docker  

 3. Operación de imagen de Docker
(1) 
Formato de imagen de búsqueda: palabra clave de búsqueda de docker
búsqueda de docker nginx
 

(2) Obteniendo el
formato de la imagen: docker pull warehouse name[:label]
#Si no se especifica ninguna etiqueta al descargar la imagen, se descargará por defecto la última versión de la imagen en el warehouse, es decir, la etiqueta seleccionada es la última etiqueta.
ventana acoplable tirar nginx
 

(3) Descarga acelerada de espejo 
#Adquirir para registrar una cuenta de Alibaba Cloud, y Alibaba Cloud accederá a https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors a través de diferentes
navegadores de fuente de imagen de ventana acoplable personal de acuerdo con la información del usuario para obtener la configuración del acelerador Mirror
 
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{ "registry-mirrors": ["https://288honvl.mirror.aliyuncs.com"] } EOF # El comando tee lee la entrada estándar y escribe la salida del programa en la salida estándar, copiándola simultáneamente en el archivo o archivos especificados. Indicadores -a Agregar salida al final del archivo en lugar de sobrescribir. -i Ignora las interrupciones. systemctl daemon-reload systemctl reiniciar ventana acoplable







 
 


 

(4) Ver información de la imagen
Después de descargar la imagen, se almacena en /var/lib/docker.
Los recursos locales relacionados con Docker se almacenan en el directorio /var/lib/docker/, donde el directorio de contenedores almacena información de contenedores, el directorio de imágenes almacena información de imágenes y el directorio overlay2 almacena archivos subyacentes de imágenes específicas.
 
#Ver la información del archivo de imagen descargado
cat /var/lib/docker/image/overlay2/repositories.json
 
#Ver todas las imágenes descargadas localmente
imágenes docker
 
------------------ --- ----------------------------------------------- --- ---------------------
REPOSITORIO: El almacén al que pertenece la imagen;
ETIQUETA: La información de la etiqueta de la imagen, marcando diferentes imágenes en un mismo almacén;
IDENTIFICACIÓN DE LA IMAGEN : El número de identificación único del espejo, que identifica de manera única un espejo;
CREADO: tiempo de creación del espejo;
TAMAÑO VIRTUAL: tamaño del espejo;
-------------- ---- ---------------------------------------------- ---- ---------------

#De acuerdo con el número de identificación único de la imagen, obtenga la información detallada del
formato de la imagen: ventana acoplable inspeccionar el número de identificación de la imagen
ventana acoplable inspeccionar ae2feff98a0c

●lowerdir es la capa de imagen, y el directorio o archivo es de solo lectura. De hecho, es rootfs. La capa de imagen se puede dividir en muchas capas, por lo que el lowerdir correspondiente puede tener varios directorios. El upperdir es la capa contenedora anterior
. el lowerdir Esta capa puede leerse y escribirse, se creará cuando se inicie un contenedor, y todos los cambios en los datos del contenedor ocurrirán en esta capa
MergedDir es la capa de presentación, que es el punto de montaje del contenedor

 (5) Agregue una nueva etiqueta al
formato de imagen local: nombre de la etiqueta acoplable: [etiqueta] nuevo nombre: [nueva etiqueta]
etiqueta acoplable nginx: último nginx: 1.21.5
 
imágenes acoplables | grep nginx

(6) Eliminar 
formato de imagen:
docker rmi warehouse name: label #Cuando una imagen tiene varias etiquetas, simplemente elimine la etiqueta especificada
o
el número de identificación de la imagen de docker rmi #La imagen se eliminará por completo
 
Nota: si la imagen ha sido utilizada por el contenedor , la forma correcta es eliminar primero todos los contenedores que dependen de la imagen y luego eliminar la imagen.
 
ventana acoplable rmi nginx: 1.21.5

(7) Guarde la imagen: guarde la imagen como 
formato de archivo local: docker save -o nombre del archivo de almacenamiento imagen almacenada
docker save -o nginx nginx:1.21.5 #Guarde la imagen llamada nginx y guárdela en el directorio actual ls
- izq
 

#Cargar imagen: importa el archivo de imagen a la biblioteca de imágenes

Formato:
docker load <archivo guardado
o
docker load -i archivo guardado
 
docker load <nginx

(8) Subir imagen

De forma predeterminada, se carga en el almacén público oficial de docker hub y se debe registrar una cuenta para usar el almacén público. https://hub.docker.com
puede usar el comando de inicio de sesión de docker para ingresar el nombre de usuario, la contraseña y el correo electrónico para completar el registro y el inicio de sesión.
Antes de cargar la imagen, debe agregar una nueva etiqueta a la imagen local y luego usar el comando Docker Push para cargar
 

#Al agregar una nueva etiqueta, debe agregar su propia
etiqueta docker de dockerhub nginx:1.21.5 yunayun/nginx:último
 
inicio de sesión de docker #Inicie sesión en el almacén público
Nombre de usuario: xxxxxxxxx
Contraseña: xxx
docker push yunayun/nginx:último #Subir imagen
 

4. Operación del contenedor Docker
(1) Creación del contenedor 
Creación del contenedor: Es el proceso de carga de la imagen en el contenedor.
El contenedor recién creado está en estado detenido de forma predeterminada y no ejecuta ningún programa. Es necesario iniciar un proceso en él para iniciar el contenedor.

Formato: docker crear imagen [opción]
Opciones de uso común:
-i: permitir que el contenedor abra la entrada estándar para aceptar los comandos de entrada del usuario
-t: permitir que Docker asigne un pseudo-terminal tty
-it: combinar para realizar la interacción con el contenedor y ejecutar una sesión interactiva shell 
 
docker create -it nginx:latest /bin/bash

(2) Verifique el contenedor 
#Verifique el estado de ejecución del contenedor
docker ps -a #-a opción puede mostrar todos los contenedores
 
#Si no tiene -a, solo puede verificar el estado de ejecución del contenedor
CONTAINER ID IMAGE COMMAND NOMBRES DE PUERTOS DE ESTADO CREADOS
El número de ID del contenedor está cargado El nombre de la asignación de puerto de estado actual en el momento de la creación del programa de duplicación

(3) Inicie el
formato del contenedor: docker start ID/nombre del contenedor
docker start 8b0a7be0ff58
docker ps -a

(4) Para crear e iniciar un contenedor, 
 puede ejecutar directamente el comando docker run, que es equivalente a ejecutar primero el comando docker create y luego ejecutar el comando docker start.


Nota: El contenedor es un terminal que coexiste con el comando/proceso de shell que se ejecuta en él. El comando/proceso se ejecuta y el contenedor se ejecuta, y el comando/proceso finaliza y el contenedor sale.

De forma predeterminada, el contenedor acoplable utilizará el primer proceso dentro del contenedor, es decir, el programa con pid=1, como base para determinar si el contenedor acoplable se está ejecutando. Si el proceso con pid=1 en el contenedor acoplable se cuelga, el contenedor docker saldrá directamente, es decir, se dice que debe haber un proceso en primer plano en el contenedor Docker, de lo contrario se considera que el contenedor ha colgado.

Cuando se usa docker run para crear un contenedor, el proceso de ejecución estándar de Docker en segundo plano es:
1) Verificar si la imagen especificada existe localmente. Cuando la imagen no existe, se descargará del almacén público;
2) Cree e inicie un contenedor usando la imagen;
3) Asigne un sistema de archivos al contenedor y monte una capa de lectura y escritura fuera de la imagen de solo lectura. capa;
4) Desde Bridge, una interfaz de máquina virtual al contenedor en la interfaz de puente de red configurada por el host host; 5
) Asignar una dirección IP en el grupo de direcciones al contenedor;
6) Ejecutar el programa de aplicación especificado por el usuario, y el contenedor se terminará después de la ejecución.
 

ventana acoplable ejecuta centos:7 /usr/bin/bash -c ls /
ventana acoplable ps -a                  

 # Encontrará que se crea un nuevo contenedor y se inicia un comando de shell, y luego se detiene

(5) Para seguir ejecutando el contenedor creado por la ventana acoplable en segundo plano, 
debe agregar la opción -d después del comando de ejecución de la ventana acoplable para que el contenedor de Docker se ejecute en segundo plano como un demonio. Y el programa que se ejecuta en el contenedor no puede finalizar.
 
docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"
 
docker ps -a #Se puede ver que el contenedor siempre está activo y en ejecución
 
docker run -itd --name test1 centos: 7 /bin/bash #Crear un contenedor y ejecutar el contenedor continuamente

(6) Terminar la operación del contenedor
Formato: docker stop container ID/name
docker stop container id
 
#force stop container
docker kill container id
docker ps -a

(7) Entrada del contenedor 
Cuando necesite ingresar al contenedor para operaciones de comando, puede usar el comando docker exec para ingresar al contenedor en ejecución.
 
Formato: docker exec -it container ID/name/bin/bash
La opción -i significa mantener abierta la entrada del contenedor;
la opción -t significa permitir que Docker asigne una pseudo-terminal.
 
docker start container id #Antes de ingresar al contenedor, asegúrese de que el contenedor se esté ejecutando
docker exec -it container id /bin/bash
ls
exit #Después de salir del contenedor, el contenedor aún se está ejecutando
docker ps -a
 
docker run -it centos:7 bash #No agregar: la opción d ingresará directamente al contenedor para la interacción después de crear el contenedor, pero si sale del contenedor, el contenedor también se detendrá

(8) Importación y exportación de contenedores y archivos nativos
echo abc123 > /opt/test.txt
docker cp /opt/test.txt container id:/opt/
 
#Copy files from container to host
docker cp container id:/opt/test .txt /opt/abc123.txt
 
 

(9) Backup y replicación de contenedores

Exportación e importación de contenedores
Los usuarios pueden migrar cualquier contenedor Docker de una máquina a otra. Durante el proceso de migración, puede usar el comando docker export para exportar el contenedor creado como un archivo de instantánea del contenedor, independientemente de si el contenedor está en ejecución o detenido. El archivo de exportación se puede transferir a otras máquinas y la migración del contenedor se puede realizar a través del comando de importación correspondiente.
 

#Formato de exportación: ID/nombre del contenedor de exportación de docker> nombre de archivo
ID de contenedor de exportación de docker> centos7.tar
 
docker export -o ID de contenedor de centos7.tar

#Formato de importación: nombre de archivo cat | docker import – nombre de la imagen: label
cat centos7.tar | docker import - centos7:test #La imagen se generará después de la importación, pero no se creará ningún contenedor
 
docker import centos7.tar -- centos7: prueba

(10) 
Formato de eliminación por lotes de contenedores e imágenes: docker rm [-f] ID/nombre del contenedor
docker stop ID de contenedor
docker rm ID de contenedor #eliminar contenedor terminado
 
docker rm -f ID de contenedor #forzar eliminación de contenedor en ejecución
 
docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash #stop contenedores en lotes
docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop
 
docker ps -a | awk 'NR> =2{print "docker rm "$1}' | bash #Eliminar todos los contenedores en lotes
docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm
 
docker images | awk 'NR>= 2{print "docker rmi "$3}' | bash #eliminar imágenes en lotes
docker imágenes | grep none | awk '{print $3}' | xargs docker rmi #eliminar ninguna imagen docker
 
rm $(docker ps -a -q) #batch Limpiar contenedores detenidos en el fondo

Supongo que te gusta

Origin blog.csdn.net/zl965230/article/details/131043378
Recomendado
Clasificación