[Experiencia compartida] Descripción del método de implementación del contenedor Docker

Prefacio

Este caso se aplica al entorno de desarrollo:

Entorno de desarrollo de Windows: Windows 7 de 64 bits, Windows 10 de 64 bits

Entorno de desarrollo Linux: Ubuntu 18.04.4 64 bits

Máquina virtual: VMware15.1.0

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 Linux o Windows popular, y también realizar la virtualización. Los contenedores usan completamente un mecanismo de caja de arena y no habrá interfaces entre ellos. Con Docker, la infraestructura se puede administrar como una aplicación. Reduzca significativamente el tiempo de desarrollo de productos aprovechando el método de Docker para liberar, probar e implementar código rápidamente.

1 arquitectura Docker

Docker utiliza una arquitectura cliente-servidor (C/S). El cliente de Docker se comunica con el demonio de Docker, que hace el trabajo pesado de crear, ejecutar y distribuir contenedores de Docker. El cliente y el demonio de Docker pueden ejecutarse en el mismo sistema, o puede conectar el cliente de Docker a un demonio de Docker remoto. El cliente Docker y el daemon se comunican mediante la API REST, el socket UNIX o la interfaz de red.

Figura 1

2 instalación acoplable

2.1 Método de instalación

(1) Instalar paquetes dependientes

Abra Ubuntu, asegúrese de que Ubuntu pueda acceder a Internet con normalidad y ejecute el siguiente comando para instalar el paquete de dependencia de Docker.

Host#     sudo apt-obtener actualización

Figura 2

Host#     sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

 

imagen 3

(2) Agregar la clave GPG oficial de Docker

Host#     curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Figura 4

(3) Configure el repositorio Docker Stable

Host#     echo "deb [arch=amd64 firmado-por=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) estable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Figura 5

(4) Instalar ventana acoplable

Host#     sudo apt-obtener actualización

Host#     sudo apt-get install docker-ce

Figura 6

Figura 7

(5) Verificar ventana acoplable

Ejecute el siguiente comando para verificar si la instalación se realizó correctamente ejecutando la imagen hello-world que viene con Docker. Después de que se ejecuta el programa, si el resultado es el siguiente, significa que la instalación de Docker se realizó correctamente.

Host#     sudo docker ejecutar hola-mundo

Figura 8

2.2 Construir un almacén espejo local

Docker usa Registry para almacenar imágenes creadas por los usuarios. El registro se divide en público y privado dos. El Registro público operado por Docker se llama Docker Hub, donde los usuarios pueden registrarse para obtener una cuenta, compartir y guardar sus propias imágenes. El almacén de imágenes públicas de Docker proporciona una enorme colección de imágenes para que las utilicen los usuarios. Un Docker Registry puede contener varios almacenes, cada almacén puede contener varias etiquetas (Etiquetas) y cada etiqueta corresponde a una imagen reflejada. Por lo general, un almacén contendrá imágenes de diferentes versiones del mismo software y las etiquetas corresponden a cada versión del software. Los usuarios pueden usar el formato de “[<nombre de almacén>:<etiqueta>]” para especificar la imagen de una determinada versión de un determinado software. Si no se proporciona ninguna etiqueta, [latest] se utilizará como etiqueta predeterminada.

La imagen utilizada esta vez es el registro: 2, ejecute el siguiente comando para descargarlo e iniciarlo automáticamente.

Host#     mkdir -p /home/tronlong/docker/myregistry

Host#     sudo docker run -d -p 5000:5000 -v /home/tronlong/docker/myregistry:/var/lib/registry registro:2

Descripción de parámetros:

-d: inicia el contenedor en segundo plano.

-p: Asigne el puerto 5000 del contenedor al puerto 5000 de Ubuntu (5000 es el puerto del servicio de registro).

-v: asigne el directorio del contenedor "/var/lib/registry" al directorio "/home/tronlong/docker/myregistry" de Ubuntu para almacenar datos de imagen.

  

Figura 9

Ejecute el siguiente comando para verificar si el contenedor se ha iniciado. El siguiente contenido indica que el contenedor se ha iniciado normalmente.

Anfitrión #     sudo docker ps

  

Figura 10

Visite "http://192.168.0.40:5000/v2/_catalog" a través de un navegador. Si se devuelve el siguiente contenido, significa que el registro se inició correctamente y 192.168.0.40 es la IP de Ubuntu.

Figura 11

Dado que se acaba de establecer y ejecutar, no hay contenido espejo en él. En este punto, la instalación del entorno de Docker está completa.

3 imagen de compilación

Cree un nuevo directorio de trabajo "/home/tronlong/docker/dockerfile/" en Ubuntu y guarde el paquete de compresión del sistema de archivos y la documentación del producto en el directorio "4-Software Documentation\Linux\Filesystem\docker\" de la documentación del producto. "4-Software Copie los archivos ejecutables en el directorio "Data\Demo\base-demos\led_flash\bin\" en el directorio compartido de Ubuntu y luego ejecute el siguiente comando para copiar en el directorio de trabajo de Docker.

Host#     mkdir /home/tronlong/docker/dockerfile

Host#     cp /mnt/hgfs/SharedFolders/led_flash /home/tronlong/docker/dockerfile/

Host#     cp /mnt/hgfs/SharedFolders/rootfs-v1.2-gcbfe5f3.tar.gz /home/tronlong/docker/dockerfile/

 

Figura 12

En el directorio "/home/tronlong/docker/dockerfile/", cree un Dockerfile y escriba el siguiente contenido.

Host#     cd /home/tronlong/docker/dockerfile

Host#     gedit Dockerfile

  

Figura 13

Figura 14

El contenido del archivo Dockerfile es el siguiente:

DESDE cero #Construir una nueva imagen basada en una imagen base vacía

# Establecer directorio de trabajo

WORKDIR /root #Establecer directorio de trabajo para CMD, COPY y AND

# Descomprimir el sistema de archivos

AGREGAR rootfs-v1.2-gcbfe5f3.tar.gz / #Descomprimir el sistema de archivos

# Copiar archivo a imagen

COPY led_flash .#Copiar el archivo ejecutable al directorio "/home/root/" de la imagen

# Comando de shell ejecutado cuando se inicia el contenedor

# CMD ["ejecutable","param1","param2"]

CMD ["./led_flash", "-n 2"] #El comando de shell se ejecuta cuando se inicia el contenedor, aquí está el comando para ejecutar el programa de flash LED

Ejecute el siguiente comando en el directorio donde se encuentra el Dockerfile para compilar la imagen.

Host#     sudo docker build -t 192.168.0.40:5000/led_flash:v1.0. //Tenga en cuenta que el comando contiene "." al final

Host#     sudo docker images //Ver la imagen construida

Descripción de parámetros:

192.168.0.40: dirección IP de Ubuntu;

-t: especifica el nombre y la etiqueta de la imagen (nombre:etiqueta).

  

Figura 15

Ejecute el siguiente comando para enviar la imagen al Registro del almacén local.

Anfitrión #     sudo docker push 192.168.0.40:5000/led_flash:v1.0

  

Figura 16

Después de la versión 1.3.X de Docker, https se usa de forma predeterminada para interactuar con el Registro de Docker. Sin embargo, el almacén privado creado anteriormente solo proporciona el servicio http, por lo que aparecerá el mensaje de error anterior al interactuar con el almacén privado. Este problema se puede resolver modificando el archivo "/etc/docker/daemon.json", ejecute el siguiente comando, 192.168.0.40 es la IP de Ubuntu.

Host#     platos /etc/docker/daemon.json

  

Figura 17

Agregue el siguiente contenido de configuración en daemon.json:

{ "registros-inseguros": ["192.168.0.40:5000"]}:

Ejecute los siguientes comandos para reiniciar los contenedores Docker y Registry (especificando el ID) y vuelva a insertar la imagen en el Registro local.

Host#     sudo /etc/init.d/docker restart

Anfitrión#     sudo docker ps -a

Host#     sudo docker start b898d3391bb9 //Prevalecerá el ID del CONTENEDOR obtenido de la consulta

Anfitrión #     sudo docker push 192.168.0.40:5000/led_flash:v1.0

Figura 18

Acceda a "http://192.168.0.40:5000/v2/_catalog" a través de un navegador y podrá ver las imágenes existentes en el almacén actual.

  

Figura 19

4 Descarga la imagen y ejecuta el contenedor

(1) Utilice un cable de red para conectar el puerto de red RGMII ETH de la placa de evaluación al enrutador y asegúrese de que esté en la misma red que Ubuntu, encienda la placa de evaluación y ejecute el siguiente comando para iniciar la proceso del demonio dockerd. Después de ejecutar el comando, se imprimirá un mensaje de advertencia, que no afecta el uso normal de la función, ignórelo.

Destino#         dockerd --storage-driver=vfs &

Figura 20

(2) Ejecute el siguiente comando para descargar la imagen y listar la imagen descargada. Durante el proceso de descarga de la imagen, se imprimirán mensajes de advertencia y error, que no afectarán el uso normal de las funciones, ignórelos.

Target#         docker pull 192.168.0.40:5000/led_flash:v1.0 //Descargar imagen

Target#         docker images //Enumerar las imágenes descargadas

Figura 21

Si ocurre el siguiente error, ejecute el siguiente comando para resolver este problema modificando el archivo "/etc/docker/daemon.json". Después de guardar la modificación, reinicie el proceso del demonio dockerd.

Figura 22

Número de destino         vi /etc/docker/daemon.json

Figura 23

Agregue el siguiente contenido de configuración en daemon.json:

{ "registros-inseguros": ["192.168.0.40:5000"]}

Target#         killall -9 dockerd //terminar el proceso

Target#         dockerd --storage-driver=vfs & //Reiniciar el proceso del demonio dockerd

  

Figura 24

(3) Cree e inicie el contenedor. Debido a que Docker usa el controlador de almacenamiento VFS, al crear un contenedor, primero debe crear una capa de contenedor, y esta capa de contenedor debe realizar una "copia profunda" de la capa anterior, por lo que lleva aproximadamente 1 minuto completar el proceso de creando e iniciando el contenedor, espere pacientemente.

Destino#         docker run -d --name led_flash -v /sys/:/sys 97c8b410ef97

Descripción de parámetros:

-d: ejecutar el contenedor en segundo plano;

--name: especifica un nombre para el contenedor;

-v: Asignar volumen (asignar el directorio del host "/sys" al contenedor "/sys");

97c8b410ef97: ID de imagen, basado en el "ID DE IMAGEN" que aparece en el comando de imágenes de la ventana acoplable.

  

Figura 25

Una vez que se completa el arranque del contenedor, los 2 LED de usuario en la placa de evaluación parpadean simultáneamente.

(4) Funcionamiento básico del contenedor

Ejecute el siguiente comando para ver el contenedor en ejecución e ingrese el contenedor.

Destino #         ventana acoplable ps -a

Destino#         docker exec -it d5e56fbbd1a8 /bin/bash

Descripción de parámetros:

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

-t: Reasignar un terminal de pseudo-entrada para el contenedor, usualmente usado junto con -i;

d5e56fbbd1a8: ID del contenedor, sujeto al "ID DEL CONTENEDOR" real;

/bin/bash: ejecuta el comando "/bin/bash" en el contenedor.

  

Figura 26

Ejecute el siguiente comando para salir del contenedor.

Salida de Bash#    

  

Figura 27

Ejecute el siguiente comando para detener el contenedor. En este punto, los 2 LED de usuario en la placa de evaluación ya no parpadean.

Destino #       docker stop d5e56fbbd1a8

Figura 28

Ejecute el siguiente comando para iniciar el contenedor. En este punto, los dos LED de usuario en la placa de evaluación parpadean simultáneamente.

Destino #         docker start d5e56fbbd1a8

Figura 29

Observaciones: si aparece un mensaje de advertencia similar a "x509: el certificado ha caducado o aún no es válido" al ejecutar Docker (como se muestra en la figura a continuación), ejecute el comando de fecha para sincronizar la hora del sistema. Este mensaje de advertencia se debe a que la hora del sistema de la placa de evaluación no está sincronizada con la hora real.

  

Figura 30 

Si desea saber más sobre las aplicaciones integradas, le invitamos a prestar atención a la tecnología Tronlong Chuanglong ~

Supongo que te gusta

Origin blog.csdn.net/Tronlong/article/details/131410235
Recomendado
Clasificación