Transcripciones
1. INTRODUCCIÓN AL CURSO: Hola y bienvenidos al curso de gestión de
contenedores con Pac-Man. Mi nombre es Andre
balance y estoy aquí para ayudarte a aprender
los beneficios de contenerización y también
cómo crear y administrar contenedores usando la herramienta de gestión de
contenedores Pokemon, me gustaría
especificar el hombre de la junta es extremadamente similar a Docker. La ganancia de conocimiento aquí se puede utilizar cuando se trabaja
con Docker también. Ahora comencemos el curso
contándote un poco sobre mí. Soy ingeniero certificado por Red Hat y también especialista
en trabajar con contenedores
y Kubernetes es mi segunda área de
especialización es InfoSec. También estoy certificado CompTIA Security Plus 35 millas a CISO. Entonces ahora que ya saben
un poco de mí, vean lo que estaremos
cubriendo dentro de este curso. Hagamos un breve resumen de lo que deberíamos estar cubriendo
durante este curso. Aprenderemos sobre
los contenedores, su arquitectura, en sus beneficios después, que iremos a áreas
más prácticas. Y discutiremos los registros de
contenedores. Lo son y cómo
configurarlos dentro de pod man. A continuación, nos sumergiremos en la
gestión de Contenedores, donde veremos cómo
crear servicios contenerizados. Ahora podemos manejar bien
los contenedores, si también podemos manejar imágenes. Entonces eso es lo que
haremos en el siguiente módulo. Los contenedores tienen por defecto almacenamiento
efímero. Entonces, si queremos que nuestros cambios persistan más allá de la
muerte de un contenedor, tenemos que entender
cómo asignar almacenamiento de
persistencia
a los contenedores. Y eso lo cubriremos
en el quinto módulo. En el sexto módulo siete, nos centraremos en
Container Networking, donde aprenderemos sobre la
vinculación de puertos y la creación de redes. Como hoy, terminaremos este curso aprendiendo a crear nuestras propias
imágenes de contenedores a través del uso de archivos Docker y directorios de
trabajo. Ahora que tenemos un panorama
bastante bueno de lo que
cubriremos, Empecemos.
2. Contenedores explicados: Ahora con ahora nuestro primer módulo, hablaremos un poco
de los contenedores, qué son, y de los
beneficios de la contenerización. Terminaremos este
módulo configurando un entorno de laboratorio donde podamos ejecutar todos nuestros ejercicios prácticos
para los siguientes módulos. Entonces, sin más preámbulos,
comencemos. Ahora veamos un poco
cómo funcionan los contenedores. Ahora las aplicaciones de software
dependen de bibliotecas del sistema, archivos de
configuración o servicios que proporciona el
entorno de tiempo de ejecución. Además, el entorno de tiempo de
ejecución para una aplicación de software
se instala en un sistema operativo que se ejecuta en un host físico
o una máquina virtual, los administradores instalan
la aplicación en la parte superior de ese sistema operativo. El principal inconveniente aplicaciones de
software implementadas
tradicionales es que estas dependencias están enredadas con el entorno de tiempo de
ejecución. Una aplicación puede requerir
versiones anteriores o nuevas de un software de soporte y el software
proporcionado por el sistema operativo. Ahí es donde entran
los contenedores. Contenedor es un conjunto de uno o más procesos que están aislados del
resto del sistema. Piénsalo como un contenedor de
envío físico. El contenedor de envío es una
forma estándar de empacar y enviar. Se etiqueta cargado, descargado y transportado
de un lugar a otro dentro de una sola caja. contenido de los contenedores
se aísla del contenido de
otros contenedores, por lo que no se
afectan entre sí. Por lo que están en aislamiento y
funcionan de manera independiente. Entonces, ¿cuáles son las características
de un contenedor? Bueno, se ejecutan directamente en
el sistema operativo host y comparten esos recursos con todos los contenedores de ese sistema. Compartían el kernel del host. El núcleo aísla
los
procesos de aplicación del
resto del sistema. Requieren mucho menos
recursos que las máquinas virtuales, por lo que son más rápidos de
iniciar e implementar. E incluyen todas
las dependencias como dependencias de sistema y programación
y ajustes de configuración. No importa dónde
los desplieguen, se comportarán de la misma manera. Ahora que entendemos un poco acerca de la arquitectura de contenedores, veamos algunos términos útiles. Contenedor es un
proceso o un conjunto de procesos que ejecutan una
imagen con restricciones. Imagen es un paquete que contiene todos los requisitos para ejecutar esos procesos o ese proceso. Un registro es un lugar donde las imágenes pueden ser almacenadas
y recuperadas. viejo es la herramienta de
gestión de contenedores, que utilizamos gestionó
tanto imágenes, contenedores, como la
forma en que interactúan. Otra
alternativa popular es Docker. Y el pod es uno o
varios contenedores, lo que representa una
sola aplicación. Entonces veamos un poco los
beneficios de la contenerización. En primer lugar, tenemos portabilidad. Un contenedor de aplicaciones crea un paquete de software ejecutable abstraído
del sistema operativo host. De ahí que no sea dependiente ni
atado al sistema operativo de ninguna manera, haciéndolo portátil y permitiendo que
se ejecute de manera consistente
y uniforme a través de
cualquier plataforma o nube, entonces tenemos velocidad porque no
hay sistema operativo para arrancar. Eso también significa que la hora de
inicio es muy baja. Los nervios también son muy eficientes es el
software que se ejecuta en un
entorno contenerizado comparte el núcleo del sistema operativo máquinas host. Los desarrolladores pueden compartir las
capas de aplicaciones entre contenedores. Además, los contenedores tienen una capacidad intrínsecamente más pequeña que las máquinas virtuales requieren tiempos de inicio
mínimos, lo que permite a los desarrolladores
ejecutar más contenedores en la misma capacidad de cómputos
que es una máquina. En consecuencia, esto genera
mayores eficiencias del servidor y reduce sus costos asociados de
servidor y licencias. Y por último, como
se dijo anteriormente, debido a que no hay SO para que ambos contenedores también
tengan menos gastos generales. Entendemos la arquitectura de
contenedores y los beneficios de la
contenerización. Configurar el entorno de laboratorio. En primer lugar, repasaremos los requisitos previos
para establecer el laboratorio. Después, miraremos
los comandos que debemos ejecutar. Por último, haremos una
breve demostración para tener nuestro entorno de laboratorio
en funcionamiento. Ahora en términos de requisitos previos, necesitamos un host que ejecute Red Hat Enterprise Linux
versión ocho o superior. El host tiene que estar conectado
a internet. Por lo que necesita una conexión
a Internet activa, cual utilizaremos para
descargar tanto Birdman también imágenes de contenedor
adjuntas a nuestro host. Necesitamos una descripción de autoapoyo o
desarrolladores. Entonces eso significa que necesitamos crear una cuenta de desarrollador
con Red Hat. Adicionalmente, se recomienda que también tengamos una cuenta en un repositorio de contenedores de donde obtendremos nuestras imágenes, como Docker o arcilla. Pero eso no es obligatorio. Así que ahora veamos los
comandos que
necesitaremos para configurar nuestro entorno de
laboratorio. Entonces en realidad no es
tan complicado. Sólo hay tres comandos
que tenemos que ejecutar. Registro de Subscription
Manager el primer día, el
cual registrará
nuestro sistema usando nuestra cuenta
y contraseña de Red Hat. Después tenemos
adjunto
Subscription Manager menos menos auto, que adjuntará la
suscripción a nuestro host. Y por último, ejecutaremos el
comando yum install container tools para instalar la herramienta de
gestión de contenedores pobre desde repositorios de red heads después de
que hayamos registrado con éxito nuestro host. Así que ahora vamos a poner todos estos
comandos en uso y configurar nuestro entorno de laboratorio
dentro de nuestra breve demostración. Primero que estaremos usando
el comando Subscription Manager registered para registrar
mi sistema con Red Hat. Estaré poniendo mi ID de Red
Hat y también mi contraseña. Entonces sólo tengo que esperar un poco. Como puede ver,
el mensaje de salida es que el sistema ha sido registrado y el nombre del sistema es localhost dot local domain. Utilizaré el comando Subscription
Manager attach menos menos auto para adjuntar
mi suscripción a mi host. Esto podría tomar un poco de tiempo, pero después de esto se hace, entonces tengo acceso a leer cabezas repositorios también puede
ver un mensaje emergente ha aparecido diciendo que
el registro es exitoso y mi estado
está suscrito dormido. Estaré usando el
comando yum install container tools para instalar la herramienta de administración de contenedores llamada Pac-Man desde repositorios de
cabezas rojas. puede ver que
se está
descargando con éxito y se completa. Ahora. Enhorabuena.
Ahoratienen un entorno de laboratorio en funcionamiento,
estado ejecutando.
3. Registros de contenedores: Previamente instalamos
nuestro entorno de laboratorio. Por lo que ahora podemos hablar de registros de
contenedores. Primero haremos un panorama
teórico de lo que son
los registros de contenedores. Y luego
pasaremos a la demo, donde haremos nuestro propio registro de contenedores
personalizado. Entonces, sin más preámbulos,
empecemos. Entonces, ¿cuáles son nuestros
registros de contenedores? Bueno, para decirlo simplemente, hay un
repositorio de imágenes. Un registro de contenedores
es un banco para almacenar y obtener imágenes de
contenedores. Un desarrollador carga imágenes de
contenedor a un registro de contenedores. A continuación, puede descargar esas
imágenes de un registro a un sistema local para ejecutar y crear servicios en
contenedores
basados en esas imágenes. Existen dos tipos de
registros, privados o públicos. Puede utilizar un registro público
o uno privado en el que su organización
controle la fuente de sus imágenes de contenedor importa, especialmente desde
el lado de la seguridad. Para descargar imágenes
de la mayoría de los registros, primero
necesita
tener una cuenta con esos registros
y puede ingresar a ese registro utilizando la herramienta de
administración de contenedores old man, más específicamente el comando
pot man login. Ahora, el archivo de
configuración predeterminado para
los registros de contenedores se enseña en el archivo slash ETC slash container
slash registry.com. Ahora, ambos hombres tienen la capacidad de
manejar contenedores despiadados. Eso significa que podemos crear un archivo
registry.com en el directorio home del usuario dot config
slash containers. Esto tendrá prioridad sobre el general
presente en slash, ETC slash container
slash registries.com. Ahora dentro del archivo de
registro de contenedores, tenemos la sección de
búsqueda de estos registros. Dentro de la sección de
búsqueda del registro, hay una lista de
registro buscable se configura. También tenemos los registros
en sección segura. Estos registros no están
protegidos con cifrado TLS. Entonces ahora que tenemos una buena
visión teórica de los registros, Echemos un vistazo a algunos comandos prácticos
y útiles de Pokemon para trabajar con registros. En primer lugar, tenemos el comando
old man login usando el comando boat man
login, como podemos ver en el ejemplo,
ingresaré a mi registered.com usando un
nombre de usuario y contraseña. Entonces tenemos el comando pod
man info nos
dará información sobre la configuración de PODD man, incluyendo registros de búsqueda. Y por último, tenemos el comando de búsqueda del hombre de
puerto,
El comando de búsqueda de punto hombre. Puedo ir a través de mis
registros y
buscar una
palabra clave específica como HTTPD. Como ejemplo, la búsqueda PacMan, HTTPD buscará en los registros
cualquier imagen de contenedor
que contenga la palabra clave HTTPD. Entonces, sin más preámbulos, vayamos ahora a
la demo y pongamos en práctica
nuestros conocimientos aprendidos. Primero, usaré VIM
para mostrarte el archivo slash, ETC slash container slash
registered.com. Aquí tenemos los registros de
búsqueda no calificados. Estos son los registros
a través de los cuales busca el hombre pod. Cuando busco una imagen, tenemos aquí el
registro.centos.org, quiet.docker.io, etcétera. Ahora voy a estar renunciando a
este documento en particular. Crearé una nueva ruta
usando el MK D o Command. Y mi nueva ruta será dot
config slash containers. Ahora copiaré el archivo slash
ETC slash containers slash registered.com en la ruta dot config slash
containers. Conservaré el mismo
nombre, registry.com. Ahora, editaré este
archivo en particular porque solo quiero que mi herramienta de
administración de contenedores pod man busque
a través de
registry.access.redhead.com. Por lo que eliminaré
todos los registros que no me gustaría usar, como puntos de registro, Centos.org, quiet.io
y docker.io. Entonces guardaré y
saldré de este documento. Ahora haré un comando de
búsqueda de PubMed con el término HTTPD para probar si mis
registros están bien. Y podemos ver claramente
que aquí tenemos resultados. Ahora, borraré la pantalla y usaré el comando port man info para obtener información sobre nuestra configuración de
Pac-Man. Y podemos ver claramente aquí que los registros que se pueden buscar son
sólo registry.access.com. Entonces el único que dejé dentro del archivo dot config slash containers slash
registries.com. Por lo que nuestra demo funcionó a la perfección. Muchas gracias y nos
vemos en el siguiente módulo.
4. Gestión de contenedores: Anteriormente, aprendimos
sobre los registros de contenedores. Ahora dentro de este módulo
aprenderemos a administrar contenedores utilizando la herramienta de administración de
contenedores pod man. Este será un módulo altamente
práctico y terminaremos este
módulo con la demo, poniendo en práctica todos nuestros
conocimientos aprendidos. Entonces, sin más preámbulos,
comencemos. Ahora en términos de comandos útiles, primero
tenemos el comando port
man pool, especificando un registro y luego una imagen dentro de
ese repositorio. Esto descargará esa
imagen al host local. Después tenemos
el
comando de inspección de Pokemon especificando una imagen guardada
localmente. Esto nos dará información
detallada sobre esa imagen del contenedor. Usando el comando pod man
images, podemos obtener una lista de imagen
guardada localmente y usando el comando poor man RMI
especificando un nombre de imagen, podemos eliminar una imagen guardada
localmente. Ahora antes de entrar en contenedores en
funcionamiento, hagamos una breve descripción general de los estados en los que se puede encontrar un
contenedor. Genial, significa
que nuestro contenedor está creado pero no iniciado ejecución significa que
un contenedor se está ejecutando con todos
sus procesos. Detener significa que se
detiene un contenedor y está
esperando que se inicie una señal. Sus procesos están
esperando lo mismo. Post significa un contenedor y
sus procesos están en pausa mientras que eso significa que todos sus procesos han sido salidos. Ahora echemos
un vistazo a algunos comandos útiles para ejecutar contenedores utilizando la herramienta de
gestión de contenedores de hombre pobre con el podio y comando run. Podemos ejecutar un comando
dentro de un contenedor. Podemos especificar el nombre con
la opción minus-menos nombre. Y al final del comando, especificamos la imagen en la
que se
basa ese contenedor mediante el uso de la opción
menos d, que significa despegado, significa que el contenedor se
ejecutará en modo desapegado. Eso significa que el
contenedor correrá en segundo plano hasta que se detenga. Usando el comando pot man ps, podemos listar todos los
contenedores en ejecución usando el comando pod man ps
con esta opción menos una, podemos enumerar todos los contenedores
funcionando o no. Usando el comando pod man logs. Podemos obtener cargas
de un contenedor de nombre, lo que podría ayudarnos
a solucionar
posibles problemas asociados
con ese contenedor. Quisiera precisar que si utilizamos la opción menos e, declararemos las variables
ambientales que se pasan
a ese contenedor. Deportamos man stop comando
especificando un nombre de contenedor. Podemos detener un contenedor en funcionamiento con el comando Pac-Man start. Nuevamente, especificando
el nombre del contenedor. Podemos iniciar un contenedor detenido usando el comando pod man RM. Podemos quitar un contenedor
especificando su nombre. Con el comando Pac-Man cp. Podemos copiar archivos desde
el host a un contenedor usando el comando old man exec especificando un nombre de contenedor, podemos ejecutar un comando dentro un contenedor name y
usando el comando pot man exec con
las opciones menos IT que especifican slash bin slash bash, podemos obtener una terminal
dentro de un contenedor de nombre. La opción menos i redirigirá todas las entradas del
host al contenedor. Y la
opción menos d nos
dará pseudo terminal
dentro de ese contenedor. Así que ahora que tenemos
una buena visión general de todos los comandos importantes necesarios para ejecutar contenedores utilizando la herramienta de
administración de contenedores pod. Pasemos a la demo. Ahora primero, buscaré una imagen HTTP D usando el comando de búsqueda del
pod man. Simplemente me desplazaré un poco hacia arriba
y dentro de la descripción, puedo ver un servidor Apache
HTTP 2.4. Copiaré el nombre de esa imagen y
borraré la pantalla y usaré el
comando Postman pull para descargarla localmente. Como puedes ver, está tratando sacar la imagen
del registro, está consiguiendo las firmas fuente y está copiando los
blobs mientras hablamos. Entonces solo esperemos un poco. Por lo que la votación ha
sido exitosa. Ahora para validar esto,
estaré usando el
comando pod man images y podemos ver que
nuestra imagen está presente aquí. A continuación, usaré el comando port
mapping spec para obtener información
detallada sobre
esta imagen en particular. Podemos ver mucha
información aquí. En primer lugar, podemos ver al usuario
bajo el cual se ejecuta esta imagen, que se usa en 1001. También podemos ver detalles sobre los puertos expuestos de la
imagen, que son 8088443. Un resumen y una descripción de lo que esta imagen está destinada a hacer, el directorio
de trabajo de esta imagen, y también detalles
sobre el vendedor de la imagen que es
pelirroja Incorporated, y la versión de la
imagen que es 2.4. Simplemente despejaré la pantalla. Ahora. Ahora estaré usando
el comando port VLAN run especificando el nombre
de mi Contenedor a través de la opción minus-menos
nombre. Y se llamará
aplicación web y la imagen en la
que basarla. Y podemos ver claramente que
el contenedor arrancó. Sí nos da algunos
logs y errores, pero ha funcionado correctamente. Simplemente saldré de la pantalla. Ahora usaré el barquero ps menos un comando para
listar todos los contenedores. Y podemos ver claramente
nuestro contenedor de aplicaciones web, que fue creado hace
39 segundos. Lo eliminaré usando el comando pobre hombre RM
especificando su nombre. Ahora, volveré a ejecutar el
contenedor, pero ahora en modo desapegado especificado a través de
la opción menos d. Voy a mantener la aplicación web del
mismo nombre, y se basará
en la misma imagen. Validaré mi trabajo a través del uso del comando pause
band ps, que nos mostrará todos los contenedores
corriendo. Y podemos ver que nuestro
contenedor llamado Web App, que fue creado hace
dos segundos, está en funcionamiento. Obtendré
información detallada este contenedor a través
del uso de bitácoras Pac-Man. Y podemos ver algunos logs asociados con nuestro contenedor de aplicaciones
web. Ahora, déjenme simplemente
borrar la pantalla. Y ahora usemos
el
comando Pokemon stop para parar con
un contenedor de aplicaciones web. Podemos validar nuestro
trabajo a través del uso
del viejo ps menos
un comando donde podemos comprobar el estado
del contenedor y éste cambió de hasta salido. Empezaré de nuevo el contenedor usando el comando de
inicio del barquero. Y como se puede ver, el estado ha cambiado de
nuevo de salido a arriba. Por lo que ahora me gustaría demostrar el comando cp
Pac-Man. Pero antes de eso, crearé un documento llamado index.html con el contenido de
helloworld usando el comando echo y la redirección de
salida, luego usaré el comando
port man cp, especificando el archivo index.html que he creado previamente. Y
lo estaré transfiriendo al contenedor llamado wet-bulb dentro del
pasado slash var slash v, V, v slash HTML
slash index.html. Ahora, entraré al contenedor
usando el
comando exec barquero con las
opciones menos IT slash bin slash bash. Como pueden ver, el
lote ha cambiado y al ejecutar un comando P
S menos ox, puedo ver claramente que
ya no estoy en mi host local. Yo estoy dentro del contenedor. Cambiaré
directorio a la slash var slash VB slash HTML path. Y aquí puedo hacer un listado. Dentro de ese listado,
podemos
ver claramente el archivo index.html. Y sólo voy a leer el
contenido de ese archivo, que son exactamente como se
especifica. Hola Mundo. Hemos copiado con éxito
nuestro archivo desde dentro del host local al contenedor
en esta ruta especificada. Si quería revisar
el contenido de ese archivo sin
entrar en el contenedor, puedo hacerlo
usando el comando pod man exec para ejecutar el comando cat en
estos path especificados. Por lo que ahora es el momento de
limpiar después de nosotros mismos. En primer lugar, enumeraré
todos los contenedores con el pod man ps menos un comando, y podemos ver claramente nuestro contenedor de aplicaciones
web allí. Después detendré
el contenedor con el comando Pokemon stop
web app. Después,
retiraré el contenedor con el comando port man RM. A continuación, enumeraré todas las
imágenes presentes en mi host local usando el comando
Pokemon images, eliminaré mi imagen
existente con el comando pot man RMI. Y volveré a enumerar todas las imágenes con el comando
Pokemon images. Y podemos ver claramente
que no tenemos imágenes. Y al usar el pod
man ps menos un comando, también
podemos
ver claramente que
no hay más
contenedores en funcionamiento en este punto. Entonces enhorabuena. Ahora tiene un
conocimiento básico de cómo administrar los servicios en
contenedores utilizando la herramienta de
administración de contenedores port man. Nos vemos en el siguiente módulo
donde hablaremos sobre el manejo de imágenes de contenedores.
5. Gestionar imágenes: En el
módulo anterior,
hablamos de la gestión de contenedores. Ahora, veamos también las
formas en que podemos gestionar las imágenes dentro de
nuestro entorno. Entonces, sin más preámbulos,
comencemos. Ahora, veamos algunos comandos
esenciales para manejo de imágenes dentro de los carteros. Anteriormente vimos piscina hombre
vertido. Ahora usando el comando port
man poor, podemos guardar una imagen de contenedor
localmente desde un repositorio. Podemos enumerar todas las imágenes de contenedores utilizando las imágenes de hombre olla. Y si queremos
eliminar una imagen guardada localmente, podemos usar el comando pod man RMI especificando
el nombre de la imagen. Ahora supongamos que nos
gustaría cambiar el nombre de una imagen. Podemos hacerlo usando
el comando de etiqueta Pac-Man, especificando el nombre
original de la imagen
y el nuevo nombre de la imagen. Nos gustaría dársela.
Siqueremos subir una
imagen de contenedor localmente segura a un registro, podemos hacerlo usando
el comando push Pac-Man. Si nos gustaría obtener información
detallada sobre una imagen de
contenedor almacenada localmente, como se discutió anteriormente,
podemos hacerlo usando el comando pot man
inspectar. Ahora supongamos que trabajamos dentro de un contenedor como un servidor web
HTTP. Y modificamos nuestro archivo
index.html y nos gustaría crear una nueva imagen basada en
ese contenedor alterado. Podemos hacerlo usando
el comando pod men commit para crear una imagen a
partir de un contenedor
en ejecución. Entonces ahora que tenemos
una visión general de todos los comandos importantes
para el manejo de imágenes, entremos a la demo. En primer lugar, usaré la búsqueda de
port man para encontrar una imagen HTTPD adecuada. Me desplazaré hacia arriba
dentro de los resultados. Y de nuevo, voy a copiar
el primer resultado, que es HTTP D24 RHEL siete. Despejaría la pantalla y ahora usaré la piscina Pac-Man para
poder descargar
esa imagen
del repositorio y
guardarla localmente. Ahora, esperemos un poco a que se finalice
el jaleo. Por lo que ahora que la
descarga está completa, puedo usar
imágenes de Pac-Man con el fin validar que la imagen
ha sido exitosa. Y lo podemos ver aquí. Ahora, usaré
inspector de hombre de puerto para inspeccionar la imagen. Como puedes ver, Pokemon
expect nos da información
detallada sobre
esta imagen en particular. Podemos ver al usuario bajo el
cual se está ejecutando la imagen. Podemos ver los puertos expuestos. Se puede ver un resumen de lo que pretende hacer
la imagen, una descripción detallada sobre eso. Ahora, me gustaría retraer la imagen usando el comando de etiqueta de
barquero, especificando el nombre original de la
imagen y la nueva etiqueta que le daré se
llamará mi nueva etiqueta versión 2. Puedo construirlo por trabajo usando el comando de imágenes de Pokemon N. Podemos ver claramente aquí localhost slash
minute tag version 2. Ahora estaré usando el contenedor de comandos port man run
ejecutándose en modo desapegado. El contenedor se llamará aplicación
web y se basará en la imagen llamada
minute tag version 2. Como puede ver, el contenedor
se creó con éxito. Y ahora correré
el Pac-Man ps menos un comando con el fin de validar
que está en marcha. ¿ Y qué sabes que está
funcionando adecuadamente? A continuación, abriré una terminal
dentro del contenedor usando el comando pot man exact menos IT
slash bin slash bash. Allí haré una prueba de eco y redirigiré la salida
al archivo slash var slash slash HTML slash
index.html. Dentro de ese contenedor,
saldré del contenedor. Voy a correr Pac-Man ps menos a. nuevo, podemos ver
que está en marcha. Y usaré el comando
llamado Pac-Man commit fin de crear una imagen basada en este contenedor alterado, pod men commit web
app, mi nueva imagen, versión 1, podemos ver que la imagen fue
creadocon éxito. Voy a detener el
contenedor existente llamado mapa web, y lo eliminaré usando
el comando de hombre pobre RM. Despejaré la pantalla. Y ahora crearé
un nuevo contenedor corriendo en modo separado
con el mismo nombre, pero ahora basado en la imagen comprometida que
creamos previamente, el contenedor se ha creado
con éxito y ahora estaré usando el comando
pot man exec para ejecutar un comando cat dentro del contenedor para ver si
el archivo está presente. Barras de barra de gato tales v, V, v slash HTML slash index.html. Y podemos
ver claramente que la salida es como se esperaba pruebas Sur, por lo que funcionó a la perfección. Ahora, estaré usando
el
comando Pokemon stop para detener mi contenedor de aplicaciones
web. Lo quitaré usando
el comando pod man RM. Ahora estaré ejecutando el comando de imágenes de
Pac-Man para listar todas las imágenes guardadas en
mi sistema de archivos local. Y eliminaré a
cada uno de ellos con el comando Pokemon RMI. Tan orgulloso hombre, RMI, imagen
minuto versión
1, pot man, RMI, mi nueva etiqueta 2 y pobre hombre RMI registro dot
access, tanto Red Hat.com, podemos validar
que nuestros sistemas, se limpia por corriendo el
pote man imágenes comando y departamento ps menos un comando y no queda nada ahí. Enhorabuena, ahora tiene un conocimiento básico
de cómo administrar imágenes de
contenedores utilizando la herramienta de
administración de contenedores Pac-Man. Nos vemos en el siguiente módulo
donde estaremos
hablando de almacenamiento efímero y
persistente.
6. Almacenamiento persistente: Hola y bienvenidos de nuevo. En este módulo,
hablaremos del almacenamiento de contenedores y aprenderemos a montar almacenamiento
persistente dentro de contenedores. Porque por defecto, los contenedores
tienen almacenamiento efímero. Entonces eso significa que
todo lo que hemos hecho dentro un contenedor en el momento
de la destrucción, se ha ido. Entonces vamos a llegar a ello. Por lo que el almacenamiento que
utiliza el contenedor es efímero. La naturaleza efímera
del almacenamiento de contenedores significa que su contenido
se pierde después retirar el contenedor montando un directorio del host
dentro del contenedor, usted está dando al contenedor
almacenamiento persistente. Todos los cambios y contenidos
del directorio montado se
escribirán en el sistema de archivos host. Por lo tanto, persistirán después de que el contenedor haya sido
destruido o retirado. Ten en cuenta que
debes tener en cuenta
los permisos del sistema de archivos al montar
un volumen persistente para que el contenedor lo use. Ahora la herramienta de
administración de contenedores Pokemon soporta contenedores
sin raíz si
está ejecutando el contenedor como la raíz de usuario del host que
el UID y GID coincidirán con los que están
dentro del contenedor. En un contenedor sin raíz, usuario tiene acceso root
dentro del contenedor porque pod man crea el contenedor
dentro del espacio de nombres de usuarios, el usuario raíz del
contenedor se asigna
al UID del usuario
dentro de la máquina host. Cada usuario después dentro
del contenedor se asigna a un usuario dentro del rango de
100 mil. Así que ahora veamos
algunos comandos útiles para montar
almacenamiento persistente dentro de contenedores. Con el mapa Padma unshare cat slash proc slash slash UID. Podemos ver que el mapeo UID de los usuarios dentro del contenedor. Deportamos hombre, unshare cat
slash proc slash slash mapa JD. Podemos ver ese mapeo GID. Ahora bien, si quisiéramos montar almacenamiento
persistente
dentro de un contenedor, estaremos usando
el
comando pod man run con la opción menos v. El primer comando crea un servidor web HTTP donde el contenido se obtiene
del directorio montado slash web content en
el host se monta en la slash var slash www
dot slash ruta HTML dentro del contenedor. Agregar una Z mayúscula
al final de la ruta
también asegurará que esté configurando el contexto de SE Linux correcto. Ahora, lleguemos a la demo y hagamos las cosas un
poco más prácticas. Así que vamos a empezar esta
demo mirando primero los
mapeos GID y UID usando el comando pod
man unshare. Hombre vaina, no compartir gato slash, proc slash, slash su mapa de identificación. Y aquí podemos ver los
mapeos. Y Birdman unshare cat slash
proc slash tamaño de celda JID. Y podemos ver los mapeos
GID aquí. Entonces ahora que tenemos esto, Vamos a crear
realmente un nuevo camino. Crearé un
directorio llamado
contenido web dentro de la
casa de mi usuario. Dentro de esta carpeta, haré
eco de mensaje IN montado y redirigiré
la salida a un archivo llamado index.html. Ahora borraré la
pantalla y veamos qué imágenes tenemos disponibles usando el comando Pac-Man
images. No tenemos ninguno. Entonces usaré el comando pod man
pull para poder descargar una imagen de un servidor
HTTP localmente. Y esperemos un poco a que
la imagen termine de descargarse. La imagen ha terminado de
descargarse con éxito. Y podemos usar el comando pod
man run con el
fin de crear un contenedor
llamado Web App. Se ejecutará en modo
separado y
estaré montando el
directorio de contenido web que he creado
previamente desde mi
host a la carpeta slash var slash www slash HTML
dentro del contenedor, manteniendo los contextos
correctos de SELinux. Al agregar la
Z mayúscula al final, enlazaré el puerto
a través de la opción menos p. Por lo que el puerto 8082 del host
estará ligado al puerto 8080
del contenedor. Y estaré usando la imagen que he descargado
previamente. Como podemos ver al usar el comando
pod man ps menos a, el contenedor está en
funcionamiento y el puerto
está delimitado correctamente. Si hago un comando curl en el host local
a través del puerto 8082, podemos ver el mensaje,
soy Mountain. Ahora usaré el comando
exec barquero para conseguir una N-terminal dentro
del contenedor y haré eco de un nuevo mensaje. Este mensaje significa que estoy modificado y emitiré
la salida estándar, el archivo que montamos
dentro del contenedor. Entonces index.html. Saldré del contenedor
usando el comando exit, y ahora leeré el archivo
desde los puntos de montaje,
así desde el contenido web. Y podemos ver que ambos valores
están montados y yo modifiqué. Si utilizo el comando curl, podemos ver la misma salida. Ahora, detendré el
contenedor y
retiraré el contenedor usando
el comando pod man RM. Y lo recrearé sólo para ver la naturaleza del almacenamiento
persistente. Así que vamos a probar esto
ejecutando un comando curl en el host local en el puerto 8082. Como puede ver, el mensaje se
ha mantenido sin cambios. Eso se debe a que el almacenamiento de este contenedor en particular para esa ruta en particular se
lleva a cabo en el host local. Por lo que a pesar de que el
contenedor fue destruido, lo que estaba escrito dentro del directorio de contenido web
ha permanecido persistente. Muchas gracias
y nos vemos en el siguiente módulo
donde estaremos hablando de la vinculación de puertos.
7. Encuadernación de puertos: Hola y bienvenidos de nuevo. En el módulo anterior,
hablamos del almacenamiento efímero
y almacenamiento persistente, y aprendimos a dar a los
contenedores almacenamiento persistente, que no perdamos nada
cuando se destruyen. Dentro de este módulo,
estaremos
hablando de la vinculación de puertos
y de cómo enlazar los puertos desde el host local a los puntos de contenedores para hacerlos accesibles también desde el
exterior. Entonces vamos a llegar a ello. ¿ Qué es la unión de puertos de contenedores? Bueno, conectarse a un
contenedor significa que los clientes deben conectar
dos puertos del host que enviarán tráfico a los puertos deportivos de contenedores o a los
contenedores expuestos. Podemos mapear puertos del host a aquellos accesibles desde el
interior del contenedor, para hacer que los contenedores sean accesibles
desde el exterior también, no solo desde el host local. Ten en cuenta que si
quieres hacerlos accesibles también desde el
exterior, también tenemos que revisar las reglas del
firewall para asegurarnos de que se permita cualquier tráfico en
esos puertos. Entonces, con esto en
mente, echemos
un vistazo a algunos comandos esenciales con el fin hacer enlace de puerto de contenedor. Ahora para enlazar un puerto desde el host local
al contenedor, estaremos usando
el
comando pod man run con la opción menos p. Nuestro primer ejemplo crea un
servidor web HTTPD en contenedores llamado aplicación web, donde todo el tráfico del
puerto 8082 del host se pasa al puerto
8080 del contenedor. Ten en cuenta que el contenedor debe aceptar tráfico en ese puerto. Eso significa que tiene que ser expuesto. Y podemos ver que
al usar el comando pot man in spec en
la imagen del contenedor, al usar el
puerto portmanteau menos un comando, podemos ver todos los mapeos de puertos. Y al usar el comando pod man port especificando el nombre del
contenedor, podemos ver el mapeo de puertos
para un contenedor de nombre. No olvides
crear una regla de
firewall persistente usando el comando firewall CMD para
permitir el tráfico en ese puerto. Entonces ahora que se tiene una buena visión
teórica de lo es el mapeo de
puertos y su función dentro de
Container Management. Vamos a entrar en la demo. En primer lugar, estaré usando
el
comando de imágenes de Pokemon para mostrar que tengo una imagen de
contenedor HTTPD guardada localmente presente. Entonces usaré el comando port
man run para crear un contenedor llamado web app running
and detached mode, que reenviará todo el
tráfico desde el puerto 8082 desde el lado del host al puerto
8080 en el lado del contenedor. Como podemos ver a través del
pod man ps menos un comando, el contenedor está en marcha. Ahora usaré un comando exec de
hombre orgulloso con la opción menos i t con el
fin de obtener una terminal activa
dentro del contenedor. Aquí, haré eco del
mensaje hola mundo, y redirigiré la
salida al archivo slash var slash www slash HTML slash
index.html. Después saldré del contenedor
con el comando de salida. Ahora usaremos
el port man port menos un comando para ver
todos los mapeos de puertos. Y podemos
ver claramente el tráfico desde el host local en el puerto 8082 es redirigido al puerto
8080 del contenedor. También podemos ver que
mediante el uso del comando port man port especificando
el nombre web app. Ahora probemos esto
usando un comando curl, y llamaremos al host
local en el puerto 8082. Y podemos ver claramente
el mensaje de helloworld. Por lo que funcionó a la perfección. Ahora con el fin de hacer
accesible el tráfico desde fuera
del host local, también
agregaré una regla de
firewall
con el fin de permitir el
tráfico en el puerto 8082. Me está pidiendo privilegios
administrativos. los daré y
ha sido exitoso. Así que ahora nuestro servidor web
Apache en contenedores es accesible
tanto desde el host local fuera del
host local en el puerto 8082. También podemos ver
el enlace de puerto, incluso si ejecutamos un Pokemon
ps menos un comando, podemos ver claramente aquí que tráfico desde el host local se redirige al puerto 8080 slash
TCP en el lado del contenedor. Ahora como sé que
debo hacer directamente al puerto 8080 en el lado del
contenedor, aquí es donde entra en juego Pokemon
inspeccionar. Podemos inspeccionar la imagen del contenedor localmente
seguro y estaremos
mirando los puertos expuestos. Los puertos expuestos son en realidad lo que es accesible
al contenedor. ¿ De dónde permite
el tráfico? Entonces así
supe que el puerto 8080 era donde debía redirigir
el tráfico desde el puerto 8082. Ahora todo lo que queda es
limpiar después de nosotros mismos, nuestro stop the container web app
con el comando man stop. Después lo eliminaré con
el comando Pokemon RM. Y por último,
eliminaré la imagen con el comando Pokemon RMI. Muchas gracias
y nos vemos en el siguiente módulo
donde estaremos hablando de
Container Networking.
8. Redes de contenedores: Hola y bienvenidos de nuevo. En el módulo anterior,
hablamos un poco sobre el mapeo de puertos y vinculación de un puerto host a un puerto de
contenedores expuestos. Ahora iremos más a fondo
con Container Networking. Veremos la
capacidad del pobre para crear redes y resolver nombres
dentro de esas redes. Entonces, sin más preámbulos,
comencemos. Ahora echemos un vistazo a algunos
inicios esenciales
para Container Networking. El comando importante aquí es ambos hombres red con la red
cartero crear comando. Podemos hacer una red especificando su nombre de puerta de enlace y subred. La red de hombre pobre inspecciona
especificando un nombre de red, podemos obtener detalles
sobre una red existente. Deportamos man network crea especificando un nombre de contenedor. Podemos conectar el contenedor
a una red existente. Deportamos hombre red removida. Podemos eliminar una red
existente y deportamos comando man run. Podemos agregar la opción de red
menos menos y conectar el contenedor a
una red en el momento de la creación. Entonces ahora que tenemos
una buena visión general de comandos
importantes
relacionados con Container Networking, entremos a la demo. Ahora para iniciar esta demo,
usaré el comando port man
images para mostrarte mi imagen de contenedor
HTTPD guardada localmente. Ahora usaré el comando
search del pobre hombre para buscar una octava imagen de Red Hat Enterprise
Linux. Yo lo he copiado y
ahora estaré usando los comandos post man Paul
para descargarlo localmente. Entonces esperemos un poco a
que termine la descarga. Ahora estaré usando el
comando
poor man network create para crear una
red para mis contenedores. La subred se
especificará a través la opción menos menos subred, y será 192168
punto un punto 0 barra 24. Y la puerta de enlace se
especificará a través de la opción minus-menos
gateway, y será 192168
punto uno, punto uno. El nombre de mi red
será mi red. Ahora que la red ha
sido creada con éxito, podemos pasar a crear
mis servicios en contenedores. En primer lugar, usaré el comando Pac-Man
run para crear un contenedor llamado cliente
corriendo en modo separado, conectado a mi red a través la opción de red minus-menos
con almacenamiento persistente. Y la imagen base detrás de
este contenedor será la imagen base ocho de Red Hat Enterprise
Linux. Como se puede ver, el
contenedor se ha creado
con éxito y voy a enumerar o ejecutar contenedores con el Pokemon ps menos una opción, y está en marcha. Después crearé mi segundo servicio
contenerizado usando el comando Pokemon run. Este será un
servidor web Apache llamado servidor web, corriendo en modo separado, conectado también a mi red. Utilizará la imagen register.access.com
http D24 L7, cual tengo almacenada localmente. Este segundo contenedor
también fue creado con éxito. Podemos verlos tanto en marcha como
en funcionamiento. Ahora, usaré el comando pod
man network ls para ver todas nuestras redes
disponibles. Y aquí podemos
ver claramente mi red. Y para obtener
información más detallada de mi red, utilizaré el
comando de inspección de
red cartero especificando el
nombre de mi red. Y podemos ver aquí tanto
la subred como la puerta de enlace. Entonces ahora que tenemos
una buena visión general
tanto de nuestra red
como de nuestros contenedores, veamos si todo funciona. Utilizaré el comando port
man exec con la opción menos IT para abrir un terminal dentro del contenedor del servidor
web. Aquí usaré el comando
echo y redirigiré su salida
al archivo slash var slash www slash HTML slash
index.html. Con el fin de crear un mensaje
personalizado. Más específicamente, hola,
saldré de este contenedor, y ahora
entraré otro contenedor,
el contenedor cliente, nuevamente con el pot man exento
menos opción IT para conseguir una terminal dentro
del cliente que está ejecutando Red Hat
Enterprise Linux ocho. Aquí usaré el comando
curl para rizar el servidor web
en el puerto 8080, que fue el expuesto. Y podemos ver claramente que
el mensaje es como se esperaba. Entonces felicidades,
creamos dos contenedores. Uno corriendo en un servidor web
Apache contenerizado ejecutando Red Hat
Enterprise Linux ocho, creamos una red entre los dos y podemos ver que se
comunican y también
tienen nombre de resolución del servidor. Muchas gracias
y nos vemos en el siguiente y último módulo.
9. Crear imágenes: Bienvenido al
módulo final de nuestro curso. Aquí aprenderemos a construir imágenes de
contenedores a partir de
archivos para ayudarnos a crear nuestras propias imágenes personalizadas y personalizarlas
según nuestras propias necesidades. Entonces, sin más preámbulos,
comencemos. En primer lugar,
hablaremos de los pasos para construir una imagen de contenedor. Para que Birdman pueda construir imágenes automáticamente leyendo los
pasos de un archivo Docker, podrías preguntarte ¿qué
es un archivo Docker? Un archivo Docker es un
documento de texto que contiene todos los comandos que
un usuario podría llamar para ensamblar una imagen. Ahora, los archivos Docker también
facilitan tanto creación de nuevas imágenes de contenedor
basadas en una existente, como la ampliación de unancho de imagen de
contenedor
Enterprise Linuxclasificado ancho de imagen de
contenedor
Enterprise Linux y la funcionalidad HTTPD. Así que sigamos adelante
y veamos cómo
realmente creamos una imagen de
contenedor. En primer lugar, crear un directorio de
trabajo que contenga todos los archivos necesarios para construir la imagen del
contenedor. Después creamos un archivo Docker. Un archivo Docker es solo un documento de
texto que contiene todos los comandos que
un usuario podría llamar para ensamblar una imagen. Y por último, utilizamos depósitos
man build command. Utilizamos el
comando Poll Man build para crear
la imagen basada en el archivo docker y
otros recursos dentro del directorio de trabajo. Así que ahora echemos
un vistazo a un Dockerfile de muestra y
veamos nuestras posibilidades. Ahora aquí tenemos un
simple Dockerfile. El campo from indica qué imagen de Bates
se va a extender. El campo etiqueta indica qué etiqueta tendrá esta imagen de
contenedor. El Rosenfield ejecuta comandos
dentro de la imagen base, el campo expuesto expone
puertos desde el lado del contenedor. El campo EM establece variables
ambientales
dentro del contenedor. El campo de copia copia
del directorio de trabajo
al contenedor. El campo usuario establece el usuario
bajo el cual se
ejecuta el contenedor ya que el campo add es
similar al campo copy. El campo de punto de entrada dice el comando con el que comienza el
contenedor. Y podemos crear el
contenedor mediante el análisis este archivo Docker con el comando
pod men build. Entonces pongamos todo
este conocimiento en práctica
pasando a la demo. Ahora iniciaré
esta demo enumerando el contenido de mi directorio de
trabajo. Tengo un
archivo index.html que contiene el
mensaje hello world, y un archivo Docker pre-hecho
que armé previamente. Echémosle un vistazo. Por lo que extiende la imagen siete de Red Hat
Enterprise Linux, el usuario bajo el cual el
contenedor se está ejecutando como root. Se ejecuta un yum install
menos y HTTPD. Para instalar el servicio HTTPD, expone el puerto 80 y
copia el archivo index.html
del directorio de trabajo en
todo el contenedor slash var slash slash HTML
slash index.html path. Ahora, usaré
el
comando port man build para crear mi imagen. Estoy especificando la opción
menos d para etiqueta, que le dará a madre mi imagen, el nombre de mi imagen HTTPD. Ahora, usaré el comando Pac-Man images para ver si
la imagen fue creada. Y lo podemos ver aquí, localhost slash mi imagen HTTPD. Ahora vamos a darle una prueba. Utilizaré el comando pot
man run especificando que el contenedor
se ejecutará en modo desapegado. El nombre de mi Contenedor
será Web App. Estaré reenviando el puerto 8082 al puerto 80
del contenedor, y estaré usando
mi propia imagen creada. El contenedor
parece estar en marcha. El reenvío de puertos
parece funcionar. Así que vamos a hacer un rizo en el host
local en el puerto 8082, y podemos ver claramente
el mensaje hello world. Por lo que el archivo se
copió con éxito. Ingresemos al contenedor
con las opciones exec de Pac-Man menos i t para abrir una terminal
dentro del contenedor. Como se puede ver, el terminal
se abrió como root. Entonces se
usa el usuario que lo
especifico en el archivo Docker y el archivo que copiamos
del host local al contenedor está presente. Por lo que el archivo Docker
hizo lo prometido. Contamos con un sistema
operativo en contenedores Red
Hat Enterprise Linux seven que se ejecuta
en el servicio HTTPD. Al terminar esta demo, también
hemos terminado nuestro curso acelerado sobre administración de
contenedores. Agradezco su asistencia y tal vez nos veamos en
otros cursos futuros. Muchas gracias.