Bé, espero que hagi llegit els meus anteriors blocs Docker on he tractat els conceptes bàsics de Docker. Aquí, en aquest bloc de Docker Container, parlaré sobre què són els contenidors Docker i com funciona. Majoritàriament, ens centrarem en casos pràctics i d’ús de Docker.
He enumerat els temes d'aquest bloc Docker Container:
- Per què necessitem contenidors Docker?
- Com funcionen els contenidors Docker?
- Casos d’ús del contenidor Docker
Per què necessitem contenidors Docker?
Encara ho recordo correctament, estava treballant en un projecte. En aquell projecte seguíem l’arquitectura de microserveis. Per a aquells que no sabeu què és el microservei, no us preocupeu, us faré una introducció.
La idea darrere dels microserveis és que certs tipus d’aplicacions siguin més fàcils de construir i mantenir quan es divideixen en peces més petites i composables que funcionen juntes. Cada component es desenvolupa per separat i l'aplicació és simplement la suma dels components que la componen.
Considereu l'exemple següent:
Al diagrama anterior hi ha una botiga en línia amb microserveis separats per al compte d’usuari, el catàleg de productes, el processament de comandes i els carros de la compra.
Bé, aquesta arquitectura té molts avantatges:
- Fins i tot si falla un dels vostres microserveis, tota l'aplicació no es veu afectada en gran mesura.
- És més fàcil de gestionar
També hi ha molts altres avantatges, no entraré en molts detalls sobre els microserveis en aquesta publicació. Però, ben aviat també vindré amb un parell de blocs sobre microserveis.
En aquesta arquitectura, fèiem servir màquines virtuals CentOS. Aquestes màquines virtuals es van configurar escrivint scripts llargs. Bé, la configuració d’aquestes màquines virtuals no va ser l’únic problema.
El desenvolupament d’aquestes aplicacions requereix l’inici de diversos microserveis en una màquina. Per tant, si esteu iniciant cinc d'aquests serveis, necessiteu cinc màquines virtuals en aquesta màquina. Penseu en el diagrama següent:
L’altre problema és força comú, sé que molts us hi podeu relacionar. L'aplicació funciona en un ordinador portàtil d'un desenvolupador, però no en proves ni en producció. Això pot ser a causa de no mantenir un entorn informàtic consistent. Penseu en el diagrama següent:
També hi havia molts altres problemes, però crec que aquests problemes són suficients per explicar-vos la necessitat de contenidors Docker.
Esbrineu com els contenidors Docker són millors que les màquines virtuals
Per tant, imagineu-vos si estic donant 8 GB de RAM a totes les meves màquines virtuals i tinc 5 microserveis en diferents màquines virtuals. En aquest cas, aquestes màquines virtuals requeriran 40 GB de RAM. Bé, ara necessito que les configuracions de la màquina amfitrió siguin molt altes, hi hauria d’haver gairebé 44 GB de RAM a la meva màquina amfitrió. Viouslybviament, aquesta no és una solució sostenible per a aquesta arquitectura perquè estic malgastant molts recursos aquí.
Molt bé, tinc molts recursos per malgastar, però encara tinc un problema d’incongruència en el meu cicle de vida de lliurament de programari (SDLC). He de configurar aquestes màquines virtuals tant a la prova com a l'entorn prod. En algun lloc d’aquest procés, alguns programes no s’han actualitzat al servidor de prova i l’equip de desenvolupament utilitza la versió actualitzada del programari. Això condueix a conflictes.
Què passa si faig servir 100 màquines virtuals, la configuració de cada màquina trigarà molt de temps i, al mateix temps, també és propensa a errors.
Ara, entenem què és Docker Container i com funciona i com va solucionar el meu problema.
Què és un contenidor Docker?
Docker és una eina dissenyada per facilitar la creació, el desplegament i l'execució d'aplicacions mitjançant l'ús de contenidors.
Podeu crear contenidors Docker, aquests contenidors conteniran tots els fitxers binaris i biblioteques necessaris per a la vostra aplicació o microservei en el meu cas. Per tant, la vostra sol·licitud està present en un contenidor o bé l’heu envasada. Ara, aquest mateix contenidor es pot utilitzar a l’entorn Test and Prod.
Els contenidors Docker són una solució lleugera per a les màquines virtuals i utilitzen el sistema operatiu amfitrió. La millor part és que no haureu d’assignar prèviament cap memòria RAM al contenidor Docker, ja que ho necessitarà. Per tant, amb Docker Container no m’he de preocupar pel malbaratament de recursos.
Comprenem ara com funciona un contenidor Docker.
Com funciona un contenidor Docker?
El diagrama següent és bàsicament una forma d’utilitzar Docker. I suposo que, teniu una idea sobre Docker Image i Dockerfile.
Nois, sé que el diagrama sembla una mica complex, però confieu en mi que no és tan complex. A continuació es mostra l’explicació del diagrama, fins i tot després que us sembli difícil d’entendre, podeu comentar el vostre dubte; respondré aquestes preguntes el més aviat possible.
- Un desenvolupador primer escriurà el codi del projecte en un fitxer Docker i després crearà una imatge a partir d’aquest fitxer.
- Aquesta imatge contindrà tot el codi del projecte.
- Ara podeu executar aquesta imatge Docker per crear tants contenidors com vulgueu.
- Aquesta imatge de Docker es pot penjar a Docker hub (bàsicament és un dipòsit de núvol per a les vostres imatges de Docker, podeu mantenir-la pública o privada).
- Aquesta imatge Docker al concentrador Docker la poden treure altres equips com QA o Prod.
Això no només evita el malbaratament de recursos, sinó que també assegura que l'entorn informàtic que hi ha al portàtil d'un desenvolupador es reprodueixi també en altres equips. Ara em sento, no us he de dir per què necessitem Docker.
Aquesta va ser una manera d’utilitzar-lo, suposo que heu de tenir curiositat per saber com he utilitzat Docker per resoldre el meu problema de microserveis. Permeteu-me que us en doni una visió general.
A continuació es mostra l’explicació del diagrama:
- En primer lloc, vam escriure els complexos requisits dins d’un fitxer Dockerfile.
- Aleshores, l’hem empès a GitHub.
- Després vam fer servir un servidor CI (Jenkins).
- Aquest servidor Jenkins el retirarà de Git i crearà l'entorn exacte. S’utilitzarà tant en servidors de producció com en servidors de prova.
- L'hem desplegat a la fase de prova (es refereix a desplegar el vostre programari als servidors amb finalitats de prova, abans de desplegar-los completament a la producció.) Entorns per a verificadors.
- Bàsicament, vam implementar exactament el que teníem en desenvolupament, proves i posada en escena a la producció.
Serà just dir que Docker em va facilitar la vida.
Bé, aquesta era la història de la meva empresa, anem a veure l’estudi de casos de la Universitat d’Indiana. Com Docker va resoldre els seus problemes.
Estudi de cas de la Universitat d'Indiana:
La Universitat d'Indiana és un sistema universitari públic multicampus a l'estat d'Indiana, Estats Units.
Plantejament del problema
Feien servir scripts personalitzats per desplegar les aplicacions a la màquina virtual.
El seu entorn es va optimitzar per a les seves aplicacions heretades basades en Java. El seu entorn de creixement implica nous productes que no es basen únicament en Java. Per tal de proporcionar als seus estudiants la millor experiència possible, la Universitat necessitava començar a modernitzar les aplicacions.
La Universitat volia millorar la manera com arquitecturen les aplicacions, passant a una arquitectura basada en microserveis per a les seves aplicacions.
Calia seguretat per a les dades dels estudiants, com ara SSN i dades de salut dels estudiants.
Solució:
Docker Data Center (DDC) va solucionar tots els problemes; tingueu en compte el diagrama següent:
anar a funcionar en python
Registre de confiança de Docker - Emmagatzema les imatges Docker.
UI web UCP (Universal Control Plane) - Ajuda a gestionar tot el clúster des d’un sol lloc. Els serveis es desplegen mitjançant la interfície d’usuari web d’UCP, mitjançant imatges de Docker que s’emmagatzemen a DTR (Docker Trusted Registry).
Els equips de serveis informàtics aprofiten Universal Control Plane per subministrar el programari instal·lat de Docker als hosts i després desplegar les seves aplicacions sense haver de fer un munt de passos manuals per configurar tota la seva infraestructura.
UCP i DTR s’integren amb el seu servidor LDAP per proporcionar ràpidament accés a les seves aplicacions.
tutorial d'estudi visual per a principiants
Espero que hagueu llegit els blocs anteriors per conèixer els conceptes bàsics de Docker.
Ara us explicaré com podem utilitzar Docker Compose per a aplicacions de diversos contenidors.
Docker Hands-On:
Suposo que heu instal·lat Docker.Utilitzaré Docker Compose en aquest post, a continuació he fet una petita introducció a Docker Compose.
Docker Compose: És una eina per definir i executar aplicacions Docker multi-contenidor. Amb Docker Compose, podeu utilitzar un fitxer de redacció per configurar els serveis de la vostra aplicació. A continuació, mitjançant una sola ordre, podeu crear i iniciar tots els serveis des de la vostra configuració.
Suposem que teniu diverses aplicacions en diversos contenidors i que tots aquests contenidors estan units entre si. Per tant, no voleu executar cadascun d’aquests contenidors un per un. Però, voleu executar aquests contenidors amb una sola ordre. Aquí és on entra Docker Compose a la imatge. Amb ell podeu executar diverses aplicacions en diversos contenidors amb una sola ordre. és a dir, docker-compose up.
Exemple: imagineu que teniu contenidors diferents, un executant una aplicació web, un altre executant un postgres i un altre executant redis, en un fitxer YAML. D’això s’anomena fitxer de composició de docker, des d’allà podeu executar aquests contenidors amb una sola ordre.
Prenguem un exemple més:
Suposem que voleu publicar un bloc perquè utilitzeu CMS (Content Management System) i wordpress és el CMS més utilitzat. Bàsicament, necessiteu un contenidor per a WordPress i necessiteu un contenidor més com a MySQL per a la part posterior, que s’hauria d’enllaçar amb el contenidor de wordpress. També necessitem un contenidor més per a Php Myadmin que estarà enllaçat a la base de dades MySQL, bàsicament, s’utilitza per accedir a la base de dades MySQL.
Què tal si executi pràcticament l'exemple anteriorment esmentat.
Passos implicats:
- Instal·leu Docker Compose :
- Instal·leu WordPress: Farem servir l’oficial WordPress i MariaDB Imatges Docker.
- Instal·leu MariaDB: És un dels servidors de bases de dades més populars del món. La fan els desenvolupadors originals de MySQL. MariaDB es desenvolupa com a programari de codi obert i com a base de dades relacional proporciona una interfície SQL per accedir a les dades.
- Instal·leu PhpMyAdmin: És una eina de programari lliure escrita en PHP, destinada a gestionar l'administració de MySQL a través de la web.
- Crea el lloc de WordPress:
Comencem!
Instal·leu Docker Compose:
Instal·leu primer Python Pip:
sudo apt-get install python-pip
Ara podeu instal·lar Docker Compose:
sudo pip install docker-compose
Instal·leu WordPress:
Creeu un directori de wordpress:
mkdir wordpress
Introduïu aquest directori de wordpress:
cd wordpress /
En aquest directori, creeu un fitxer YAML Docker Compose i, a continuació, editeu-lo mitjançant gedit:
sudo gedit docker-compose.yml
Enganxeu les línies de codi següents en aquest fitxer yaml:
wordpress: image: enllaços wordpress: - wordpress_db: ports mysql: - 8080: 80 wordpress_db: image: entorn mariadb: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: image: corbinu / docker-phpmyadmin links: - wordpress_db: ports mysql: - 8181: 80 entorn: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka
Sé que voleu que expliqui aquest codi, de manera que faré el que faré; prendré petites seccions d’aquest codi i us explicaré què passa.
wordpress_db: ... entorn: MYSQL_ROOT_PASSWORD: edureka ...
Això establirà una variable d'entorn dins del contenidor wordpress_db anomenada MYSQL_ROOT_PASSWORD amb la contrasenya desitjada. La imatge MariaDB Docker està configurada per comprovar aquesta variable d'entorn quan s'inicia i s'encarregarà de configurar la base de dades amb un compte root amb la contrasenya definida com a MYSQL_ROOT_PASSWORD.
wordpress: ... ports: - 8080: 80 ...
El primer número de port és el número de port de l’amfitrió i el segon número de port és el port situat dins del contenidor. Per tant, aquesta configuració reenvia les sol·licituds del port 8080 de l'amfitrió al port 80 del servidor web per defecte dins del contenidor.
phpmyadmin: imatge: enllaços corbinu / docker-phpmyadmin: - wordpress_db: ports mysql: - 8181: 80 entorn: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka
Aquest agafa docker-phpmyadmin per part del membre de la comunitat corbinu, l’enllaça amb el nostre contenidor wordpress_db amb el nom mysql (és a dir, des de l’interior del contenidor phpmyadmin les referències al nom d’amfitrió mysql s’enviaran al nostre contenidor wordpress_db), exposa el seu port 80 al port 8181 del sistema host i, finalment, estableix un parell de variables d’entorn amb el nostre nom d’usuari i contrasenya MariaDB. Aquesta imatge no captura automàticament la variable d'entorn MYSQL_ROOT_PASSWORD de l'entorn del wordpress_dbcontainer, tal com ho fa la imatge de wordpress. De fet, hem de copiar la línia MYSQL_ROOT_PASSWORD: edureka del contenidor wordpress_db i establir el nom d’usuari com a root.
Ara inicieu el grup d'aplicacions:
docker-compose up -d
Això és tot el que heu de fer. Podeu afegir tants contenidors com vulgueu d’aquesta manera i enllaçar-los tots de la manera que vulgueu.
Ara, al navegador, aneu al port 8080 mitjançant la vostra IP pública o el vostre nom d'amfitrió, tal com es mostra a continuació:
localhost: 8080
Empleneu aquest formulari i feu clic a Instal·la WordPress.
Un cop hàgiu acabat, torneu a visitar l’adreça IP del servidor (aquesta vegada amb el port 8181, per exemple, localhost: 8181). La pantalla d'inici de sessió de phpMyAdmin us rebrà:
Seguiu endavant i inicieu la sessió mitjançant l’usuari root i la contrasenya que heu definit al fitxer YAML i podreu navegar per la vostra base de dades. Notareu que el servidor inclou una base de dades de wordpress, que conté totes les dades de la vostra instal·lació de WordPress.
Aquí acabo el meu bloc Docker Container. Espero que us hagi agradat aquest missatge. Podeu comprovar-ho altres blocs també a la sèrie, que tracta dels conceptes bàsics de Docker.
Si heu trobat aquest bloc Docker Container rellevant, consulteu el per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 250.000 estudiants satisfets repartits per tot el món. El curs de formació en certificació Edureka DevOps ajuda els estudiants a adquirir experiència en diversos processos i eines DevOps com Puppet, Jenkins, Docker, Nagios, Ansible, Xef, Saltstack i GIT per automatitzar diversos passos en SDLC.
Tens alguna pregunta? Esmenta’l a la secció de comentaris i et respondré.