Dockerfiles
Clase 9 de 22 • Fundamentos de Docker 2017
Contenido del curso
Clase 9 de 22 • Fundamentos de Docker 2017
Contenido del curso
Esteban Novo
Christian David Ospina Caicedo
Karel Muniz Perdomo Muniz Perdomo
Jose Meira
Joaquin Araujo
Simon P. Puente
Joaquin Araujo
Victor Orozco
Eduardo Lujan
Cesar David Ramírez Dimaté
Josué Isaac Fuentes López
Rodrigo Gomez Romero
andres flores
Jose Meira
Juan Diego Silva Garcia
Eduardo Lujan
Cesar David Ramírez Dimaté
luis bastian gutierrez
Alex Miño
Efrain Rochin
Eduardo Lujan
Julian Parra
Diego Forero
Eduardo Lujan
Federico Pereira Medina
Iván Fernández
Ricardo Verónica Duran
Jorge DAngelo
Diego Forero
Saul Burgos
Cesar David Ramírez Dimaté
EKAITZ HERNANDEZ HERNANDEZ
EKAITZ HERNANDEZ HERNANDEZ
Cesar David Ramírez Dimaté
Iván Toro
Juliana Quiroz Upegui
Para pushar (push) de una imagen en Docker Hub primero hay que hacer un login en Docker, para ello ejecutamos docker login en la consola y le damos usuario, pass y e-mail
docker login
Gracias! Le faltó mencionarlo a Marcos
docker login -u 'miUsuario' -p 'miPassword' -e 'mi@email.com'
Borrar imágenes:
docker rmi $(docker images -q)
Eliminar contenedores:
docker rm -f $(docker ps -aq)
Un Dockerfile es un documento de texto que contiene todos los comandos que un usuario puede llamar en la línea de comando para armar una imagen.
Instrucciones que podría contener un archivo Dockerfile:
FROM [imagen]:[tag] MAINTAINER joaquinaraujojs@gmail.com LABEL "[clave]": "[valor]" WORKDIR /[directorio raíz del proyecto] COPY [ruta-relativa-del-archivo/carpeta] [destino-del-archivo/carpeta] ./ ADD [URL del archivo ha descargar] RUN [comando] && [comando] && ... && \ CMD [comando] ENTRYPOINT [comando] EXPOSE [puerto] ENV [variable de entorno]
Los comandos a continuación permiten la construcción y configuración de una imagen a partir de un documento Dockerfile:
docker build [ruta del dockerfile] Inicializa la constricción de una imagen a partir de un archivo Dockerfile.docker build -t [nombre-de-la-imagen:tag] [ruta...] Permite establecer un nombre y un tag a la imagen a generar.Si necesitas una guía y resumen del curso aquí la tienes.
Cual es la diferencia entre ADD y COPY?
COPY está pensado para copiar archivos locales del entorno de construcción y este no tiene ninguna capacidad de extracción o de descompresión de archivos como ADD.
Las imagenes de Debian se deben antes que nada actualizar el repositorio o genera un error.
FROM debian:8 RUN apt-get update RUN apt-get install -y curl vim
Saludos.
También las de ubuntu tiene ese problema
No es que se deban actualizar, sino que hay paquetes que requieren actualizar el SO para poder instalarlas.
si no reconoce los paquetes antes insertar
RUN apt-get update
me salía error al correr el docker build y era porque tenia que poner apt-get update
mi Dockerfile quedaría así:
FROM ubuntu RUN apt-get update RUN apt-get install -y curl RUN apt-get install -y vim```
me too
Unable to locate package… esto sucede porque los repositorios no están actualizados.
FROM ubuntu
RUN apt-get update && apt-get install -y git
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
O en el FROM colocas la etiqueta 14:04
FROM ubuntu:14.04
Se deberían de fusionar esos dos run para tener las menos capas posibles
Para que funcione la instrucción CMD o ENTRYPOINT de ping tuve que modificar el archivo Dockerfile de la siguiente forma:
FROM ubuntu RUN apt-get update && apt-get install -y iputils-ping # Se define una instruccion en la imagen y se ejecuta cuando se crea un contenedor. # Formato json array. CMD ["ping", "-c", "5", "www.google.com"]
Excelente curso, me ha gustado mucho y lo considero muy útil para ser aplicado en el día a día.
Si al instalar los paquetes necesarios en vez ejecutarlo asi:
apt-get install -y vim && apt-get install curl
Lo ejecutaramos asi
apt-get install -y vim curl
Tambien se crearian 2 layers o solamente uno¿
Se genera una capa por cada comando RUN
Solo una solo hay un solo apt-get
¿Qué pasaría si en el Dockerfile pongo como FROM una imagen base que contiene un comando por defecto y en ese Dockerfile pongo más adelante mi propio CMD para ejecutar mi comando? ¿Se ejecutaría los los dos comandos?
Solo puede existir un CMD por dockerfile si existe más de uno solo se ejecuta el último, en tu caso no se como puede funcionar exactamente pero creo que solo ejecutaria el CMD que tu pongas ya que al ir construyendo se da cuenta que hay dos CMD y ejecuta el último.
Fuente:
Es sobreescrito con tu ultimo CMD, ,ecuerda que CMD permite establecer el comando por default que sera lanzado cuando al contenedor no se le especifica el comando a lanzar ejemplo:
docker run -it
es el ejemplo de tomcat el docker file contiene un cmd con
CMD ["catalina.sh", "run"]
docker run -Pd tomcat
Espero haber sido claro
Mi Hola Mundo en Docker.
docker run --rm lordbasex/docker-super-mario-run
Videos largos, pero muy bien explicados, al detalle.
Excelente manera de escalar los temas por parte del educador.
23 de agosto del 2018 y este curso sigue siendo el mejor de Docker en Platzi, gracias Marcos.
Pregunta básica. Siempre se comienza una imágen docker con una imagen del sistema operativo a utilizar?
Si, puede usar una imagen base de un sistema operativo como alpine, ubuntu, centos, o puedes iniciar desde una imagen de algún lenguaje o servidor como por ejemplo python o nodejs.
Link de la imagen para probar ADD:
La URL vendría siendo o
Invalid requirement: '/app/requirements.txt’
It looks like a path. Does it exist ?
Alguien sabe sobre el tema.
Me faltaba la opcion -r en pip install. Sorry
Para los que deseen definir sus propios comandos (alias) en linux, deben seguir los siguientes pasos. Estos fueron los mios que creé de manera personal:
subl ~/.bashrc alias dockerkillc='docker kill $(docker ps -q)' alias dockerremovei='docker rmi $(docker images -q)' alias dockerremovec='docker rm $(docker ps -qa)' alias dockerremovef='docker rm $(docker ps -aq) && docker rmi $(docker images -q)' . ~/.bashrc # Reflejar los cambios.
Dockerfile docs
Me pasaba este error:
/bin/sh: 1: ping: not found
La solución:
FROM ubuntu RUN apt-get update RUN apt-get install iputils-ping -y CMD ping -c 10 www.google.com