Skip to content

Commit 8cc948c

Browse files
committed
Add multi-architecture image explanation and layer sharing demonstration to README.md
1 parent 4a839c9 commit 8cc948c

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

01-contenedores/contenedores-ii/README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,37 @@ docker pull -a wordpress
138138
Si bien es cierto que antes funcionaba este comando sin problemas ahora mismo debido a este mensaje: `[DEPRECATION NOTICE] Docker Image Format v1 and Docker Image manifest version 2, schema 1 support is disabled by default and will be removed in an upcoming release. Suggest the author of docker.io/library/wordpress:3 to upgrade the image to the OCI Format or Docker Image manifest v2, schema 2. More information at https://docs.docker.com/go/deprecated-image-specs/` no se puede hacer. Este mensaje significa que la imagen que estás intentando descargar no es compatible con la versión actual de Docker.
139139

140140

141+
## Las imágenes son multi-arquitectura
142+
143+
Docker hace tan bien su trabajo que probablemente no te hayas dado cuenta de que una imagen no es realmente una sola imagen sino varias ¿A qué me refiero con esto? pues a que cuando creamos o alguien crea una imagen tiene que crear tantas imagenes como arquitecturas quiera soportar (amd64, arm64, etc.) y luego Docker las agrupa todas bajo un mismo nombre de imagen. A esto se le llama imágenes multi-arquitectura. No suele ocurrir a menudo con las más usadas pero en ciertas ocasiones te puedes encontrar con que una imagen que querías utilizar no está disponible para tu ordenador.
144+
145+
¿Y cómo puedo saber qué arquitectura tengo?
146+
147+
Dependiendo de tu sistema operativo puedes usar:
148+
149+
```bash
150+
uname -m
151+
```
152+
153+
o también:
154+
155+
```
156+
arch
157+
```
158+
159+
y si estás en Windows puedes usar lo siguiente:
160+
161+
```powershell
162+
Get-CimInstance Win32_OperatingSystem | Select-Object OSArchitecture
163+
```
164+
165+
Lo normal es que ni compruebes esto ni que compruebes si la imagen está disponible para tu arquitectura o no lo está pero si quieres saber para qué arquitecturas está generada cierta imagen puedes hacerlo usando este comando:
166+
167+
168+
```bash
169+
docker manifest inspect NOMBRE_DE_LA_IMAGEN:TAG
170+
```
171+
141172
## 🌍 Variables de entorno para las imágenes
142173

143174
Ya comentamos en la clase anterior que es posible utilizar variables de entorno para configurar los contenedores que ejecutamos a partir de una imagen. Esto es muy útil, ya que muchas imágenes utilizan variables de entorno para configurar aspectos importantes como usuarios, contraseñas, puertos, etc.
@@ -430,6 +461,10 @@ Para ejecutarlo es básicamente de la misma forma que ejecutamos cualquier otra
430461
docker run -d --name mi-web -p 8080:80 mi-nginx-personalizado:v1
431462
```
432463

464+
## Demostración de cómo dos imagenes pueden compartir capas
465+
466+
Ahora que ya has creado tu primera imagen de Docker, es importante que sepas que cuanto más "reutilices" instrucciones entre los diferentes Dockerfiles que crees (siempre que sea posible, claro está 🤓), más capas compartirán entre ellas y por lo tanto ocuparán menos espacio en disco y se descargarán más rápido. Para que veas esto en acción te he dejado el ejemplo que mostré durante la clase en el directorio [dos-imagenes-comparten-capas](./dos-imagenes-comparten-capas/) el cuál tiene su propio README.md con las instrucciones para que puedas probarlo tú mismx.
467+
433468
## Bonus ✨
434469

435470
Al finalizar la clase, te mostré brevemente una nueva característica de Docker, la cual nos va a permitir depurar estos Dockerfile de la misma forma que lo hacemos con el código de nuestras aplicaciones. [Puedes leer más información en este artículo](https://www.linkedin.com/posts/docker_debug-docker-builds-with-visual-studio-code-activity-7386119752697466881-OA-0/) o echar un vistazo a este vídeo del canal de return(GiS) (COMING SOON!);

0 commit comments

Comments
 (0)