Tarea desarrollo Docker contenedores 2910243 Bartolomé Antonio Pereira Ospina Profesora: Mercedes Patricia Paredes Una vez adquirido los conocimientos en Contenedores DOCKER, vamos a seguir el paso a paso del presente explicativo con la finalidad de construir un entorno de desarrollo. Una de las características principales de esta temática es su portabilidad, el cual, permitirá diseñar de manera ágil contenedores, dando respuesta a los requerimientos solicitados. Lo primero que realizaremos es: - Visitar la página de Docker que es la siguiente https://www.docker.com/ y se procede a entrar al apartado para la descarga del aplicativo para Windows. Instalamos Docker desktop Por último habilitamos SVM -virtualización segura Y … montó Docker desktop Entramos dockerhub Así luce el repositorio de Docker, ahí se podrá encontrar todas las imágenes que se creen y también se podrá acceder a las imágenes públicas, donde existen muchas de sitios oficiales. Para trabajar con Dockerse utilizara el cmd de Windows y para ello se oprime en el teclado las teclas Windows +R y se escribe cmd. Se carga la línea de comandos de Windows y se digita el comando Docker versión para asegurar de que la aplicación está bien instalada. . Cuando se habla de un hello-world en Docker hablamos de la descarga de una imagen y crea un contenedor para mostrar un mensaje de hello-world. Todo comando para trabajar con Docker lleva la palabra reservada “Docker” y luego se utiliza algunas banderas para dar una instrucción, entonces para ejecutar un hello-world se escribe en la terminal de comandos docker run hello-world en donde run es un comando que permite ejecutar un contenedor. Para trabajar con algunos comandos básicos de imágenes y contenedores y como se tiene ya la imagen descargada de hello-world se digita en el cmd el siguiente comando “docker image ls“ en donde se indica que se quiere ver el listado de imágenes guardadas. En la respuesta que se obtiene muestra el nombre del repositorio hello-world, el image ID es muy importante, la fecha de creación y el tamaño de la imagen, también se puede digitar el comando para ver contenedores de la siguiente manera docker ps. Cuando se ejecuta, no sale absolutamente nada de “hello world” porque el script de hello -world se ejecuta y lo termina automáticamente, si se digita el comando docker ps –a que arroja lo siguiente. Muestra todos los contenedores que hay disponibles y no necesariamente se están ejecutando en ese momento, muestra el ID del contenedor y referencia la imagen hello-world que se usó para montar ese contenedor, también se observa que fue creado hace 4 min y término también hace 4 min. Dockerfile El Dockerfile es un template o por así llamarlo la receta que tiene que seguir Docker y una serie de comandos, y de esas líneas depende el contenedor, si se abre el enlace de dockerfile.build se observa unas líneas interesantes. Como crear una imagen y generar un contenedor Un contenedor es el producto de ejecutar una imagen, una imagen contiene archivos que desencadena un resultado objetivo, partiendo de ese principio se va a necesitar un template para crear una nueva imagen y de ahí un contenedor propio. Para llevar a cabo este ejemplo de cómo construir una imagen y generar un entorno de desarrollo, se seguirá las instrucciones que están en la página de Docker y así ejemplarizar con un administrador de lista de tareas simple que se ejecuta en Node.js A partir de este punto se desarrollaran los ejercicios propuestos por Docker y así generar un entorno de desarrollo en java, para empezar con el ejercicio se descarga el contenido en un archivo .zip https://github.com/docker/getting-started/tree/master/app el cual contiene la aplicación, por eso para este ejemplo no es necesario manejar java. Para poder trabajar este ejemplo se recomienda un editor de código, ejemplo, Visual Studio Code, se puede descargar de la página oficial gratuitamente. Crear la imagen del contenedor de la aplicación Para construir la aplicación, se necesita usar un Dockerfile. Un Dockerfile es simplemente un script de instrucciones basado en texto que se utiliza para crear una imagen de contenedor. Cree un archivo con el nombre Dockerfile en la misma carpeta que se encuentra el archivo package.json con el siguiente contenido. # syntax=docker/dockerfile:1 FROM node:18-alpine RUN apk add --no-cache python3 g++ make WORKDIR /app COPY . . RUN yarn install --production CMD ["node", "src/index.js"] Comprobar que el archivo Dockerfile no tenga una extensión como .txt algunos editores pueden agregar esta extensión de archivo automáticamente y esto daría como resultado un error. Se ejecuta el cmd de windows y se procede a ubicar el directorio app donde se encuentra el Dockerfile, una vez ubicado en el directorio se construye la imagen del contenedor usando el comando docker build. docker build -t getting-started . Este comando usó el Dockerfile para crear una nueva imagen de contenedor. Es posible que se haya notado que se descargaron muchas "capas". Esto se debe a que se indicó al constructor que se uería comenzar desde la node:18-alpine imagen. Pero, como no se tenía eso en nuestra máquina, era necesario descargar la imagen. Después de descargar la imagen, se copia en la aplicación y se usa yarn para instalar las dependencias de la aplicación. Finalmente, la bandera –t etiqueta la imagen, como se nombró la imagen getting-started, se debe hacer referencia a esa imagen cuando se ejecute un contenedor. En la parte final del comando docker build indica que Docker debe buscar Dockerfile en el directorio actual.(ver punto al final del comando) Después de haber realizado los pasos anteriores se escribe en el cmd el comando para listar las imágenes las cuales se pueden observar y ver que ya se tienen en el repositorio la imagen gettingstarted. Iniciar un contenedor de aplicaciones. Ahora que se tiene una imagen, ejecutemos la aplicación. Para hacerlo, se usa el comando Docker run. Iniciamos el contenedor usando el comando Docker run y se especifica el nombre de la imagen que se acaba de crear. docker run -dp 3000:3000 getting-started Se está ejecutando el nuevo contenedor en modo "separado" (en segundo plano) y creando un mapeo entre el puerto 3000 del host y el puerto 3000 del contenedor. Sin el mapeo de puertos, no se podría acceder a la aplicación. Después de unos segundos, se verifica en el navegador web, digitando la dirección http://localhost:3000 se debería observar ya, la aplicación desplegada. Se pueden agregar nuevos items y comprobar que la aplicación funciona como se espera. Puede marcar elementos como completos y eliminar elementos. La interfaz de la aplicación está almacenando elementos con éxito en el backend. En este punto, se debería tener un administrador de lista de tareas en ejecución con algunos elementos. Ahora, se realizarán algunos cambios y para aprender a administrar los contenedores creados. En el panel de Docker, se observan los dos contenedores ejecutándose ahora (el contenedor de aplicaciones recién lanzado). Abrir un navegador y se digita la dirección http: // localhost: 3000 se debería observar el texto de ayuda actualizado. Comparte la aplicación Ahora que se ha creado una imagen, se procede a compartir imágenes de Docker, antes que nada se debe crear un registro en Docker Hub y es de ahí donde provienen todas las imágenes que se han utilizado. ID de Docker Una ID de Docker le permite acceder a Docker Hub, que es la biblioteca y comunidad más grande del mundo para imágenes de contenedores. Cree una ID de Docker de forma gratuita. Crea un repositorio Para enviar una imagen, primero se debe crear un repositorio en Docker Hub. Regístrese o inicie sesión en Docker Hub, haga clic en el botón Crear repositorio. Para el nombre del repositorio, use getting-started. Asegúrese de que la visibilidad sea Public. Escogemos la imagen ya creada la imagen En la línea de comandos, se ejecuta el comando push que se ve en Docker Hub. se tiene en cuenta que el comando utilizará su usuario de docker hub, no la palabra "docker". docker push vonpereira/getting-started:tagname El comando push buscaba una imagen llamada docker / Getting started, pero no encontró ninguna Si se ejecuta docker image ls, tampoco se vera ninguno. Ahora se intenta con el comando push de nuevo. Se está copiando el valor de Docker Hub, se puede obviar la tagname, ya que no es necesario agregar una etiqueta al nombre de la imagen. Si no se especifica una etiqueta, Docker usará una etiqueta llamada latest. docker push YOUR-USER-NAME/getting-started Ejecutar la imagen en una nueva instancia Ahora que la imagen se ha creado y enviado a un registro, ¡se intentará ejecutar la aplicación en una instancia nueva que nunca ha visto esta imagen de contenedor! Para hacer esto, se usa Play with Docker. Se abre un navegador y se busca la palabra play with docker. Clic en Iniciar sesión y luego en Docker en la lista desplegable. Se conecta directamente con su cuenta de Docker Hub. Una vez que se haya iniciado sesión, se observa la opcion AÑADIR NUEVA INSTANCIA en la barra lateral izquierda. Después de unos segundos, se abre una ventana de terminal en su navegador. En la terminal, se inicia la aplicación recién lanzada. Se debería observar que la imagen se baja y finalmente se inicia. Clic en la insignia 3000 cuando aparezca y debería ver la aplicación con sus modificaciones. Si la insignia 3000 no aparece, hacer clic en el botón "Abrir puerto" y escribir 3000. Fin de la presntacion Aprendiz : Bartolome Antonio Pereira Ospina CC 9086647 Contenedores 2910243 Profesora: Mercedes Patricia Paredes