1. Encuesta del curso
Cuando vi este curso durante la selección del curso el semestre pasado, pensé que era un curso de hardware puro, y me sentí como con luces y luces. En la primera clase, estaba un poco asustado cuando mencioné la ingeniería de software del último semestre cuando el maestro me presentó. También utilicé el mismo sistema de blogs. La oración subconsciente no será una clase que requiera mucho tiempo ) La maestra mencionó que este curso se divide en tres partes, docker, frambuesa pi y la tarea final completa, personalmente todavía lo espero. Puedes experimentarlo tú mismo. El maestro nos dio algunos enlaces de aprendizaje para que nos permitiéramos arrojarnos a nosotros mismos. Las personas no están muy acostumbradas a este tipo de educación de almacenamiento y tienen que salir de su zona de confort y apresurarse.
2. Comprender los microservicios
1. ¿Qué es un microservicio?
La arquitectura de microservicios es un modelo arquitectónico que aboga por la división de una sola aplicación en un conjunto de pequeños servicios, que coordinan y cooperan entre sí para proporcionar a los usuarios el máximo valor. Cada servicio se ejecuta en su propio proceso, y se utiliza un mecanismo de comunicación liviano para comunicarse entre sí (por lo general, la API Restful basada en HTTP). Cada servicio se basa en un negocio específico y puede ser Despliegue independiente en el entorno de producción, entorno similar a la producción, etc. Además, debe evitarse en la medida de lo posible un mecanismo de gestión de servicios unificado y centralizado. Para un servicio específico, debe construirse de acuerdo con el contexto empresarial seleccionando el lenguaje y las herramientas apropiadas.
2. Características de los microservicios.
- Pequeña intensidad y enfoque en una cosa
- Proceso separado
- Mecanismo de comunicación ligero, generalmente interfaz HTTP / REST
- Acoplado libremente, se puede implementar de forma independiente
3. Ventajas de los microservicios
- Mejore la comunicación de desarrollo, cada servicio es lo suficientemente coherente, lo suficientemente pequeño y el código es fácil de entender
- Prueba de servicio independiente, implementación, actualización, lanzamiento
- DFX personalizado, utilización de recursos, cada servicio se puede escalar en x y z independientemente, y cada servicio se puede implementar en un servidor de hardware adecuado de acuerdo con sus propias necesidades
- Necesita elegir el modo HA, seleccione el número de instancias para recibir servicios
- Fácil de expandir el equipo de desarrollo, puede desarrollar el equipo para cada componente de servicio (servicio)
- Mejore el aislamiento de fallas (aislamiento de fallas), la pérdida de memoria de un servicio no paraliza todo el sistema
- La aplicación de nuevas tecnologías, el sistema no estará restringido a una determinada pila de tecnología durante mucho tiempo
4. Desventajas de los microservicios.
-
Sin balas de plata, los microservicios aumentan la complejidad del sistema.
-
Los desarrolladores tienen que lidiar con la complejidad de los sistemas distribuidos.
-
Problemas de comunicación distribuida entre servicios.
-
Registro de servicio y problemas de descubrimiento
-
Problemas de transacciones distribuidas entre servicios
-
Informar problemas de procesamiento con aislamiento de datos
-
Problemas de coherencia distribuida entre servicios
-
Complejidad de gestión de servicios, orquestación de servicios
-
Gestión de diferentes instancias de servicio.
5. Despliegue de microservicios
- Un host implementa varias instancias de servicio
- Una instancia de servicio por host
- Una instancia de servicio por contenedor
- Acoplado libremente, se puede implementar de forma independiente
3. Aprende la tecnología docker
1. Conceptos relacionados de docker
- docker: permite a los desarrolladores empaquetar sus aplicaciones y paquetes dependientes en una imagen portátil, y luego publicarlos en cualquier máquina popular de Linux o Windows, también se puede virtualizar
- docker compose: puede administrar contenedores de manera fácil y eficiente, es una herramienta de aplicación para definir y ejecutar Docker de contenedores múltiples
- Dockerfile: la forma más común de crear una imagen en Docker es un archivo de descripción para una imagen de Docker
- docker machine: una herramienta que le permite instalar Docker en un host virtual y usar el comando docker-machine para administrar este host
- Swarm: proporciona el servicio de clúster de contenedores Docker, es la solución central del soporte oficial de Docker para la imagen ecológica de la nube de contenedores
- k8s: sistema de gestión de clúster de contenedor de código abierto, que puede realizar despliegue automático, expansión y contracción automática, mantenimiento, etc. de clústeres de contenedor
2. Cree su propio entorno de acoplador
El entorno utilizado para esta asignación es ubuntu 18.04 LTS
1. Instalación de Ubuntu Docker
Actualizar el índice del paquete apt
sudo apt-get update
Instale el paquete de dependencia apt, utilizado para obtener el repositorio a través de HTTPS
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
Agregar la clave GPG oficial de Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Use las siguientes instrucciones para configurar una versión estable del almacén
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Actualizar el índice del paquete apt
sudo apt-get update
Instale la última versión de Docker Engine-Community y containerd
sudo apt-get install docker-ce docker-ce-cli containerd.io
Prueba si Docker se instaló correctamente
sudo docker run hello-world
En este punto, Docker finalmente está instalado
2. Aceleración espejo
Ver a un maestro en la estación B para explicar el tiempo estibador, dijo tomar el espejo tirado de vez dockerhub, será relativamente lenta, lo mejor es acelerar su conjunto, cuando se hace con la presentación de Ali nube, por lo imito un momento
primero en registrar una Cuenta de Alibaba Cloud https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
y luego obtenga su propia dirección de aceleración de Alibaba Cloud
Configure el acelerador de imagen, puede usar el acelerador modificando el archivo de configuración del demonio /etc/docker/daemon.json
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["自己的加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3. Uso de contenedores
Este es un caso en la publicación de novatos. Seguir el tutorial paso a paso me dio una impresión preliminar de la operación de docker.
Use el comando docker run para ejecutar una aplicación en el contenedor. Aquí primero verifiqué la imagen de la máquina y descubrí que no es así. Si existe, vaya al almacén espejo para descargar el espejo, luego cree un contenedor, ejecute bin / echo "Hello world" en el contenedor y envíe el resultado
docker run ubuntu:15.10 /bin/echo "Hello world"
Para ejecutar un contenedor interactivo, utilizamos los dos parámetros de docker -i -t para habilitar el contenedor que ejecuta docker para lograr la capacidad de "diálogo", -t: especifique un pseudo terminal o terminal en el nuevo contenedor, -i: le permite Interactúe con la entrada estándar (STDIN) en el contenedor, puede salir del contenedor a través de la salida
docker run -i -t ubuntu:15.10 /bin/bash
Cree un contenedor que se ejecute como un proceso. A diferencia del método anterior, funciona en segundo plano y la salida es la versión completa del ID del contenedor
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
Ver contenedores en ejecución
docker ps
Use la identificación del contenedor para ver la salida estándar del contenedor
Docker logs 7a3aa39a4291
Use el comando docker stop para detener el contenedor. Cuando mira de nuevo el contenedor en ejecución, no se encuentra la identificación que acaba de encontrar.
docker stop 7a3aa39a4291
Al iniciar el contenedor en un proceso, puede usar el método de conexión para ingresar al contenedor
docker attach 1e560fca3906
Aquí hay dos formas, una es salir y la otra es ejecutiva, la diferencia es que la primera hará que el contenedor se detenga al salir del contenedor, la segunda no
docker exec -it 3dd2895db7ed /bin/bash
Exportar e importar contenedores
docker export 3dd2895db7ed > ubuntu.tar
cat ubuntu.tar | docker import - test/ubuntu:v1
Eliminar contenedor
docker rm -f 3dd2895db7ed
4. Uso del espejo
Utilice el comando de búsqueda de docker para buscar la imagen.
docker search httpd
Use el comando docker pull para descargar la imagen.
docker pull httpd
Para eliminar una imagen, primero detenga todos los contenedores, luego elimine el contenedor y finalmente elimine la imagen especificada
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi hello-world
Para actualizar la imagen, primero cree un contenedor, use el comando apt-get update para actualizar y use docker commit para enviar la copia del contenedor después de salir del contenedor
docker run -t -i ubuntu:15.10 /bin/bash
apt-get update
Envíe una copia del contenedor con el comando docker commit
docker commit -m="has update" -a="runoob" 5a230ff0a626 runoob/ubuntu:v2
Crear un contenedor, es decir, actualizar el contenedor
docker run -t -i runoob/ubuntu:v2 /bin/bash
Consultar información del contenedor
docker inspect be5bdc4f013c
5. Gestión de almacenes
Debido a que el Docker Hub es demasiado lento, elegí Alibaba Cloud Mirror para
establecer primero un almacén abierto en Alibaba Cloud
Luego inicie sesión en Alibaba Cloud en Docker
sudo docker login --username=郑裕恒 registry.cn-hangzhou.aliyuncs.com
Extraer imagen del registro
sudo docker pull registry.cn-hangzhou.aliyuncs.com/dyssl/dyssl:[镜像版本号]
Empuje la imagen al Registro
sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/dyssl/dyssl:[镜像版本号]
sudo docker push registry.cn-hangzhou.aliyuncs.com/dyssl/dyssl:[镜像版本号]
Entonces puede ver que ha tenido éxito en Alibaba Cloud