Acoplable ha estado en el mercado desde hace muchos años, no es nada nuevo, y muchas empresas o desarrolladores de muchos de los estudiantes no tienen contacto hace, pero no muchas personas que tienen experiencia en la operación práctica, el énfasis principal de esta serie práctica, tratar de hablar de productos secos, sobre la base de yo entiendo el concepto oficial elaborada específica puede referirse al tutorial oficial, porque esta serie de tutoriales tiene una cierta dependencia de la sección anterior, y aprender todos los capítulos anteriores.
Esta serie de tutoriales de navegación:
Docker serie laico | contenedor primera experiencia
serie acoplable laico | Imagen primera experiencia
acoplable serie laico | a un nodo contenedor de comunicación de la red
acoplable serie laico | contenedor de datos de persistencia
Objetivo del curso:
- Aprender estructuras de contenedores nginx
- Aprender springboot reflejo configuración y dockerfile
- Aprender ventana acoplable configuración de red envase
- arreglo de volumen de contenedores OK
- Nginx proxy inverso para hacer comprender el nombre del contenedor
- Aprender servicios de crédito a la acumulación springboot
preparatorio
1. Descargar MySQL
docker pull mysql
2. Descargar nginx
docker pull nginx
3. Clonación de credit-facility-service
un uso posterior demostración desplegado, utilizando docker
una rama
git clone https://github.com/EvanLeung08/credit-facility-service.git
4. máquina virtual, instalar el entorno de centos y cargador de muelle Salida del primer capítulo, en este capítulo se ha instalado por defecto centos y estibador
acoplable serie laico | contenedor primera experiencia
objetivo real
- Crear una red de estibador, establecer una subred IP estática
168.18.0.0/24
- servicios de crédito a grupos de construcción
- [Servicios] de crédito de crédito-facility01 - 168.18.0.10
- [Servicios] de crédito de crédito-facility02 - 168.18.0.11
- [Servicios] de crédito de crédito-facility03 - 168.18.0.12
- estructuras de base de datos MySQL, y crear servicios relacionados con el crédito de mesa
- [Servicio MySQL] de crédito-instalación-db - 168.18.0.4
- Build Service Nginx, y la carga configurar el equilibrio de reglas
- [Servicio de Nginx] de crédito-instalación-nginx - 168.18.0.5
- servidor DNS utilizando las características acoplables construidos entre el contenido de la red ventana acoplable está en comunicación a través del nombre de la embarcación
- operaciones comerciales a través de acceso del navegador contoneo
La estructura general de
la imagen final
medidas prácticas
Crear una red acoplable
Aquí la primera parte de este proyecto para crear una red privada, la cara del contenedor se les asigna una subred IP estática, de fácil mantenimiento
1. docker network
Crear una red
[root@localhost ~]# docker network create --subnet=168.18.0.0/24 credit-facility-net
fab1ac021f2f0d6acabd1fdfba10959fdd6797a5adc3fb15ebef85da922dc4b9
Aquí hemos creado una red, llamada credit-facility-net
, y especificar un segmento de red IP de subred168.18.0.0/24
2. Comprobar el sistema de ordenador central Centos IP de la red externa, para su posterior aplicación para acceder a una máquina virtual utilizando la máquina
[root@localhost credit-facility]# ip add
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:ba:0a:28 brd ff:ff:ff:ff:ff:ff
inet 192.168.101.23/24 brd 192.168.101.255 scope global noprefixroute dynamic eth1
valid_lft 76364sec preferred_lft 76364sec
inet6 fe80::a00:27ff:feba:a28/64 scope link
valid_lft forever preferred_lft forever
Aquí Centos IP es el sistema 192.168.101.23
de recordar su IP del equipo anfitrión, necesidad de ser probado más tarde utiliza con frecuencia
estructuras de contenedores Mysql
Con el fin de facilitar la reutilización posterior, habrá primero crear un volumen de datos de persistencia de MySQL
1. Crear un volumen estibador, llamadocredit-facility-volume
docker volume create credit-facility-volume
2. Crear contenedor de MySQL
[root@localhost ~]# docker run -d --name credit-facility-db -v credit-facility-volume:/var/lib/mysql -p 3301:3306 -e MYSQL_ROOT_PASSWORD=evan123 --net=credit-facility-net --ip 168.18.0.4 mysql
9502bd3d4823cb61559647f60f20a5f7ce153b743701129544f1208b66d59d6a
Creado aquí un credit-facility-db
contenedor, la ruta de almacenamiento de datos principal Mysql especifica un credit-facility-volume
directorio, el puerto 3306 se asigna al puerto host 3301, se añade la red a la vasija credit-facility-net
, y asigna una dirección IP estática168.18.0.4
3. Vaya al contenedor y crear una instancia de base de datos MySQL
[root@localhost /]# docker exec -it credit-facility-db bash
root@9502bd3d4823:/# mysql -uroot -pevan123
mysql> create schema db_credit_facility collate utf8mb4_0900_ai_ci;
Query OK, 1 row affected (0.00 sec)
mysql> use db_credit_facility;
Database changed
mysql> exit
Bye
Aquí hemos creado una instancia de base de datos llamadadb_credit_facility
4. Crear las aplicaciones tabla asociada
tablas relacionadas almacenados en el crédito-instalación-servicio-infraestructura / recursos / db / schema.sql, siguen los de preparación de las instrucciones descargadas desde github credit-facility-service
proyecto
5. Por docker inspect
ver la información de contenedor
docker inspect credit-facility-db
"Mounts": [
{
"Type": "volume",
"Name": "credit-facility-volume",
"Source": "/var/lib/docker/volumes/credit-facility-volume/_data",
"Destination": "/var/lib/mysql",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
}
]
"NetworkSettings": {
"Bridge": "",
"SandboxID": "1ef5e3b28a7cb2c715aca8a122ce2caa50c41b29c53e04006885dd2114f34e8f",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"3306/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "3301"
}
],
"33060/tcp": null
},
"SandboxKey": "/var/run/docker/netns/1ef5e3b28a7c",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"credit-facility-net": {
"IPAMConfig": {
"IPv4Address": "168.18.0.4"
},
"Links": null,
"Aliases": [
"9502bd3d4823"
],
"NetworkID": "fab1ac021f2f0d6acabd1fdfba10959fdd6797a5adc3fb15ebef85da922dc4b9",
"EndpointID": "af76ebce29de84dfb2e48d44e3baa8b42923e698714b7774407915b02e55e1b4",
"Gateway": "168.18.0.1",
"IPAddress": "168.18.0.4",
"IPPrefixLen": 24,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:a8:12:00:04",
"DriverOpts": null
}
}
Puede verse en la salida anterior, una ruta de almacenamiento del recipiente se ha montado con éxito para el directorio del servidor fregadero /var/lib/docker/volumes/credit-facility-volume/_data
, el contenedor ha proporcionado con éxito ip168.18.0.4
servicios de crédito a grupos de construcción
La cantidad del servicio es un proyecto Springboot, su proceso de construcción como proyecto Springboot ordinaria
1. Antes de instalar, por favor pase mvn clean -U install
en el proyecto de construcción de una, asegúrese de que se puede construir un éxito, la atención al interruptor para el proyectodocker分支
2. Modificar la configuración de base de datos application.properties
, de forma predeterminada, no necesita ser modificado debido a que la base de datos de anfitrión mí aquí se accede a través del nombre del buque, el archivo de configuración almacenado en el camino start/resources
bajo
spring.datasource.url = jdbc:mysql://credit-facility-db:3306/db_credit_facility?useUnicode=true&characterEncoding=utf8
Si necesita ejecutar de forma local, la base de datos puede ser modificado para albergar <Centos ip>:3301
tales como:
spring.datasource.url = jdbc:mysql://192.168.101.23:3301/db_credit_facility?useUnicode=true&characterEncoding=utf8
3. Crear un nombre en el ordenador central Centos como una ventana acoplable credit-facility
carpeta
He creado una ruta de la carpeta de la siguiente manera:
[root@localhost credit-facility]# pwd
/usr/local/credit-facility
4. En credit-facility
la carpeta, cree un archivo Dockerfile para su uso posterior cantidad de servicio de creación de la imagen
En credit-facility-sevice
un proyecto en la dockerfile
carpeta, sólo hay dentro Dockerfile
Copia el archivo en el sistema Centos credit-facility
's carpeta puede ser
FROM openjdk:8-jre-alpine
MAINTAINER evan
LABEL name="credit-facility" version="1.0" author="evan"
COPY start-1.0.0-SNAPSHOT.jar credit-facility-service.jar
CMD ["java","-jar","credit-facility-service.jar"]
En mis Centos nativos se carga en el sistema bajo el directorio especificado por SFTP, podemos utilizar algunas de las herramientas se pueden cargar directamente
evans-MacBook-Pro:target evan$ sftp [email protected]
[email protected]'s password:
Connected to [email protected].
sftp> put Dockerfile /usr/local/credit-facility
Uploading Dockerfile to /usr/local/credit-facility/Dockerfile
5. etiquetada paquete frasco para la cantidad de servicio y de carga
-
Por
mvn clean package -Dmaven.test.skip=true
comando de empaquetado proyecto, se encuentra la puesta en 1.0.0-SNAPSHOT.jar al inicio / destino
-
Centos subido a la
credit-facility
siguiente carpeta
Ibid., También he subido desde el nivel local al servidor a través de SFTP
evans-MacBook-Pro:target evan$ sftp [email protected]
[email protected]'s password:
Connected to [email protected].
sftp> put start-1.0.0-SNAPSHOT.jar /usr/local/credit-facility
Uploading start-1.0.0-SNAPSHOT.jar to /usr/local/credit-facility/start-1.0.0-SNAPSHOT.jar
start-1.0.0-SNAPSHOT.jar 100% 43MB 168.1MB/s 00:00
sftp>
- En este punto, el sistema Centos
credit-facility
archivos de la carpeta no debe haber dos archivos
[root@localhost credit-facility]# ls
Dockerfile start-1.0.0-SNAPSHOT.jar
6. Crear una imagen previamente creada en base Dockfile
[root@localhost credit-facility]# docker build -t credit-facility-image .
7. Comprobar existente refleja
[root@localhost credit-facility]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
credit-facility-image latest d0536e7c7e78 3 hours ago 130MB
nginx latest a1523e859360 3 days ago 127MB
8. Cree tres líneas que sirven instancia del contenedor
[root@localhost credit-facility]# docker run -d --name credit-facility01 -p 8081:8080 --net=credit-facility-net --ip 168.18.0.10 credit-facility-image
4ffc98a8c73a4a7afe3737a8ace18d4d053cf8573ab61179963942f3b01104cb
[root@localhost credit-facility]# docker run -d --name credit-facility02 -p 8082:8080 --net=credit-facility-net --ip 168.18.0.11 credit-facility-image
a01e3613ac2a9e995fad644c29a5fd991e762008ff0dc8a3e5b1ab2e86d52924
[root@localhost credit-facility]# docker run -d --name credit-facility03 -p 8083:8080 --net=credit-facility-net --ip 168.18.0.12 credit-facility-image
9dc0ba15542ed29501a0d8540f0f226814e29ffb93c9ab9e06461c01b9f7c049
Lo anterior tres ejemplos fueron creados crédito facility01, el crédito-facility02, crédito facility03, unirse a credit-facility-net
la red, y la ip y se designan 168.18.0.12 168.18.0.10,168.18.0.11
9. Aprobación de docker logs credit-facility01
vista del recipiente de registro de inicio
10. Un navegador mediante pruebas en la máquina, consulte la siguiente interfaz de contoneo
- http://192.168.101.23:8081/swagger-ui.html
- http://192.168.101.23:8082/swagger-ui.html
- http://192.168.101.23:8083/swagger-ui.html
Build Service Nginx
Al igual que antes, invierto nombre del proxy en lugar de por la dirección IP buque portacontenedores porque estibador de red personalizada activada de forma predeterminada una función de servicio de DNS, la comunicación a través del nombre del buque, puede ser más flexible, sin específica IP Binding
1. Sistema de Contos credit-facility
en la carpeta, cree una nueva carpeta llamadanginx
[root@localhost credit-facility]# mkdir nginx
[root@localhost credit-facility]# ls
Dockerfile nginx start-1.0.0-SNAPSHOT.jar
2. Vaya a la carpeta de nginx, crear un nginx.conf
archivo, de la siguiente manera
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
location / {
proxy_pass http://balance;
}
}
upstream balance{
server credit-facility01:8080;
server credit-facility02:8080 ;
server credit-facility03:8080;
}
include /etc/nginx/conf.d/*.conf;
}
Aquí enrutamiento configuración de reglas de tres líneas que sirven nombre del contenedor en lugar de la dirección IP
3. Crear un contenedor de nginx
[root@localhost nginx]# docker run -d --name credit-facility-nginx -p 80:80 -v /usr/local/credit-facility/nginx/nginx.conf:/etc/nginx/ningx.conf --network=credit-facility-net --ip 168.18.0.5 nginx
60fc13c1a8d425263d6a90eb34a309ad5e5d3d5517598b8026d7326e9925b9f7
Aquí hemos creado un directorio llamado credit-facility-nginx
contenedor de nginx, especificando el sistema de asignación de puertos 80, es más importante aquí es copiar /usr/local/credit-facility/nginx/nginx.conf
a /etc/nginx/nginx.conf
, e ip distribución168.18.0.5
4. Verificar el servicio nginx en un navegador, introduzca 192.168.101.23
este tiempo Nginx ha construido con éxito
Verificar la cantidad de servicio
1. En la entrada del navegador http://192.168.101.23/swagger-ui.html
, se puede ver la siguiente interfaz
2. Uso de una primera prueba de interfaz, la solicitud de datos de entrada siguiente
{
"registrationLimitCO": {
"applicationId": "1111",
"userId": 1111,
"quotaLimit": 10000,
"productCode": "tb",
"expirationTime": "2030-01-01",
"accountType": 1
}
}
3. Comprobar los resultados de la ejecución para ver si el almacenamiento de éxito
puede verse a partir de los resultados de lo anterior, el importe de la solicitud de servicio se ha procesado correctamente, y el almacenamiento de éxito, una hora para ver el siguiente registro de base de datos a la base de datos
apéndice
- Elementos de prueba de Github Dirección: servicios de crédito
- Acoplable documento oficial: Docker tutoriales
Para más detalles, puede centrarse en mi Gitchat personal, el intercambio