Optimización Avanzada en Docker

1

La importancia de Aprender Docker

2

Desbloqueando el Poder de Docker

3

Construcción de Imágenes Multi-stage

4

Escaneo de imágenes en Docker

5

Optimización de Imágenes de docker con Distroless

6

Compilación Multiplataforma

7

Gestión de Caché y Eficiencia en Builds

8

Reducción de Dependencias y Minimización de Tamaño

9

Optimización de Build Context y Reducción de Transferencias

10

Explorando Docker Hub

Buenas Prácticas en Docker

11

Uso Eficiente de Capas en Imágenes Docker

12

Uso de .dockerignore para Optimización

13

Eliminación de Archivos Temporales y Residuos en Docker

14

Agrega usuarios a tu imagen de docker

15

Mejores Prácticas para Construcción de Imágenes

Instalación y Configuración en Entornos Multiplataforma

16

Despliegue de Docker en Azure y Entornos Locales

17

Publicar tu imagen a Container Apps de Azure

Redes Avanzadas y Balanceo de Carga

18

Modelos de Red en Docker

19

Exposición y Publicación de Puertos en Docker

20

Balanceo de Carga con Docker

Automatización de CI/CD

21

Ejecución de Scripts Multi-line en Docker

22

Automatización de CI/CD con Docker

23

Estrategias Avanzadas de CI/CD en Docker

24

Publicando mi imagen de docker a la nube con CI/CD

Orquestación

25

Retomando Docker Compose

26

Secciones en un archivo Docker Compose

27

Agregando volúmenes con Docker Compose

28

Secuencia de apagado

29

Introducción a Docker Swarm

30

Replicación de Stacks con Docker Compose

31

De Docker a la nube

32

Orquestadores de contenedores

33

Costos de Docker

Develop

34

Introducción a los devcontainers

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Agrega usuarios a tu imagen de docker

14/34
Recursos

¿Cómo asegurar tus imágenes de Docker creando usuarios no-root?

Cuando trabajamos con Docker, una de las revelaciones más impactantes para los desarrolladores es descubrir que las imágenes, por defecto, se crean bajo el usuario root. Esto puede representar un riesgo significativo si no se controla adecuadamente, ya que el acceso root otorga privilegios completos sobre los recursos. Este nivel de acceso puede no ser ideal si la seguridad es una de tus prioridades. La buena noticia es que hay una solución sencilla: crear un usuario con menos privilegios dentro de la imagen. Vamos a explorar cómo hacerlo para mejorar la seguridad de tus imágenes Docker.

¿Por qué es importante crear un usuario dentro de la imagen?

Crear usuarios específicos dentro de tus imágenes es una medida preventiva eficaz. Al seguir esta práctica, puedes:

  • Limitar el acceso: Los usuarios no-root tienen acceso restringido dentro de la imagen, lo que reduce la posibilidad de modificaciones no autorizadas o ejecución de comandos peligrosos.

  • Seguridad mejorada: Disminuye la superficie de ataque, ya que muchos exploits buscan explorar sectores con acceso root.

  • Facilidad de manejo: Al tener un grupo y usuario con el mismo nombre, es más fácil seguir sus actividades y efectivamente reducir errores administrativos.

¿Cómo creamos un Dockerfile seguro?

Para solidificar la seguridad en tus imágenes Docker, es esencial modificar tu Dockerfile adecuadamente.

  1. Usar una imagen base: Usualmente, empezamos con una imagen base como Nginx. Puedes hacer esto con el siguiente comando:

    FROM nginx

  2. Crear grupos y usuarios: Define un grupo y un usuario con el mismo nombre por conveniencia y claridad.

    RUN groupadd amin &&
    useradd -g amin amin

  3. Asignar permisos de acceso limitados: Especifica las carpetas a las que el nuevo usuario puede acceder.

    RUN chown -R amin:amin /var/www/html

  4. Cambiar al usuario no-root: Antes de ejecutar otras tareas, asegúrate de cambiar al nuevo usuario.

    USER amin

  5. Ajustar comandos según privilegios: Asegúrate de que cualquier comando que necesite derechos de root se ejecute antes de cambiar al usuario.

    Commands needing root access

    RUN apt-get update && apt-get install -y some-package

Luego puedes crear el usuario y cambiar a él como se mostró anteriormente.

¿Qué ocurre si un comando requiere privilegios de root?

Si un comando necesita ejecutarse con permisos elevados, debes asegurarte de que esos comandos se ejecuten antes de cambiar al usuario limitado. Por ejemplo, cuando uses comandos como apt-get update, hazlo al principio de tu Dockerfile mientras aún tienes acceso root.

¿Qué ventajas trae crear un usuario específico?

Implementando esta metodología, asegurarás que:

  • La ejecución de la imagen esté controlada: Sólo las acciones permitidas bajo el usuario limitado pueden ser realizadas.
  • Se reduce el riesgo de malware: Evita que algún acceso futuro tenga la capacidad de insertar código malicioso.

Al seguir estos pasos meticulosos y cuidadosos al crear tus Dockerfiles, estás fortaleciendo la seguridad de tus imágenes y protegiendo activamente tu entorno de desarrollo y producción. Implementa estas prácticas esenciales y continúa explorando maneras de optimizar tus habilidades y conocimientos en Docker para avanzar profesionalmente y mantener segura tu infraestructura.

Aportes 1

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

La persona que tiene acceso donde se está ejecuntando el contenedor puede iniciar como root: ```js docker exec -u root -it usuario bash ```