¿Cómo configurar Docker en tu ambiente local o en Google Cloud?
Iniciar con Docker puede parecer intimidante, pero no es necesario. Puedes seguir estos pasos simples para configurarlo tanto en tu entorno local como en Google Cloud y empezar a explorar sus capacidades.
Configurar Docker localmente:
Visita la página web e instala Docker Desktop, disponible de manera gratuita. Esto instalará la línea de comando de Docker que utilizaremos.
Utilizar Google Cloud:
Crea una cuenta gratuita en Google Cloud Platform para aprovechar los $300 que ofrecen para experimentar sin costo.
Accede a la consola en console.cloud.google.com.
Activa Cloud Shell y crea un nuevo proyecto si es necesario, para el cual el Project ID estará disponible en la parte superior de la consola.
¿Cómo verificar la instalación y disponibilidad de imágenes en Docker?
Verificar la instalación de Docker es fundamental para asegurarse de que todo esté en marcha. Incluso puedes empezar a explorar imágenes de contenedor disponibles.
Verificar la instalación de Docker:
Usa el comando docker --version para verificar si Docker está instalado. Si todo está bien, deberías ver la versión instalada.
Consultar imágenes de contenedor:
Ejecuta docker images para listar las imágenes que tienes localmente. Si es la primera vez que usas Docker, probablemente la lista esté vacía.
Ejecutar un contenedor Hello World:
El comando docker run hello-world te ayudará a verificar que Docker pueda descargar y ejecutar imágenes correctamente.
¿Cómo ejecutar una aplicación en Docker que no se termine rápidamente?
A menudo, necesitarás correr aplicaciones que permanezcan activas durante más tiempo.
Problemas con puertos ya en uso:
Si al correr una aplicación te aparece un error sobre el puerto 80 ocupado, usa la bandera -p para mapear puertos diferentes, por ejemplo, docker run -p 8080:80 para mapear el puerto 8080 al puerto 80 del contenedor.
Ejecutar aplicaciones persistentes:
Usa la bandera -d para que la aplicación corra en segundo plano como un demonio.
Ejemplo con Docker y un servidor:
Puedes utilizar docker run -d -p 8080:80 nginx para ejecutar un servidor NGINX.
¿Cómo gestionar y limpiar imágenes y contenedores antiguos?
La gestión eficiente de contenedores e imágenes es clave para mantener un entorno ordenado y reactivo.
Listar y parar contenedores:
Para ver contenedores corriendo, utiliza docker ps.
Usa docker stop <nombre_del_contenedor> para detener un contenedor en particular.
Eliminar imágenes no utilizadas:
Ejecuta docker rmi <id_de_la_imagen> para borrar imágenes que ya no necesites.
Listado de contenedores históricos:
Usa docker ps -a para ver todos los contenedores que han corrido previamente, incluyendo aquellos que ya no están activos.
¿Cómo crear y ejecutar imágenes de contenedor propias?
La creación de imágenes de contenedor a partir de tus propias aplicaciones puede parecer complicado, pero aquí te guiamos a través del proceso con un ejemplo usando Java y SpringBoot.
Crear un Dockerfile:
Define un Dockerfile que especifica cómo construir tu imagen. Incluye instrucciones para compilar y ejecutar tu aplicación.
FROM maven:3-jdk-11 AS buildWORKDIR /appCOPY . .RUN mvn clean packageFROM openjdk:11-jre-slimWORKDIR /appCOPY--from=build /app/target/*.jar app.jarENTRYPOINT ["java", "-jar", "app.jar"]
Construir la imagen de contenedor:
Usa docker build -t mi_aplicacion:1.0 . para construir tu imagen.
Ejecutar la imagen de contenedor:
Ejecuta tu aplicación con docker run -p 8080:8080 mi_aplicacion:1.0 para correrla en un contenedor.
Iniciar con Docker es una aventura emocionante que abre un mundo de posibilidades para la gestión de aplicaciones en contenedores. Asegúrate de familiarizarte con los comandos básicos y explorar la documentación oficial para profundizar tu conocimiento. ¡Sigue aprendiendo y experimentando con Docker, y verás cómo tus habilidades se expanden considerablemente!
Listar las imágenes descargadas en nuestra máquina local.
docker images
Listar los contenedores que se están ejecutando en nuestra máquina.
docker ps
Listar los contenedores que se han ejecutado en nuestra máquina.
docker ps -a
💡 Incluso podemos ver el status con el que terminaron en STATUS.
Comando para ejecutar un contenedor.
El puerto lo podemos mapear usando-p puerto_mi_máquina:puerto_container.
Podemos usar -d para lanzarlo como un daemon (para que nos deje la consola "libre").
Luego de la flag--name asignamos un nombre a nuestro contenedor., en este caso app1
docker run -d --name app1 -p 8080:80 tumtum/hello-world
Borrar imagenes que están en nuestra máquina.
docker rmi <id-imagen># docker rmi 563
💡Podemos poner los primeros 3 dígitos del id para borrar una imagen.
Para detener un contenedor que se está ejecutando.
docker stop <container-name># docker stop app1
Para construir una imagen.
La flag -t es para ponerle un tag/nombre a nuestra imagen.
El punto . es para indicar donde está el Dockerfile (en este caso significa que es en el directorio en el que estamos)
docker build -t user/nombre-de-mi-imagen .
Para ejecutar bash dentro de un contenedor que se está ejecutando.
docker exec -i -t <id-container>/bin/bash
"Minuto 10!"
ERROR al momento de cargar el contenedor con NGINX, ésto debido a un _typo _que hace el profesor.
El comando que ingresa es "NGNIX"
Me hubiera gustado, como novato que soy, que el profe continuara con el camino original del video...
Siempre es bueno que sucedan éste tipo de errores.
Ni modo :D
No solo que ocurran, que se resuelvan también
El comando que usó el profe:
cat > Dockerfile << EOF
FROM maven:3-jdk-11 AS BUILD
COPY src /usr/src/app/src
COPY pom.xml /usr/src/app
RUN mvn -f /usr/src/app/pom.xml clean package
FROM openjdk:11-jre-slim
COPY --from=build /usr/src/app/target/spring-boot-template-0.0.1-SNAPSHOT.jar /urs/app/spring-boot-template-0.0.1-SNAPSHOT.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/usr/app/spring-boot-template-0.0.1-SNAPSHOT.jar"]
gracias, hay un pequeño typo
diria que es "usr" en lugar de "urs"
/urs/app/spring-boot-template-0.0.1-SNAPSHOT.jar
Comandos
//setear proyecto de trabajogcloud config set project <PROJECT-ID>// verificar que docker esté instaladodocker -v
//verificar que haya alguna imagen de dockerdocker images
// correr un hello world con docker, si no existe crea la imagendocker run hello-world
// verificar procesos de dockerdocker ps
// correr una imagen docker run -p <puerto-maquina:puerto conteiner><imagen-docker>// mostrar procesos que has corridodocker ps -a
// borrar imagen docker rm <id-del-conteiner>// correr en segundo plano (demonio)docker run -d --name <nombre>-p <puerto-maquina:puerto conteiner><imagen-docker>// parar aplicaciondocker stop <nombre-app>
En esta clase nos dimos cuenta de que si no sabes docker esta difícil que le entiendas al tema.
A lo mejor hubiera sido mejor editar el vídeo para que esas pequeñas fallas o cambios en el flujo original no se notaran. Sobre todo en un intento de hacerlo más claro al estudiante.
Cuando empieza a trabajar con Spring Boot y tu sabes de Spring Boot :D ;D
@o@ Me perdí bastante, lo puse en la clase pasada a tomar el curso de docker hehehe, al menos entendí la lógica del ejercicio :3
EXPLICASTE MAS DE DOCKER QUE LO QUE APRENDI EN MUCHOS AÑOS. practicidad total.
Correccion el flag -d significa DITTACHED no es demonio
Espero que mejore la explicación en la próxima clase... porque creo que no fue muy claro.
Yo igual, pude comprender mejor en este tutorail de youtube. Espero te sirva.
Es recomendable que tomen el curso de Docker primero con el profe Guido, de lo contrario se van a perder
Un consejo. prepara mejor tus clases
Que buen video
docker run hello world
Unable to find image 'hello:latest' locally
docker: Error response from daemon: pull access denied for hello, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.
Como lo puedo resolver?
No me gusto mucho esta clase. Es confuso, no esta explicado de manera clara y nos lleva a callejones sin salida que luego no se resuelven
Es cierto, pero si sabes algo de Docker lo entendes fácil. Quizas primero debías tomar el curso de Docker
Improvisas demasiado!
Si no te queda muy claro lo que está tratando de hacer igual que a mi, he encontrado la solucion en youtube: Un curso de hora y media, basico. Espero te sirva.
Muy agradecido con el enlace del curso de youtube. Estuvo realmente bueno, me ayudo a entender bastante
Para correr el hello world
docker run -d --name appName -p 8080:80 tutum/helloworld
-d : (Detached) corre el contenedor en segundo plano y sale del mismo (exit) cuando se termina su proceso raíz termina.
-p para los puertos, a la izquierda tu cumputadora y a la derecha el puerto del contenedor
dijeron que GCP iba a ser fácil, pero estoy completamente perdido
Recomendado ver primero los cursos de Docker para tener un poco de más contexto tambien sobre lo que se hace
Es una gran base para entender contenedores/imagenes y demás