You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
4 Hrs
18 Min
2 Seg

Creación de imágenes con Dockerfile

7/19
Resources

How to build a Docker image with a Dockerfile?

Creating a Docker image may seem challenging, but once you master the process, it makes it easier to distribute and deploy applications. The key is the Dockerfile, an essential file that defines the steps required to build a Docker image. From it, you can create an image that you can easily share. Here's how to do it.

What commands are useful for verifying the location of the Dockerfile?

Before building an image, it is essential to make sure that you are in the correct path in your terminal, where the Dockerfile is located. This can be verified using the ls command in Linux. This command will list the files in the current directory, allowing you to confirm the presence of the required Dockerfile.

How to actually build the Docker image?

To start building the image, use the docker build . command in your terminal. The dot (.) indicates that the Dockerfile is in the current location. When you run the command, Docker will read the instructions from the Dockerfile and start building the image, displaying the sequence of steps executed. You will see something like this:

docker build .

Docker will display the steps performed. For example, "1/2" might indicate that you are downloading a base image such as Nginx, and "2/2" will indicate that you are copying files to the image.

What to do with the unnamed image?

After creating your first image, when using docker images, you might notice that the image appears unnamed and untagged. Although this is the fastest way to create an image, it is not recommended as it results in missing information. If it happens, consider deleting it with the command:

docker rmi -f <image-ID> .

This will delete your image permanently. Use -f (force) in case the image has dependencies that might hinder its removal.

How to properly tag your image?

Labeling an image is basic to identify it easily. When building the image, use -t followed by the name and tag:

docker build -t web-site:latest .

This gives it a name and a label ("latest" indicates the latest version). This way, you will be able to handle different versions of your images with clarity.

What does it mean to have a tagged image?

Once properly labeled, when listing images with docker images, your new image will appear with the specified name and label, e.g. "sitio-web:latest". This makes it easy to manage multiple versions of an application or service.

What's next after creating a Docker image?

With the image creation complete, you can now proceed to deploy to different environments starting with your local environment. This involves running containers based on the image you just built. Having properly labeled images simplifies your organization and the recycling of previous versions.

Dive into the world of Docker and keep expanding your skills. With each step you take, you will be better prepared to orchestrate containerized applications, a valuable skill in modern software development. Keep learning and exploiting the full potential of Docker!

Contributions 28

Questions 5

Sort by:

Want to see more contributions, questions and answers from the community?

Las imágenes Docker son un paquete ejecutable ligero e independiente de software que incluye todo lo necesario para ejecutar una aplicación: código, tiempo de ejecución, herramientas del sistema, bibliotecas del sistema y configuraciones.
aporte 15:12:23 crear un docker file `FROM nginx:latest ` `# obtiene la ultima version` `#Path: /usr/local/nginex/html/` `COPY /sitio /usr/share/nginx/html` `#es importante dejar el espacio entre /sitio y usr/... porque son dos argumentos` para correr el docker file: `docker build .` luego se puede comprobar que se haya creado: en terminal `docker images` se obtiene ![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/9aa2b407-01aa-478d-85dd-c22fcb999dcc/98a27d8b-060c-4594-954b-6e81b6594bae/Untitled.png)![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/9aa2b407-01aa-478d-85dd-c22fcb999dcc/98a27d8b-060c-4594-954b-6e81b6594bae/Untitled.png)![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/9aa2b407-01aa-478d-85dd-c22fcb999dcc/98a27d8b-060c-4594-954b-6e81b6594bae/Untitled.png)![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/9aa2b407-01aa-478d-85dd-c22fcb999dcc/98a27d8b-060c-4594-954b-6e81b6594bae/Untitled.png)![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/9aa2b407-01aa-478d-85dd-c22fcb999dcc/98a27d8b-060c-4594-954b-6e81b6594bae/Untitled.png)![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/9aa2b407-01aa-478d-85dd-c22fcb999dcc/98a27d8b-060c-4594-954b-6e81b6594bae/Untitled.png)![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/9aa2b407-01aa-478d-85dd-c22fcb999dcc/98a27d8b-060c-4594-954b-6e81b6594bae/Untitled.png)![]()![](https://www.notion.so/Docker-Fundamentos-102cced2602b48c4a81649795b4694b0?pvs=4#6b0f8c66e74043de8e5613af9a60e8bc) esto se puede corroborar el interfaz gráfica en la pestaña imagenes ![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/9aa2b407-01aa-478d-85dd-c22fcb999dcc/83366964-1d34-4fd0-b08b-7f341b5a8ff9/Untitled.png)![](https://www.notion.so/Docker-Fundamentos-102cced2602b48c4a81649795b4694b0?pvs=4#470765c8f666468dbd9d61a961f81107) no es buena práctica que el nombre y el tag esten vacíos o none por lo que vamos a borrar esta imagen, para esto usamos : `docker rmi -f <image ID> ` la f es para forzar la eliminación y el image ID se copia, en este caso empieza con 13f0209… entonces creamos una nueva imagen pero con nombre y tag: `docker build -t sitioweb:latest .` esto crea una imagen con nombre sitioweb y tag latest ![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/9aa2b407-01aa-478d-85dd-c22fcb999dcc/54f8e2f9-a428-4969-98bd-a95377929592/Untitled.png)![](https://www.notion.so/Docker-Fundamentos-102cced2602b48c4a81649795b4694b0?pvs=4#d88006a183e248d68f61f72f69bd3f29) es importante el tag porque puede haber varias imagenes del mismo sitio web con esto cumplimos la segunda etapa de docker, que es crear docker image yo he usado los comentarios y vi una buena oportunidad de regresar los aportes
Si no les funciona con la ruta sitio pueden realizarlo asi: FROM nginx:latest *# Path: /usr/share/nginx/html* COPY . /usr/share/nginx/html
Después de mucho dolor y lagrimas, lo logré lo que me faltó fue integrar desde docker desktop on Ubuntu.![](https://static.platzi.com/media/user_upload/image-e146e70d-13c6-4f9d-a9a4-717300be0bea.jpg)
A mi me falló en mac M2 con: FROM nginx:latest Al ir a la web de docker hub vi que no usaban el latest y me funcionó From nginx COPY static-html-directory /usr/share/nginx/html
Un Dockerfile es un archivo de texto con instrucciones que define cómo construir una imagen de Docker. Imagina que es la receta de una torta: describe los ingredientes y pasos necesarios para crearla. La imagen de Docker es el resultado final de ese Dockerfile, como la torta ya horneada. Es un paquete listo para usarse que contiene todo lo necesario para ejecutar una aplicación. Los contenedores son las instancias en funcionamiento de esas imágenes, como porciones de la torta que se sirven en platos. Puedes ejecutar múltiples contenedores de la misma imagen, cada uno aislado y listo para funcionar. Así que, en resumen: - **Dockerfile**: receta. - **Docker image**: torta horneada. - **Contenedor**: porción servida.
docker rmi -f En el contexto de Docker, los flags (o indicadores) son argumentos adicionales que se utilizan para modificar el comportamiento de un comando. En el caso del comando docker rmi -f, veamos qué significan: docker rmi: Este comando se utiliza para eliminar imágenes de Docker. La opción -rmi significa “remove image” (eliminar imagen). -f: El flag -f o --force se utiliza para forzar la eliminación de una imagen. Sin este flag, Docker no eliminará una imagen si hay contenedores en ejecución que la utilizan. Al agregar -f, Docker eliminará la imagen incluso si está en uso por algún contenedor. En resumen, docker rmi -f es una forma de eliminar una imagen de Docker de manera forzada, incluso si hay contenedores que la están utilizando. Es importante usarlo con precaución, ya que puede afectar la continuidad de los contenedores en ejecución.
Los que tengan un error relacionado con: ERROR \[internal] load metadata for docker.io/library/nginx:latest. deben verificar su cuenta de docker en la pagina, yo fui a la opcion de two-factor en settings.
Falta algo muy importante: Por ejemplo, si vas a usar WSL de Ubuntu para ejecutar los comandos de Docker, es necesario instalar Docker también en la terminal de Ubuntu, ya que no será suficiente tener activado solo el motor basado en WSL 2 en Docker Desktop. Los comandos de Docker no funcionarán de esa manera. \- Para instalar la terminal de Ubuntu en Windows: wsl --install \- Para instalar Docker en la terminal: <https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-es>
Hola a mi me gustaria hacer una app de escritorio con el framework flet, se podria desarollar dentro de Docker?
Hola, como puedo entrar a la cmd de dockr para desplegar los comandos del minuto 0:56 ? Entro a cmd pero me parece es otra termina diferente, tiene otra sintaxis el prompt
# Creación de imágenes con Dockerfile Para confirmar que me encuentro en la misma ruta escribo (en bash):```js ls ``` **Para tener en cuenta las buenas prácticas:** * Lo mejor es que **debemos especificar un nombre y un tag** por eso cuando vamos a construir nuestra imagen después del build especificamos el tag (-t) seguido de lo que queremos poner en etiqueta y finalmente el ( . ) que es el que va identificar donde esta el dockerfile por ejemplo: ```js docker build -t sitioweb:latest . ```**Nota:** se puso el latest para identificar que es la última version, ya que con docker podemos poner mas versionamientos * En caso de que vamos a **borrar una imagen en docker** ponemos el siguiente comando (el -f significa que hacemos un borrado forzado): ```js docker rmi -f <ID de la imagen> ``` **Y finalmente después de componer nuestro dockerfile, gracias a el Docker build de ya tenemos nuestra docker image 🎉**
Entendible ![](https://static.platzi.com/media/user_upload/image-71bae8e8-959a-44c4-b5fa-a57ab33c7b67.jpg)
Cuando cierro Docker e intento abrirlo de nuevo no me deja abrirlo esto lo pude solucionar desde el administrador de tareas de windows cerrando `Docker Desktop Backend`
**Recordatorio** ✨⚠️ para que no pierdan tiempo como yo, tratando de llegar a la ubicación del sitio. Para moverse entre directorios, y pasar del wsl a la ubicación de donde está el *"sitio/"* en Windows, se tiene que hacer el comando: `cd /mnt/c/Users/tu_user/ruta_intermedia/curso-de-docker-fundamentos-clase-06` Y recuerden que es sensible a minúsculas y mayúsculas. Un indicador de que van por buen camino, es escribir una parte del comando o ruta y dar *tab*. Si se autocompleta, es que es correcto el comando o existe la ruta. (En todo caso, esto se lo pueden ahorrar si abren wsl, desde el proyecto en vscode 😉) A mover las manitas 👨🏻‍💻
Este es el repositorio del curso: <https://github.com/platzi/curso-de-docker-fundamentos> En las ramas va el contenido de la clase correspondiente.
Al ejecutar el comando: `docker build .` Y les retorna el siguiente error: `The command 'docker' could not be found in this WSL 2 distro.` `We recommend to activate the WSL integration in Docker Desktop settings.` `For details about using Docker Desktop with WSL 2, visit:` [`https://docs.docker.com/go/wsl2/`](https://docs.docker.com/go/wsl2/) Eso es debido, porque deben tener abierto el programa Docker Desktop, y vuelven a ejecutar el mismo comando en la terminal y listo, sin errores
![](https://static.platzi.com/media/user_upload/image-24960e60-a5bf-457e-b9e7-c7a8339d73e3.jpg) que pasa si se coloca el comando y no hace nada?![](https://static.platzi.com/media/user_upload/image-916da15f-a7ce-4a57-8ec7-6af9eb229c18.jpg)docker esta instalado...
Docker proporciona mecanismos de aislamiento de contenedores, lo que significa que cada contenedor (y su imagen asociada) se ejecuta de manera aislada del sistema operativo y otros contenedores. Esto puede ayudar a mitigar riesgos de seguridad, ya que los contenedores no tienen acceso directo a los recursos del sistema fuera de su entorno aislado.
Si tienes una imagen que deseas eliminar pero Docker no te permite hacerlo debido a dependencias o contenedores existentes, el `-f` forzará la eliminación. Sin embargo, debes tener cuidado, ya que esto puede afectar contenedores que dependen de esta imagen y romper su funcionalidad si los vuelves a ejecutar sin la imagen base.
Al intentar ejecutar el comando `docker build .` tenia el problema de `error failed to solve: nginx: failed to resolve source metadata for docker.io/library/nginx:latest: failed to authorize: failed to fetch oauth token: unexpected status from GET request to `[`https://auth.docker.io/token?scope=repository%3Alibrary%2Fnginx%3Apull&service=registry.docker.io:`](https://auth.docker.io/token?scope=repository%3Alibrary%2Fnginx%3Apull\&service=registry.docker.io:)` 401 Unauthorized` Si tienes este mismo error, la solución es tener la cuenta verificada, cuando cree mi cuenta no le di verificar en el correo (pasaron 2 días) por lo cual mi cuenta estaba en espera de verificación, después de validar mi cuenta realice el mismo comando y funciono.
**Resumen** **Creación de imágenes Docker** * Se utiliza un Dockerfile para definir la imagen, basándose en nginx:latest y copiando archivos del sitio web * El comando 'docker build .' se usa para construir la imagen en el directorio actual * Es importante asignar un nombre y etiqueta a la imagen al crearla para seguir buenas prácticas **Gestión de imágenes** * El comando 'docker images' muestra las imágenes creadas y sus detalles * Para eliminar una imagen se usa 'docker rmi', con la opción '-f' para forzar la eliminación si es necesario * La etiqueta 'latest' indica la versión más reciente de una imagen
Para quienes al ejecutar el comando "Docker build ." se les presente el error "load metadata for docker.io/library/nginx:latest" deben ejecutar los siguientes pasos: 1. Eliminar el archivo de configuracion de Docker con el comando rm ~/.docker/config.json 2. Eliminar el cache de docker con el comando sudo rm -rf ~/.docker/buildx
pregunta : no me esta funcionando el docker build . hago lo mismo que el profesor tengo los mismo archivos en visual studio segui paso a paso pero al correr el programa me sale => ERROR \[internal] load metadata for docker.io/library/nginx:latest y no se que mas hacer
`[+] Building 0.0s (1/1) FINISHED docker:desktop-linux` ` => [internal] load build definition from Dockerfile 0.0s` ` => => transferring dockerfile: 2B 0.0s` `ERROR: failed to solve: failed to read dockerfile: open Dockerfile: no such file or directory` `View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/yg3wj1e7ap5eqkxnsaq1n7xd9` **Para solucionar este error, Debes de cambiarle el nombre al archivo.** ***Debes de DockerFile*** ***a*** ***dockerfile***
No me funciono el dockerfile, me lanzaba un error en el paso 2, si les paso esto aqui les dejo una opcion para poner en su dockerfile y poder construir su imagen ```css # ------ Otra opcion ----------- FROM ubuntu:latest RUN apt-get -y update; \ apt-get -y upgrade; \ apt-get -y install apt-utils \ vim \ htop; RUN apt-get -y install dstat CMD ["bash"] ``` Otros comandos de la clase: ```css docker build . # Empieza a construir nuestra imagen docker images # Visualizar la imagen creada (pero aparace con none) docker rmi -f $ImageID # Borramos nuestra imagen de docker docker build -t $NombreDeTuTag. # Empieza a construir nuestra imagen docker build -t NombreRepositorio:Tag ```
No pude construir mi imagen con el comando del profesor en dockerfile, si les paso esto pueden poner en su docker file lo siguiente: ```css # ------- Otra opcion ---------- FROM ubuntu:latest RUN apt-get -y update; \ apt-get -y upgrade; \ apt-get -y install apt-utils \ vim \ htop; RUN apt-get -y install dstat CMD ["bash"] ```Comandos utilizados en la clase: ```css docker build . # Empieza a construir nuestra imagen docker images # Visualizar la imagen creada (pero aparace con none) docker rmi -f $ImageID # Borramos nuestra imagen de docker docker build -t $NombreDeTuTag. # Empieza a construir nuestra imagen docker build -t NombreRepositorio:Tag ```
Tengo un error con la ruta ya he probado de varias maneras y no encuentro solución![](https://static.platzi.com/media/user_upload/image-e014c7e0-1322-4834-a71b-664fc800f50c.jpg)![](https://static.platzi.com/media/user_upload/image-c7b84ab7-f007-4678-a905-a90bb0ae1933.jpg)