Comprender y utilizar contenedores.

Tabla de contenido

Prefacio

1. La historia del desarrollo y los conceptos detrás de la contenedorización.

1.Abstracción de contenedores

metáfora del contenedor

2. Contenedores en el campo informático

Un contenedor es una unidad estandarizada de software.

2. Arquitectura de contenedores y microservicios

1. El papel de los contenedores

Configure rápidamente un entorno de desarrollo

Coloque el entorno de ejecución y la configuración en el código e implemente

Utilice docker-compose para simular un entorno de producción

Autoimplementación mediante imágenes de Docker

2. Problemas resueltos por los contenedores

3. El papel de la arquitectura de microservicios.

arquitectura tradicional

 Arquitectura de microservicio

4. La relación entre contenedores y arquitectura de microservicios.

Características de los microservicios

La combinación de microservicios y contenedores

3. Uso del contenedor Dockerfile

1.El concepto de Dockerfile

2. Operación práctica para crear imágenes jdk a través de Dockerfile

Crear un directorio

Descargar y cargar en el directorio del servidor

Cree un Dockerfile en el directorio

Ejecute el comando para construir la imagen.

Compruebe si la imagen se ha establecido correctamente

3. Instrucciones comunes de Dockerfile

DE instrucción

instrucción EJECUTAR

Instrucción COPIAR

Comando CMD  

 Comando PUNTO DE ENTRADA

4. Uso de contenedores Docker

Resumir


 


Prefacio

A través de este curso nativo de nube de Amazon Cloud Technology, aprendí sobre los contenedores, la importancia de los contenedores y lo útiles que son, y aprendí las características de la arquitectura de microservicios y la diferencia entre esta y la arquitectura monolítica, y por qué los contenedores son la tecnología básica que soporta el uso de arquitecturas de microservicios modernas.


1. La historia del desarrollo y los conceptos detrás de la contenedorización.

1.Abstracción de contenedores

En primer lugar, tenemos que aprender a empezar con algo nuevo, por lo que debemos conocerlo y conocer su vida pasada y presente. Entonces, ¿qué es un contenedor? En la antigüedad, a menudo usábamos barcos para el transporte por mar. entonces este barco puede ser una metáfora del contenedor. Y en los tiempos modernos, a menudo vemos contenedores, todos son contenedores. Todos estos ejemplos utilizan objetos comunes en la vida diaria como metáforas de contenedores.

metáfora del contenedor

En el pasado, cuando transportábamos mercancías, primero las cargábamos en contenedores o cajas y luego las cargábamos en camiones para su transporte.

Como se muestra en la imagen, en nuestra antigüedad, nuestro barco era similar a un contenedor.

Como se muestra en la imagen, por ejemplo, los contenedores que vemos a menudo en nuestras vidas también son contenedores que pueden transportar muchos productos diferentes, al igual que las aplicaciones que desarrollamos, y luego estos contenedores son transportados en grandes barcos, instalados uniformemente y luego transportados. .

2. Contenedores en el campo informático

Entonces, ¿cómo debemos entender los contenedores en el campo de la informática? En una plataforma informática, un contenedor es una unidad estandarizada de software que también es una forma de virtualización implementada a nivel del sistema operativo. Los contenedores son paquetes de software livianos e independientes que incluyen todo lo necesario para ejecutar una aplicación. Por ejemplo: código, tiempo de ejecución, herramientas del sistema, bibliotecas del sistema y configuraciones. Y todos los contenedores comparten el núcleo del sistema operativo del sistema host subyacente. Estos contenedores pueden ser servicios dentro de una aplicación empresarial grande o aplicaciones independientes que se ejecutan en entornos aislados.

Un contenedor es una unidad estandarizada de software.

En una plataforma informática, un contenedor es en realidad una unidad que puede ejecutarse de forma rápida y fiable en cualquier entorno informático que ejecute una plataforma en contenedores. Un contenedor es una forma de virtualización implementada a nivel del sistema operativo.

2. Arquitectura de contenedores y microservicios

1. El papel de los contenedores

Configure rápidamente un entorno de desarrollo

A través del estudio de este curso, sabemos que los contenedores son muy útiles, sin embargo, las máquinas en el entorno de desarrollo actual generalmente tienen una memoria relativamente pequeña. Cuando se usa la virtualización, se crean muchas máquinas virtuales y, a menudo, necesitamos crear un nuevo entorno para El entorno de desarrollo. Esta era la práctica anterior, pero ahora es diferente. La aparición de Docker ha cambiado este status quo. Solo necesitamos construir un entorno de desarrollo completo en Docker y podemos ejecutar fácilmente docenas de servicios. Ejecutar en Docker .

Coloque el entorno de ejecución y la configuración en el código e implemente

Container Docker, además de permitirnos construir un entorno de desarrollo más rápidamente, también le permite colocar el entorno de ejecución y la configuración en el código de su proyecto y luego implementarlo, por ejemplo, en la misma configuración de Docker. en diferentes entornos. En este caso, no necesitamos reinventar la rueda repetidamente, lo que mejora la eficiencia de nuestro trabajo y también reduce el acoplamiento entre los requisitos de hardware y los entornos de aplicaciones, lo cual es muy importante para nuestro desarrollo. Esta es una gran noticia para los desarrolladores. o personal de operación y mantenimiento.

Utilice docker-compose para simular un entorno de producción

Container Docker, además de permitirnos construir rápidamente un entorno de desarrollo, también puede construir un entorno de prueba, un entorno de prelanzamiento y un entorno de producción. Solo necesitamos empaquetar cada servicio en una imagen de Docker y usar Docker-compose. Para simular el entorno de producción, podemos ejecutar nuestro sistema en el entorno de producción para realizar pruebas.

Autoimplementación mediante imágenes de Docker

El uso de imágenes de Docker también tiene una característica muy importante, que es la automatización, como la autoimplementación aquí. Actualmente, los principales proveedores de alojamiento admiten y proporcionan Docker administrado. Solo necesita un nodo dedicado con acceso de shell y puede autoimplementarse. . Simplemente configure la ventana acoplable y ejecute su imagen en el puerto que desee.

2. Problemas resueltos por los contenedores

En comparación con una aplicación simple, el sistema operativo es muy engorroso. Todo el mundo sabe que el sistema operativo requiere muchos recursos para ejecutarse. Si el sistema se acaba de instalar y no se ha implementado nada, un sistema operativo simple ocupará al menos docenas de discos Comienza con G, y la memoria debe comenzar con varios G.

Si abrimos tres máquinas virtuales en esta máquina e implementamos una aplicación en cada máquina virtual, las máquinas virtuales ocuparán varios gigabytes, por lo que no tenemos forma de dividir las máquinas virtuales en más máquinas virtuales para implementar más programas, pero lo que implementamos es una aplicación y necesitamos usar la aplicación en lugar del sistema operativo.

También está el problema del tiempo de inicio, el reinicio del sistema operativo es muy lento, porque el sistema operativo tiene que cargar todo lo que debe ser detectado y cargado de principio a fin, este proceso es muy lento. Entonces nació la tecnología de contenedores para resolver estos problemas. La forma anterior de máquinas virtuales era así. Por ejemplo, aquí se pueden construir tres sistemas operativos invitados. Las aplicaciones A, B y C ocupan un sistema operativo invitado respectivamente. Esto consumirá mucha memoria y el sistema operativo También comience lentamente, la eficiencia no es alta.

 Ahora que se adopta la tecnología de contenedores, es así: un contenedor contiene el entorno de ejecución requerido por la aplicación.

3. El papel de la arquitectura de microservicios.

arquitectura tradicional

En primer lugar, solíamos desarrollar software utilizando la arquitectura monolítica tradicional, lo que significa que muchos módulos funcionales están concentrados en un proyecto. En este momento, muchas funciones están interrelacionadas. Por ejemplo, si desea modificar algunas funciones, puede afectar a todo el sistema. Y la mantenibilidad y escalabilidad son demasiado pobres.

Como se muestra en la figura, la aplicación de pedidos se ejecuta en un servidor y la aplicación de informes se ejecuta en otro servidor. En este caso, cada nueva función debe ejecutarse en otro servidor. Esto definitivamente no es posible y causará un gran desperdicio. de recursos.

 Arquitectura de microservicio

Por lo tanto, surgió la arquitectura de microservicios, como se muestra en la figura, y los módulos de pedidos y módulos de informes anteriores se han transformado en microservicios, que se contactan y llaman a través de la comunicación para mejorar la disponibilidad, y solo necesitan implementarse en Se puede ejecutar en un servidor sin desperdiciar recursos.

4. La relación entre contenedores y arquitectura de microservicios.

Características de los microservicios

Sus características se muestran en la figura:

La correlación entre ellos es muy buena. ¿Por qué dices esto? Esto es inseparable de las características de los microservicios. Los microservicios adoptan un diseño innovador descentralizado y también son nodos terminales inteligentes y tuberías tontas. Utilizan productos independientes. Forma, en lugar de forma de proyecto, tiene en cuenta tanto el desarrollo como la producción.

La combinación de microservicios y contenedores

¿Cómo entenderlo? A diferencia del modelo tradicional de proyectos de desarrollo en cascada, los microservicios se pueden considerar como productos independientes con entrada y salida independientes. No es necesario considerar el impacto del entorno de ejecución. Los contenedores le ayudarán a empaquetar todas las dependencias y bibliotecas en un único producto indispensable Ir al objeto variable.

Además, el uso de contenedores puede hacer que los entornos de desarrollo, prueba y producción sean consistentes. Las aplicaciones en contenedores que se ejecutan normalmente en sistemas de desarrollo también podrán ejecutarse normalmente de la misma manera en sistemas de producción.

Por tanto, los microservicios y los contenedores funcionan bien juntos.

3. Uso del contenedor Dockerfile

1.El concepto de Dockerfile

Dockerfile es un archivo de texto que se utiliza para crear una imagen. El contenido del texto contiene las instrucciones e instrucciones necesarias para crear la imagen.

  • Dockerfile es el archivo utilizado para crear imágenes de Docker.

  • Dockerfile contiene las "instrucciones" necesarias para crear la imagen.

  • Dockerfile tiene sus propias reglas de sintaxis específicas

El archivo de texto Dockerfile contiene el siguiente comando y su función es la que se muestra en la figura:

2. Operación práctica para crear imágenes jdk a través de Dockerfile

Primero, aprendamos cómo crear una imagen a través de Dockerfile, pero antes de crearla, primero debemos comprender qué es una imagen. Solo entendiéndola podemos saber para qué se utiliza. En términos simples, una imagen es un entorno necesario para ejecutar este proceso. A continuación, primero seguimos los siguientes pasos para crear la imagen:

Crear un directorio

Primero necesitamos crear un directorio, luego debemos ejecutar las siguientes instrucciones y especificar la carpeta

mkdir –p /miy/local/dockerjdk8
cd /miy/local/dockerjdk8

Descargar y cargar en el directorio del servidor

Luego, el siguiente paso es descargar el paquete jdk tar. Primero descargue jdk-8u202-linux-x64.tar.gz y cárguelo en el directorio /myy/local/dockerjdk8 del servidor.

Cree un Dockerfile en el directorio

Luego, creamos un Dockerfile en el directorio, el contenido del archivo es el siguiente:

DESDE centos:7
MANTENEDOR ITCAST
WORKDIR /usr
RUN mkdir /usr/local/java
AGREGAR jdk-8u202-linux-x64.tar.gz /usr/local/java/
ENV JAVA_HOME /usr/local/java/jdk1.8.0_202
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

A continuación, explique el significado de estas instrucciones. FROM *** define qué imagen base usar para iniciar el proceso de construcción.

MANTENEDOR *** declara el creador de la imagen

ENV *** Establecer variables de entorno

RUN *** es la parte central de Dockerfile

AGREGAR *** es copiar el archivo host en el contenedor. Si es un archivo comprimido, se descomprimirá automáticamente después de copiarlo.

COPY *** es similar a ADD, pero no puede descomprimir si hay un archivo comprimido.

WORKDIR *** es para configurar el directorio de trabajo

Ejecute el comando para construir la imagen.

Luego, ejecutamos el comando para construir la imagen. Tenga en cuenta que hay un "." después.

       ventana acoplable compilación -t='jdk1.8'.

Compruebe si la imagen se ha establecido correctamente

Finalmente, ejecutamos el siguiente comando de orden para verificar la información de la imagen y determinar si la creación se ha completado.

        Imágenes de docker

# 1、创建目录
mkdir –p /usr/local/dockerjdk8
cd /usr/local/dockerjdk8
      
# 2、下载jdk-8u202-linux-x64.tar.gz并上传到服务器(虚拟机)中的/usr/local/dockerjdk8目录 

# 3、在/usr/local/dockerjdk8目录下创建Dockerfile文件,文件内容如下:
vi Dockerfile

FROM centos:7
MAINTAINER ITCAST
WORKDIR /usr
RUN mkdir  /usr/local/java
ADD jdk-8u202-linux-x64.tar.gz /usr/local/java/
ENV JAVA_HOME /usr/local/java/jdk1.8.0_202
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

# 4、执行命令构建镜像;不要忘了后面的那个 .
docker build -t='jdk1.8' .

# 5、查看镜像是否建立完成
docker images

3. Instrucciones comunes de Dockerfile

DE instrucción

         Las imágenes personalizadas se basan en FROM.

instrucción EJECUTAR

         Se utiliza para ejecutar el siguiente comando,

RUN <命令行命令>


RUN ["可执行文件", "参数", "参数"]
# 例如:
# RUN ["./test.java", "dev", "offline"] 等价于 RUN ./test.java dev offline

Instrucción COPIAR

      Se refiere a copiar archivos o directorios del directorio contextual a la ruta especificada en el contenedor.

COPY [--chown=<myy>:<s>] ["<源路径>",...  "<目标路径>"]

Comando CMD  

      Se utiliza para ejecutar programas, a diferencia de la instrucción RUN, el tiempo de ejecución de las dos es diferente.

CMD <shell 命令> 
CMD ["<可执行文件或命令>","<param1>","<param2>",...] 

 Comando PUNTO DE ENTRADA

       Es similar a la instrucción CMD,

ENTRYPOINT ["<executeable>","<param1>","<param2>",...]

Se puede usar con el comando CMD: CMD se usa generalmente para cambiar parámetros, CMD aquí equivale a pasar parámetros a ENTRYPOINT.

4. Uso de contenedores Docker

En primer lugar, hemos reconocido el contenedor de arriba, así que a continuación usaremos el contenedor. ¿Cómo empezar a usarlo?

Docker le permite ejecutar aplicaciones dentro de contenedores. Utilice  el comando docker run  para ejecutar una aplicación dentro de un contenedor.

Primero, mire el primer ejemplo:

runoob@runoob:~$ docker run ubuntu:15.10 /bin/echo "Hola"

¿Qué significa esto? Significa: Docker crea un nuevo contenedor con la imagen ubuntu15.10, luego ejecuta bin/echo "Hello world" en el contenedor y luego genera el resultado.

       LogisticsAddBoResponse response = new LogisticsAddBoResponse();
        response.setErrOrderNos(Lists.newArrayList());
        response.setSuccessOrderNos(Lists.newArrayList());
        BoCriteria criteria = new BoCriteria();
        criteria.setStatus(CodeItemKeys.T_ORDER_STATUS_DELIVER);
        criteria.setExpressStatusEmpty(true);
        criteria.setExprIdEmpty(false);//不允许运单号为空
        criteria.setTranBackToSales(0);     // 回传标识,0代表待回传,1代表已回传,2代表取消
        List<OrderBoBean> orderBeans = OrderService.findBeansByOrderNos(criteria);
        if(CollectionUtils.isEmpty(orderBeans)){
            response.setMessage("抖店_批量订单发货接口"+LocalDateTime.now().format(dateTimeFormatter)+",未查询到需配送订单");
            return response;
        }
        GlobalConfig.initAppKey(projectConfig.getTiktokECommerceAppId());  
        GlobalConfig.initAppSecret(projectConfig.getTiktokECommerceAppSecret());  
        AccessToken accessToken = AccessTokenBuilder.build(Long.valueOf(projectConfig.getTiktokECommerceDefaultStoreId()));  
        BizAssert.isTrue(accessToken.getAccessToken()!= null,"很抱歉,抖店发货生成并获取token失败;返回来的token为空null");
        Map<String,OrderBoBean> duplicateOrderNoCheckMap = new HashMap<>();
        String companyCode = projectConfig.getTikTokLogisticsDefaultCode();  
        TiktokLogisticsCompanyCriteria logisticsCompanyCriteria = new TiktokLogisticsCompanyCriteria();
        logisticsCompanyCriteria.setCode(companyCode);
        TiktokLogisticsCompanyBean logisticsCompanyBean = TiktokLogisticsCompanyService.findOneBean(logisticsCompanyCriteria);

El código es el siguiente (ejemplo):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context


Resumir

A través de este curso nativo de nube de Amazon Cloud Technology, aprendí sobre los contenedores, la importancia de los contenedores y lo útiles que son, y aprendí las características de la arquitectura de microservicios y la diferencia entre esta y la arquitectura monolítica, y por qué los contenedores son la tecnología básica que soporta el uso de arquitecturas de microservicios modernas.

Supongo que te gusta

Origin blog.csdn.net/weixin_46442877/article/details/127924273
Recomendado
Clasificación