Tutoriales y Manuales
Entradas Mensuales
-
▼
2024
(Total:
1024
)
- ► septiembre (Total: 50 )
-
▼
enero
(Total:
124
)
- En Alemania buscan un administrador para MS-DOS y ...
- Meta presenta Code Llama 70B, un modelo open sourc...
- Opera prepara un navegador para iOS basado en inte...
- España participa en una operación mundial para des...
- Los usos curiosos que todavía damos a los disquete...
- Microsoft Edge «roba» datos personales de Chrome s...
- Elon Musk anuncia el primer humano con sus chips c...
- Amazon cancela la compra de iRobot Roomba
- Las imágenes de Taylor Swift que se hicieron viral...
- CPU funcional de 16 bits construida y ejecutada en...
- GoAccess: Analizador de Registros Web en Tiempo Real
- Buscador de Arc hace uso de la IA para crear una w...
- Los ‘deepfakes’ porno de Taylor Swift inundan X (T...
- OpenWrt tiene casi listas las especificaciones de ...
- Spotify acusa a Apple de extorsión por la nueva ta...
- El MIT anuncia una revolucionaria técnica de impre...
- AMD publica un driver para Linux que soporta sus d...
- Una vulnerabilidad en GRUB2 permitía omitir la ver...
- Explotación activa de vulnerabilidad en Atlassian ...
- Vulnerabilidad crítica en GoAnywhere
- Drainer-as-a-Service (DaaS) ¿qué son?
- Congreso Ciberseguridad Hackron XI - Tenerife 2024
- Guía Procesadores Intel Core i3, Core i5, Core i7 ...
- Microsoft despide a 1.900 empleados de Activision ...
- ¿Qué es una botnet? Conoce el control remoto de lo...
- Un nuevo bug en los teléfonos Google Pixel limita ...
- GrapheneOS: alternativa libre a Android
- Sam Altman estaría negociando con TSMC e inversion...
- La IA y la criptominería dispara el consumo de ene...
- Apple gana su primera batalla legal contra NSO Gro...
- Los horrores que viven los moderadores de Meta: “N...
- Ya disponible Parrot 6: la distribución de moda es...
- El delincuente que robó 700 mil € al Ayuntamiento ...
- Microsoft Copilot Pro: qué es, diferencias con la ...
- Google Chrome estrena funciones impulsadas por la ...
- HP asegura que bloquea los cartuchos de impresora ...
- Esta modelo gana 30K dólares al mes escuchando y h...
- Linux Lite o cómo devolver a la vida cualquier PC,...
- El FBI y CISA alertan sobre los posibles riesgos d...
- Función de seguridad "Aislamiento del núcleo" (Cor...
- La infraestructura de PyTorch fue comprometida
- Backups y Snapshots: diferencias y similitudes
- Así usan el reconocimiento facial con rostros por ...
- FraudGPT, BadGPT, WormGPT son dos modelos de ia qu...
- Francia multa con 32 millones a Amazon por el cont...
- La madre de todas las filtraciones: 12TB y 26 mil ...
- OpenWrt trabaja en un router inalámbrico
- Gestión gráfica de contenedores Docker con Portainer
- DDoSia Client: la herramienta del grupo pro-ruso N...
- La British Library, la biblioteca más completa del...
- Escape Room gratuito centrado en ciberseguridad: r...
- Vulnerabilidad en Microsoft Outlook permite extrac...
- Un chatbot de DPD insulta a un cliente
- Fallece David L. Mills: El legado del creador del ...
- Cryptomator: cifrado datos en la nube de Dropbox, ...
- Microsoft sufre un robo de correos corporativos po...
- Publican recopilación de 100 millones de contraseñ...
- Los resultados de un estudio sobre los datos que r...
- Desarrollan una batería nuclear capaz de durar 50 ...
- WebWormhole permite enviar archivos grandes sin in...
- Google Chrome soluciona el enésimo zero-day que es...
- Millones de GPU de Apple, AMD y Qualcomm están afe...
- Seagate presenta discos duros de más de 30TB
- Google Maps encuentra la solución para el mayor pr...
- Las profundidades de la privacidad digital: I2P, L...
- En españa un joven de 17 años es condenado por hac...
- En solo 5 minutos un desarrollador ha aumentado un...
- OpenAI prohíbe a políticos usar su inteligencia ar...
- Ubisoft sobre las suscripciones: "Los jugadores es...
- ¿Cuánto dinero perdería una empresa o un país en u...
- Desaparecen las licencias perpetuas de VMWare y se...
- Apple supera por primera vez a Samsung en ventas g...
- OpenAI autoriza el uso de sus sistemas de IA para ...
- Elon Musk muestra al humanoide de Tesla doblando l...
- Vulnerabilidad crítica en dispositivos de Juniper
- Una de las grandes mejoras del Galaxy S24 requiere...
- Explotación activa de vulnerabilidad Microsoft Sha...
- Google permitirá a los usuarios seleccionar qué se...
- Una empresa de etiquetado de IA contrata a trabaja...
- Una fuga de datos masiva afectaría a todos los ciu...
- Los ataques de ransomware provocan una muerte al m...
- El CEO de Twitch afirma que la plataforma de strea...
- NymConnect: App para mejorar la privacidad en Tele...
- Los medios Españoles empiezan a cobrar a los usuar...
- Descifrador gratuito para ransomware Black Basta y...
- unbound: servidor dns caché rápido y seguro con li...
- Piratas informáticos turcos hackean servidores MS ...
- China afirma haber crackeado el cifrado de Apple A...
- Un centro de salud deberá pagar una multa de más d...
- La nueva consola portátil: MSI Claw
- Mega 95, la consola portátil de Hyperkin que sopor...
- Intel presenta los Raptor Lake Refresh Mobile, nue...
- El Samsung Galaxy S24 se podrá usar como una webca...
- El Aeropuerto Internacional de Beirut, víctima de ...
- Carrefour sufre un ciberataque en Servicios Financ...
- Ransomware BlackHunt afecta a la compañía de telec...
- Alpine Linux: una Distro Linux pequeña, simple y s...
- Cómo configurar el entorno de red en Debian desde ...
- China lanzó un satélite que incluye un kernel Linu...
- El plan de Estados Unidos de regresar a la Luna 50...
-
►
2023
(Total:
710
)
- ► septiembre (Total: 65 )
-
►
2022
(Total:
967
)
- ► septiembre (Total: 72 )
-
►
2021
(Total:
730
)
- ► septiembre (Total: 56 )
-
►
2020
(Total:
212
)
- ► septiembre (Total: 21 )
-
►
2019
(Total:
102
)
- ► septiembre (Total: 14 )
-
►
2017
(Total:
231
)
- ► septiembre (Total: 16 )
-
►
2016
(Total:
266
)
- ► septiembre (Total: 38 )
-
►
2015
(Total:
445
)
- ► septiembre (Total: 47 )
-
►
2014
(Total:
185
)
- ► septiembre (Total: 18 )
-
►
2013
(Total:
100
)
- ► septiembre (Total: 3 )
-
►
2011
(Total:
7
)
- ► septiembre (Total: 1 )
Blogroll
Etiquetas
Entradas populares
-
Después de ver qué es una vCPU y la diferencia entre núcleos (cores) e hilos en los procesadores, pasamos a explicar toda la nomenclatura d...
-
Pese a que Gemini ofrece multitudes de opciones, recientemente, se ha dado a conocer una situación fuera de lo común. Hace unos días, un es...
-
Si estos días vas a cualquiera de las plataformas de venta que hay en internet y buscas un USB probablemente te encuentras con no pocos con ...
Docker: comandos básicos de utilización, ejemplos de configuración
Docker es una herramienta que permite a los desarrolladores empaquetar sus aplicaciones y todas sus dependencias en un único contenedor. Este contenedor puede transportarse y ejecutarse fácilmente en cualquier máquina que tenga Docker instalado, sin preocuparse de las diferencias en el entorno. Es como una forma estandarizada de empaquetar y ejecutar software.
¿Qué es un contenedor?
Un container es como un pequeño paquete que contiene todo lo que un programa necesita para ejecutarse, lo que facilita su traslado y ejecución en distintos ordenadores sin causar ningún problema.
Lo mejor es que este miniordenador (contenedor) es como un superhéroe con capa. Puede funcionar en cualquier ordenador, por muy diferente que sea, porque trae consigo su propio entorno especial. Es una forma limpia y ordenada de mantener el software organizado y asegurarse de que funciona de la misma manera vaya donde vaya.
- Consistencia: Docker se asegura de que el software funcione de la misma manera en tu ordenador, en el ordenador de tu amigo o en cualquier ordenador. Mantiene la coherencia.
- Portabilidad: Puedes empaquetar tu software y sus amigos en un contenedor Docker, y puede viajar a cualquier parte. Es como meter tu juego y todas sus reglas en una maleta y jugarlo en casa de un amigo.
- Aislamiento: Los contenedores Docker son como pequeñas burbujas. Lo que ocurre dentro de la burbuja se queda dentro de la burbuja. Esto significa que un programa en un contenedor no se meterá con otro programa fuera de su contenedor.
- Eficiencia: Docker ayuda a ahorrar recursos informáticos. En lugar de tener un ordenador entero sólo para un programa, puedes tener muchos contenedores ejecutándose en el mismo ordenador sin que se estorben unos a otros.
- Rapidez: Docker hace que sea rápido y fácil iniciar, detener y compartir software. Es como encender y apagar una videoconsola: rápido y sencillo.
Docker Image
docker run nginx
docker ps
docker ps -a
docker stop silly_sammet
docker rm silly_sammet
docker images
docker rmi nginx
docker pull nginx
docker run ubuntu sleep 5
docker exec distracted_mcclintock cat /etc/hosts
Ejecuta un comando dentro de un contenedor en ejecución llamado "distracted_mcclintock". Es como echar un vistazo dentro del libro de recetas para ver una página específica.
docker run -d kodekloud/simple-webap
docker attach a043d
Algunos conceptos de Docker
docker run nginx:latest
docker run -i -t ubuntu
docker run -p 8080:80 nginx
docker run -v /su/carpeta/local:/carpeta/contenedor nginx
Inspeccionar contenedor
docker inspect container_name
docker logs container_name
Variables de entorno
import osapp_color = os.getenv("APP_COLOR", "default_color")print(f"The app color is {app_color}")
Ejecutando el script normalmente: python app.py
Ejecutando con un color específico: export APP_COLOR=azul; python app.py
Uso de variables de entorno en Docker
Los contenedores Docker también pueden usar variables de entorno. Es como dar instrucciones al programa dentro del contenedor.
Código de ejemplo:
docker run -e APP_COLOR=verde simple-webapp-color
docker inspect blissful_hopper
Dockerfile
# Use the Ubuntu base imageFROM Ubuntu# Update apt repositoryRUN apt-get update# Install dependencies using aptRUN apt-get install -y python# Install Python dependencies using pipRUN pip install flaskRUN pip install flask-mysql# Copy source code to /opt folderCOPY . /opt/source-code# Set the working directoryWORKDIR /opt/source-code# Specify entry point to run the web serverENTRYPOINT ["flask", "run"]
docker build -t tu-nombre-de-imagen .
- Casi cualquier cosa. Aplicaciones, servicios, bases de datos, sitios web, básicamente cualquier software puede ser contenedorizado.
- Es como poner tu software en una caja para que pueda ejecutarse en cualquier lugar sin causar problemas.
Docker CMD vs ENTRYPOINT
CMD en Docker:
FROM alpineCMD ["sleep", "5"]
ENTRYPOINT en Docker:
FROM alpineENTRYPOINT ["sleep"]CMD ["5"]
Redes en Docker
Redes por defecto
docker run ubuntu --network=host
Redes definidas por el usuario
docker network create --driver=bridge --subnet=182.18.0.0/16 custom-isolated-network
Listado de Redes:
docker network ls
Inspeccionando una Red:
docker network inspect blissful_hopper
DNS incorporado
mysql.connect(mysql)
Almacenamiento Docker
Sistema de archivos en Docker
# DockerfileFROM UbuntuRUN apt-get update && apt-get install -y pythonRUN pip install flask flask-mysqlCOPY . /opt/código-fuenteWORKDIR /opt/código-fuenteENTRYPOINT ["flask", "run"]
Capas de imagen
# Construir la imagen Dockerdocker build -t mmumshad/my-custom-app .
Capa de contenedor
# Ejecutar el contenedor Dockerdocker run mmumshad/mi-aplicacion-personalizada
Volúmenes
# Crear un volumen Dockerdocker volume create volumen_datos# Usar el volumen en un contenedordocker run -v volumen_datos:/var/mysql mysql
# Montar un directorio del host a un directorio del contenedor
docker run -v /ruta/en/host:/var/mysql/mysql -d mysql
docker run --mount type=bind,source=/mysql,target=/var/mysql mysql
Docker Compose
Conceptos básicos de Docker Compose
docker run mmumshad/simple-webappdocker run mongodbdocker run redis:alpinedocker run ansible
Archivo Docker Compose (docker-compose.yml)
# docker-compose.ymlversion: '3'services:web:image: 'mmumshad/simple-webapp'database:image: 'mongodb'messaging:image: 'redis:alpine'orchestration:image: 'ansible'
docker-compose up
docker-compose build
Ejecutar contenedores enlazados
docker run -d --name redis redisdocker run --name voting-app -p 5000:80 --link redis:redis voting-appdocker run --name result-app -p 5001:80 --link db:db result-appdocker run -d --name worker --link db:db --link redis:redis worker
En Docker-Compose
# docker-compose.yml
version: '3'
services:
vote:
image: 'voting-app'
ports:
- '5000:80'
links:
- 'redis:redis'
result:
image: 'result-app'
ports:
- '5001:80'
links:
- 'db:db'
worker:
image: 'worker'
links:
- 'db:db'
- 'redis:redis'
db:
image: 'db'
redis:
image: 'redis'
Docker Compose te permite describir toda su pila de aplicaciones en un único archivo, lo que facilita la gestión, ejecución y conexión de diferentes servicios. Es como si escribieras todas las tareas de tu evento en un plan, y luego Docker Compose se encarga de la configuración por ti.
Docker Registry
docker pull nginx
docker login registro-privado.io
docker run private-registry.io/apps/internal-app
docker run -d -p 5000:5000 --name registry registry:2```{% endraw %}- Tag your image for the private registry:{% raw %}
docker image tag my-image localhost:5000/my-image
docker push localhost:5000/my-image
Extracción desde un registro privado remoto:
También puede extraer imágenes de un registro privado remoto utilizando su dirección IP o dominio.
Ejemplo:
docker pull 192.168.56.100:5000/mi-imagen
Un Registro Docker es como un espacio de almacenamiento donde la gente guarda y comparte sus imágenes Docker. Puedes utilizar registros públicos para imágenes ampliamente utilizadas o configurar tu propio registro privado para tus necesidades específicas. Es como una biblioteca especial para compartir y almacenar planos de software (imágenes).
Docker Engine
Docker Daemon
API REST
Docker CLI (Interfaz de Línea de Comandos):
IP del Host Docker
docker -H=remote-docker-engine:2375 run nginx
Esto le dice a su CLI Docker local para comunicarse con un motor Docker remoto.
Ejecutar contenedores con restricciones
Docker te permite establecer restricciones de recursos para los contenedores, como límites de CPU y memoria.
Ejemplo:
docker run --cpus=0.5 ubuntu
docker run --memory=100m ubuntu
Estos comandos limitan el contenedor a utilizar sólo medio núcleo de CPU y 100 megabytes de memoria.
Espacio de nombres PID
El espacio de nombres PID te permite crear un área separada para procesos (como programas o tareas) en un contenedor, para que tengan su propio conjunto de "números de ticket" (Process IDs) que no choquen con procesos fuera del contenedor.
Código de ejemplo:
Ejecución de un contenedor con espacio de nombres PID de host:
Esto significa que el contenedor comparte los mismos "números de ticket" que el host.
docker run --pid=host ubuntu
Ejecutar un contenedor con espacio de nombres PID aislado
Esto significa que el contenedor tiene su propio conjunto de "números de ticket" separados del host.
docker run --pid=container ubuntu
En el primer ejemplo, el contenedor interactúa con los procesos como si estuviera en el mismo espacio que el host. En el segundo ejemplo, el contenedor tiene su propio espacio aislado para los procesos. Es como tener un área privada en un gran evento donde tu grupo tiene su propio conjunto de números de tickets, permitiéndote hacer cosas independientemente del resto del evento.
Conceptos de contenedorización
Espacio de nombres de ID de proceso:
Los contenedores tienen su propio espacio aislado de ID de proceso (PID), por lo que los procesos dentro de un contenedor están separados de los que están fuera.
Ejemplo:
docker run --pid=host ubuntu
- Este comando ejecuta un contenedor con el espacio de nombres PID del host, por lo que comparte los mismos procesos.
Espacio de nombres de red:
Los contenedores también tienen su propio espacio de nombres de red aislado, lo que significa que pueden tener sus propias configuraciones de red.
Ejemplo:
docker run --net=host nginx
- Este comando ejecuta un contenedor con el espacio de nombres de red del host.
Espacio de nombres de tiempo compartido Unix:
Este espacio de nombres permite a los contenedores tener su propia visión del tiempo, separada del host y de otros contenedores.
Ejemplo:
docker run --uts=host ubuntu
- Este comando ejecuta un contenedor con el espacio de nombres Unix de tiempo compartido del host.
Espacio de nombres de montaje entre procesos:
El espacio de nombres de montaje aísla el sistema de archivos, permitiendo a los contenedores tener su propia vista del sistema de archivos.
Ejemplo:
docker run --mount=type=bind,source=/host/carpeta,target=/contenedor/carpeta ubuntu
- Este comando monta una carpeta del host en el contenedor.
Por supuesto. Simplifiquemos el concepto de cgroups:
Cgroups
Los cgroups (abreviatura de grupos de control) ayudan a gestionar y distribuir los recursos del sistema, como CPU y memoria, entre diferentes procesos o contenedores. Aseguran que ningún proceso o contenedor utilice todos los recursos disponibles, manteniendo todo equilibrado.
Código de ejemplo:
Estableciendo el Límite de CPU con Cgroups:
Esto es como decir que cada invitado a la fiesta sólo puede comer una cierta cantidad de comida.
docker run --cpus=0.5 ubuntu
Esto limita el contenedor a utilizar sólo la mitad de un núcleo de CPU.
Establecer límite de memoria con Cgroups:
Esto es como decir que cada invitado sólo puede ocupar una cierta cantidad de espacio en la pista de baile.
docker run --memory=100m ubuntu
Esto limita el contenedor a utilizar sólo 100 megabytes de memoria.
El concepto de Contenedores Linux y Contenedores Windows
Contenedores Linux (por defecto):
Los contenedores Linux son una forma de empaquetar y ejecutar software junto con todo lo que necesita, y son más cómodos en ordenadores que ejecutan Linux.
Contenedores Windows:
Los contenedores Windows son una forma de empaquetar y ejecutar software, al igual que los contenedores Linux, pero están diseñados para funcionar en ordenadores que ejecutan Windows.
Conceptos básicos de los contenedores Windows:
Tipos de contenedores:
- Los contenedores de Windows son de dos tipos principales: Windows Server Core y Nano Server.
- Windows Server Core: Piense en él como un contenedor más completo, adecuado para una gran variedad de aplicaciones.
- Nano Server: Piense en él como un contenedor ligero, diseñado para casos de uso específicos y minimalistas.
Imágenes base:
Las imágenes base son como el lienzo en blanco con el que empiezas al crear un contenedor.
Ejemplo:
docker pull mcr.microsoft.com/windows/servercore:ltsc2019
- Este comando extrae la imagen base de Windows Server Core.
- Ejemplo:
docker pull mcr.microsoft.com/windows/nanoserver:ltsc2019
- Este comando extrae la imagen base de Nano Server.
Entornos compatibles
Windows Los contenedores pueden ejecutarse en versiones específicas del sistema operativo Windows.
Ejemplo:
Los contenedores de Windows se pueden ejecutar en Windows Server 2016.
- Ejemplo:
- Puedes ejecutar contenedores Windows en Windows 10 Professional y Enterprise, con Hyper-V Isolated Containers para un aislamiento adicional.
Container orchestration
Una orquestación de contenedores es una forma de gestionar y coordinar múltiples contenedores, asegurándose de que funcionan juntos a la perfección para ejecutar aplicaciones, igual que un gestor superinteligente se asegura de que todos los robots trabajan juntos para construir una torre perfecta.
¿Por qué orquestación?
- Muchas tareas, un gestor: Imagina que tienes muchos robots (contenedores) haciendo diferentes trabajos. La orquestación es como tener un gestor superinteligente (orquestador) que le dice a cada robot lo que tiene que hacer y se asegura de que todo se desarrolle sin problemas.
- Coherencia: La orquestación garantiza que todas las tareas se realicen siempre de la misma manera. Es como tener un conjunto de instrucciones que los robots deben seguir para garantizar la coherencia de sus acciones.
- Eficacia: La orquestación ayuda a optimizar las tareas, asegurándose de que los recursos (como el tiempo y los materiales) se utilizan de forma eficiente. Es como un gestor que se asegura de que todos los robots trabajan juntos sin malgastar energía.
- Ampliación: Cuando necesites hacer más trabajo, la orquestación puede crear fácilmente robots adicionales (contenedores). Es como convocar mágicamente a más robots para que ayuden cuando hay mucho que hacer.
- Fiabilidad: La orquestación garantiza que las tareas se completen de forma fiable, incluso si falla un robot (contenedor). Es como tener un plan de reserva para asegurarse de que el trabajo se realiza pase lo que pase.
- Coordinación: La orquestación coordina las tareas, asegurándose de que los robots trabajan juntos a la perfección. Es como si el director se asegurara de que cada robot conoce su función y colabora para lograr el éxito.
Código de Orquestación de Contenedores
# Crear un servicio Docker con 100 réplicas (instancias) de una aplicación Node.jsdocker service create --replicas 100 --name my-nodejs-app nodejs
- docker service create: Este comando le dice a Docker que cree un servicio, que es un grupo de contenedores en ejecución.
- --replicas 100: Esta bandera especifica que desea 100 instancias (réplicas) de su servicio.
- --name my-nodejs-app: Esta bandera le da un nombre a tu servicio, en este caso, "mi-nodejs-app".
- nodejs: Esta es la imagen o receta para tu aplicación Node.js. Es como el plano para hornear magdalenas.
Docker Swarm
# Iniciar Docker Swarm en Swarm Managerdocker swarm init
# Unirse a un trabajador de nodo al Docker Swarmdocker swarm join --token <token> <Swarm Manager IP>
Servicio Docker Swarm
# Crear un servicio Docker (un grupo de contenedores) con 3 réplicas (instancias)docker service create --replicas 3 --network frontend --name my-web-server my-web-image
- --replicas 3: esta bandera le indica a Docker que cree tres instancias (réplicas) de su servicio.
- --network frontend: esta bandera especifica que su servicio pertenece a una red llamada "frontend".
- --name mi-servidor-web: Esto le da un nombre a su servicio, en este caso, "mi-servidor-web".
- my-web-image: Esta es la imagen o plano de su servidor web. Es como la receta para construir las torres.
1 comentarios :
Gran trabajo de resumen y aclaración de conceptos.
Mi enhorabuena.
Publicar un comentario
Los comentarios pueden ser revisados en cualquier momento por los moderadores.
Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.
Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.