Docker y Git Flashcards

1
Q

¿Qué es Docker?

A

Docker es una herramienta que automatiza el despliegue de aplicaciones aisladas dentro de contenedores. Es para crear un aislamiento de un ambiente del sistema operativo origen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Qué conceptos centrales administra Docker?

A
  • Container: grupo aislado de procesos. Deben ser livianos (único propósito -ejecutan 1 comando-, mantienen el estado mínimo necesario, pueden encender/apagar rápidamente).
  • Image: template usado para crear contenedores
  • Dockerfile: archivo con instrucciones para construir una imagen
  • mounts: acceso al directorio del host
  • volumes: área donde se persisten datos
  • networks: interfaces de red internas
  • ports: forwardear puertos del hosts al contenedor
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Qué brinda docker?

A

Docker brinda consistencia, replicabilidad y aislamiento.

  • Consistencia: Cualquier imagen se obtiene, inicia y configura de la misma manera.
  • Replicabilidad: Los contenedores basados en una misma imagen son inicialmente iguales.
  • Aislamiento: Se puede controlar la interacción entre la aplicación en un contenedor y el mundo exterior (en ambas direcciones).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Explique Sharing con Docker

A

No hay una forma de compartir un contenedor en sí, pero se pueden compartir:

  • Imágenes en repsoitorios como hub.docker.com
  • Imágenes exportadas a archivos comprimidos.
  • El Dockerfile que generó la imagen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Qué comandos tiene Docker?

A
  • docker logs
  • Listados de objetos (docker image ls, docker container ls, docker volume ls)
  • Eliminar objetos (docker image rm, docker container rm, docker volume rm)
  • Control de contenedores (docker run <image>, docker stop <container>, docker start <container>, docker kill <container>)</container></container></container></image>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Cómo funciona un Dockerfile?

A

Se almacenan como una referencia a la imagen anterior y una lista de diferencias, llamada layer:

  1. Cada layer es inmutable
  2. Cada layer referencia a su predecesor:
    a. Dos builds comparten layers hasta la primera diferencia.
    b. Layers ya construidas sirven como caché.
    c. Un archivo agregado en un layer y borrado en otro layer sigue siendo accesible.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Cómo se administra la Seguridad con Docker?

A
  • el control de acceso de archivos es por userId
  • el filesystem sólo almacena userId’s
  • un contenedor puede ejecutar con cualquier userId
    el único control de acceso a un volumen es que sólo sea para lectura
  • un usuario con permiso de crear contenedores puede escalar a ser root
  • docker run -it -v /:/host ubuntu
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

GIT: ¿Qué herramientas de visualización del proyecto se tienen?

A
  • git log –all –graph –oneline
  • gitg
  • gitk
  • magit
  • GitKraken
  • SourceTree
  • Tortoise Git
  • Hosting UI (GitHub, GitLab, BitBucket, etc)
  • IDEs
    etc
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

GIT: ¿Qué es y qué contiene un Commit?

A

Es algún estado del repositorio. Contiene ancestros, autor/fecha autoría, mensaje, archivos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Flujos de Trabajo de GIT: Explique Trunk Based

A

Todo cambio se agrega a un mismo branch.

Ventajas:
- Simple
- Todo el código está en el último commit

Desventajas:
- Todo el código está en el último commit
- Cuesta separar de líneas de trabajo

Problema principal: El control de versiones es naturalmente distribuido (también es concurrente)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Flujos de Trabajo de GIT: Explique Feature Branches

A

Un branch por funcionalidad de código independiente.

Ventajas:
- Sólo un feature incompleto por branch.
- Menos gente trabajando en cada branch
- El resto del equipo ve todos los cambios juntos

Desventajas:
- Administración de branches
- Features necesitan ser independientes entre sí

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Cuáles son las diferencias entre Github Flow y Git Flow?

A

Github Flow:
- Verificación dentro de cada PR
- Software con despliegues simples-rápidos-baratos
- SaaS (Software as a service)
- Aplicaciones web

Git Flow:
- Verificación al preparar cada release
- Software con despliegues complejos-lentos-caros
- Aplicaciones mobile o de escritorio
- Instalaciones on-premise
- Múltiples versiones simultáneas

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Cuáles son las diferencias entre Monorepo y Polirepo?

A

Monorepo
- Un repositorio para todo el proyecto
Características:
- Simple
- Facilita hacer cambios coordinados a N componentes
- Fácil de filtrar para crear polirepo con historia equivalente (git filter-repo)

Polirepo
- Un repositorio por componente del proyecto
Características:
- Control de acceso limitando autorización a ciertos repositorios
- Facilita modularizar componentes (Evita dependencias implícitas)
- No hay forma fácil de unificar la historia para crear un monorepo equivalente

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Qué debe reflejar la estructura de repositorios elegida?

A

Elegir una estructura de repositorios que refleje:
- Estructura de comunicación entre participantes
- Conexiones entre componentes de software
- Responsabilidades compartidas entre componentes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Qué significa CI/CD?

A

Continuous Integration (CI)
- Integrar frecuentemente el trabajo realizado
- Descubrir errores rápidamente
- De forma automática

Continuous Deployment (CD)
- Asegurar que podemos producir un entregable de forma rápida y certera
- Desplegar a entornos de prueba/producción
- De forma automática

How well did you know this?
1
Not at all
2
3
4
5
Perfectly