Está en la página 1de 31

ENTORNO DE DESARROLLO EN CONTENEDORES DOCKER

Una vez adquirido los conocimientos en Contenedores DOCKER, lo invitamos a seguir el paso a paso
del presente instructivo 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 se debe realizar 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.

Se oprime el botón de descarga para Windows, esta aplicación pesa alrededor de 530 MB, y a
continuación su instalación que no es necesario documentar por la sencillez de la misma.

NOTA: Es importante que en el computador donde se vaya a instalar el aplicativo se active en el


BIOS la opción de virtualización que normalmente se encuentra ubicada en la parte avanzada del
sistema.

Una vez reinicia la computadora se observa el icono de Docker en la barra de tareas.

Docker Desktop para


Windows ejecutado en
nuestra computadora
El icono de Docker se muestra con un signo de admiración el cual indica que hay actualizaciones
sugeridas desde la página oficial, no es obligación actualizar, pero es recomendable siempre estar
con las versiones más recientes.

Este es el menú emergente de Docker instalado en nuestro sistema.

Es necesario tener configurada una cuenta personal en DockerHub para poder acceder al repositorio
donde se encuentran alojadas miles de imágenes tanto públicas como privadas también se permite
extraer y enviar imágenes de la ventana acoplable hacia y desde 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 Docker se 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.

En la página de Docker docs hay una serie de códigos que muestra cómo realizar pruebas a la
aplicación para ver que todo vaya bien, es necesario acudir a la terminal de comandos de Windows.
Aquí se muestra un código que se puede digitar y la imagen a ejecutar por medio de comandos, esta
información está en la página de Docker en el apartado de docs, ahí se encuentran unos comandos
en donde se indica cómo ejecutar un “hola mundo”, para teclear los códigos y ver que todo marche
bien. 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.
El texto que arroja después de ejecutar el comando para la imagen hello-world dice que no lo
encontró de manera local, entonces va a hacer un pulled o descargarlo desde el repositorio de
DockerHub, se muestra el mensaje hello-world y nos suministra otra información de interés, si se
puede ver este mensaje quiere decir que la aplicación está trabajando correctamente.

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 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 24 min y término también hace
24 min.
Funcionamiento de la imagen hello-world

Para poder ver el funcionamiento de esta imagen se accede al repositorio de Docker por medio de
la la url de DockerHub y buscando la imagen oficial de hello-world.

Se observa la imagen hello-world oficial en el repositorio de Docker en donde están almacenadas las
imágenes oficiales de muchas empresas y las cuales son de uso público y no solo de empresas
también hay imágenes de desarrolladores de todo el mundo.

La imagen oficial de hello-world y la que ejecutamos en nuestro computador


Una característica de esta información es que la imagen está elaborada sobre un sistema operativo
Linux, sin embargo, se está corriendo sobre un SO Windows por medio de un contenedor y por su
puesto Docker.

Comando a ejecutar para correr


esta imagen

El resultado de crear ese hello-


world

Lo que está enmarcado de la captura de pantalla muestra el comando que se debe utilizar para
ejecutar y crear un contenedor.

Para observar cómo se realizó la imagen de hello-world. se ingresa en la página al enlace que
muestra y dice que está en un repositorio de github.
Una vez se ingresa al enlace, se observa el contenido de los archivos que hacen posible la imagen
de hello-world en Docker.

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.
Compilador en
Linux

En la segunda línea aparece lo siguiente, DE debían: bullseye-slim.

Esto quiere decir desde donde se va a empezar a trabajar con el contenido de distribución de Debian
de Linux como si se tratara de una herencia, ¿por qué se está utilizando debían en este ejemplo?,
sencillamente porque esté hello-world está ejecutando un archivo con extensión .c y para correrlo
se necesita un sistema operativo de Linux, para generalizar este Dockerfile lo que se necesita saber
es que para poder ejecutar un archivo con extensión .C es necesario un compilador GCC en Linux,
eso está en las líneas de código de la receta o Dockerfile.
Al trabajar en Linux tenemos
nuestra carpeta raíz user y
la carpeta final donde
vamos a trabajar es hola

Aquí es donde vemos el


ambiente para el cual hemos
diseñado el Dockerfile
Lo analizamos anteriormente

Cuando ejecutamos
la imagen
En nuestro archivo
hello.c

Como se observa en los ejemplos anteriores no hubo la necesidad de descargar Linux o alguna de
sus distribuciones ni herramientas para compilar un archivo en C porque esta imagen ya las contiene
y eso es parte de las bondades que tiene Docker
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:12-alpine
RUN apk add --no-cache python g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
El anterior código se copia y pega en el editor Visual Studio Code, cuando se guarde como se indica
en la carpeta que contiene el archivo package.json se hace con el nombre de dockerfile, esta carpeta
es la que se genera cuando se descomprime el archivo que Docker sugiere descargar y que contiene
la aplicación en java para poder llevar a cabo este ejemplo.

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
quería comenzar desde la node:12-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.
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 getting-
started.

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).

Para realizar un pequeño cambio a la aplicación, y hacer que muestre un texto como el siguiente:
Actualiza el código fuente

En el src/static/js/app.jsarchivo, actualice la línea 56 para usar la nueva caja de texto.


- <p className="text-center">No items yet! Add one above!</p>
+ <p className="text-center"> ¡Aún no tienes elementos pendientes! ¡Agrega uno
arriba!</p>

Para construir la versión actualizada de la imagen, usando comando docker build -t getting-started
.
Para comenzar un nuevo contenedor usando el código actualizado.

docker run -dp 3000:3000 getting-started

Probablemente arrojó un error como este (las ID serán diferentes):


No es posible iniciar el nuevo contenedor porque el contenedor anterior todavía se está ejecutando.
La razón por la que esto es un problema es porque ese contenedor está usando el puerto 3000 del
host y solo un proceso en la máquina incluido los contenedores, puede escuchar un puerto
específico. Para solucionar este problema, se debe quitar el contenedor antiguo.

Reemplazar el contenedor viejo

Para quitar un contenedor, primero debe detenerse. Una vez que se haya detenido, se puede quitar.
Hay dos formas de quitar el contenedor viejo.

Quitar un contenedor usando la CLI

Obtener el ID del contenedor mediante el comando docker ps

docker ps

Se utiliza el comando docker stop para detener el contenedor.

Swap out <the-container-id> with the ID from docker ps

docker stop <the-container-id>


Una vez que el contenedor se haya detenido, se puede eliminar mediante el comando docker rm.

docker rm <the-container-id>

Si es necesario también se puede detener y eliminar un contenedor con un solo comando agregando
el indicador "forzar" al comando docker rm. Por ejemplo: docker rm -f <the-container-id>

Eliminar un contenedor con el panel de Docker

Al abir el panel de Docker, se puede eliminar un contenedor con dos clicks. Sin duda, es mucho más
fácil que tener que buscar el ID del contenedor y eliminarlo.

Con el panel de control abierto, se ubica el cursor sobre el contenedor de la aplicación y se observa
una colección de botones de acción que aparecen a la derecha, se hace clic en el icono de la papelera
para eliminar el contenedor, confirme la eliminación y listo.
Inicio del contenedor de aplicaciones actualizado

Ahora, se inicia la aplicación actualizada.

docker run -dp 3000:3000 getting-started

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.

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 docker/getting-started

el push se refiere al repositorio [docker.io/docker/getting-started] cuando la imagen no existe


localmente con tag: docker/getting-started

El comando push buscaba una imagen llamada docker / Getting started, pero no encontró ninguna.
Si se ejecuta docker image ls, tampoco se vera ninguno.

Para solucionar este problema, se necesita "etiquetar" la imagen existente que se ha creado para
darle otro nombre.

Inicie sesión en Docker Hub con el comando docker login -u tu usuario.

Se ejecuta el comando docker tag para darle a la imagen getting-started un nuevo nombre. Se debe
asegurar de cambiar nombre de usuario por su ID de Docker.

docker tag getting-started usuario/getting-started


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.

CONTROL DEL DOCUMENTO

Dependencia
Nombre Cargo (Para el SENA indicar Regional y Centro Fecha
de Formación)
Autor (es) Jose Luis Bastidas Experto
Regional Cauca Octubre, 2021
Perez Temático
Centro de Teleinformática y
Producción Industrial
Claudia Milena Diseñadora Regional Distrito Capital – Centro
Octubre, 2021
Hernández Naranjo Instruccional de Diseño y Metrología.

También podría gustarte