Saltar al contenido

COMO CREAR UN CONTENEDOR DOCKER | Tutorial más completo

En esta entrada vamos a ver como crear un contenedor Docker, pero no solo hacer un docker run...esto esta chupado, lo que vamos a hacer es crear un contenedor docker de distintas formas:

  1. Crear un contenedor básico.
  2. Crear un contenedor con un puerto expuesto.
  3. Crear un contenedor con nombre.
  4. Crear un contenedor con variables de entorno.
  5. Crear un contenedor limitando la memoria.

 

Si eres mas de videos, por aquí te dejo el video de mi canal de youtube, que complementa esta entrada perfectamente.

Crear un contenedor básico

Para crear un contenedor en docker se utiliza el comando “docker run”, podemos ver la ayuda del comando con “docker run –help”.

En este apartado vamos a crear un contenedor básico y posteriormente iremos añadiendo propiedades a nuestro docker run.

Para crear un contendedor básico es tan simple como hacer lo siguiente:

$ docker run -d nginx

Los parámetros anteriores tenemos:

  • docker: Comando de docker CLI
  • run: se utiliza para correr un contenedor.
  • -d: Se utiliza para que el contenedor se ejecute en segundo plano.
  • nginx: Es la imagen que va a utilizar el contenedor para levantar.

Si ahora hacéis un docker ps que es el comando utilizado para ver los contenedores en ejecución veréis el contenedor ejecutándose pero solamente podréis acceder a el, si entráis dentro de contenedor con docker exec -it <nombre_container/id> bash.

En mi caso entro al contenedor con:

$ docker exec -it beautiful_goldstine bash

Una vez estamos dentro de nuestro contenedor lanzamos un curl a localhost al puerto 80 para comprobar que desde dentro del contenedor nuestro nginx responde correctamente.

$ curl -v http://localhost:80

A continuación vamos a hacer que desde nuestro docker host podamos acceder a nuestro nginx.

Crear un contenedor con un puerto expuesto

Para crear un contenedor exponiendo un puerto para poder acceder a nuestra aplicación es tan simple como utilizar el comando docker run utilizado anteriormente pero poniéndole la bandera -p.

$ docker run -d -p 8080:80 nginx

El comando anterior expone un puerto mas concretamente el 8080 de nuestro docker host al puerto 80 del contenedor que es por donde escucha nuestro nginx, si tu aplicación escucha en otro puerto debes indicar el puerto correspondiente.

Si ahora hacemos el docker ps para ver los contenedores en ejecución vamos a ver un parámetro que antes no tenia nuestro contenedor.

Si, lo nuevo es lo que aparece en la parte de ports, “0.0.0.0:8080 -> 80/tcp”, esto significa que todas las peticiones que entren a nuestra maquina por cualquier interfaz de red que esta tenga al puerto 8080 las enviará al puerto 80 del contendedor, por lo que si ahora lanzamos el curl ahora desde nuestro Docker Host, este debería funcionar correctamente.

$ curl -v http://localhost:8080

Nótese que ahora no se lanza al puerto 80 si no al 8080 que es el que hemos expuesto de nuestro docker host, si en tu caso has expuesto otro puerto, haz el curl a ese puerto.

Crear un contenedor con nombre

Hay dos formas de poner un nombre a nuestro contenedor:

  • Renombrándolo una vez ya esta creado.
  • Poniendo un nombre al contenedor en tiempo de creación.

Para renombrar un contendedor que ya esta creado, solo hay que utilizar el comando docker rename y su utilización es muy simple.

$ docker rename

Este comando renombra el contenedor que ya tiene un nombre al nuevo nombre que nos apetezca.

Para ponerle un nombre cuando lo vamos a crear tendremos que utilizar la bandera –name, esto lo que hace es indicar el nombre con el que queremos crear nuestro contenedor y se utilizar en la linea del comando docker run, vamos a hacerlo con el docker run que venimos utilizando.

$ docker run -d -p 8081:80 –name nginx1 nginx

Si ahora haces un docker ps verás que tu contenedor nuevo tiene un nombre en mi caso de nginx1, date cuenta que también he cambiado el puerto del docker host en el flag -p porque el puerto debe ser único en el docker host que no confundir con el contenedor, es decir yo puedo tener varios contenedores escuchando en el mismo puerto, pero no podría tener varios contenedores expuestos al mismo puerto del docker host.

Ahora para acceder a este contenedor tendras que hacer el curl al puerto 8081 que es el que se ha expuesto en el docker host.

$ curl -v http://localhost:8081

Espero que este apartado haya quedado claro y ahora vamos a ver como pasar variables de entorno a un contenedor docker.

Crear un contenedor con variables de entorno

Pasar variables de entorno a un contenedor es muy simple, solamente tendremos que añadir a nuestra linea de comandos docker run el flag -e o –env.

Las variables de entorno se suelen pasar a nuestro contenedor para que se configure la aplicación que se ejecute en él, de tal modo que la aplicación leerá las variables de entorno del contenedor y se configurara, un caso muy típico es mysql que lee variables de entorno para configurar la password de root, para crear usuarios, base de datos, etc…

Si lanzamos el comando que venimos utilizando en esta entrada pero con -e, tal que así:

$ docker run -d -p 8082:80 –name nginx_variables -e NOMBRE=RaulCazallas nginx

El comando anterior crea un nginx que escucha por el puerto 8082 que se llama nginx_variables (y le he cambiado el nombre y el puerto porque estos deben de ser únicos en el docker host si no te fallara por conflictos) y que tiene una variable de entorno con NOMBRE.

Si entras dentro del contenedor ahora:

$ docker exec -it nginx_variables bash

Y haces el comando env:

$ env

Observaras que el contenedor tiene una variable de entorno llamada NOMBRE con el valor que le hayas puesto.

Como estarás viendo no solo te he enseñado a crear un contenedor, he tirado la casa por la ventana y te he enseñado a crear un contenedor pero junto a esto has visto otros muchos comandos y parámetros, espero que te este gustado la entrada y ahora para finalizarla vamos a configurar algo muy interesante, limitar los recursos de nuestro contenedor por memoria RAM.

Crear un contenedor con límite de memoria RAM

Para limitar los recursos de un contenedor docker se puede hacer tanto por cpu como por memoria, en este ultimo apartado vamos a aprender a hacerlo por memoria.

Esto se realiza con el flag –memory e indicaremos la cantidad de megabytes con el que queremos limitar nuestro contenedor.

$ docker run -d -p 8083:80 –name nginx_limit_memory -e NOMBRE=RaulCazallas –memory 200m nginx

Como estas observando esta linea ya se esta haciendo interminable y eso que solo hemos pasado una variable de entorno..para hacer esto mucho mas estructurado y automatizable existe herramientas como Docker Compose, si quieres que hable sobre Docker Compose hazmelo saber poniendo un comentario en el video de Youtube que indique “Docker Compose”

Ahora mismo lo dejaremos así y si ahora ejecutamos un docker ps veremos que tenemos un nuevo contenedor llamado “nginx_limit_memory” y te estarás preguntando, si Raúl, ¿Pero como puedo ver si la configuración de memoria es correcta?, bueno esto lo haremos con el comando docker stats.

$ docker stats nginx_limit_memory

Al hacer este comando podrás ver las estadísticas del contenedor en tiempo real, esto no guarda métricas en el tiempo, si quieres aprender a guardar métricas para analizarlas en el tiempo, dejame un comentario en el video indicando “Quiero aprender a monitorizar docker”.

En la parte de MEM USAGE / LIMIT observaras el limite de memoria a 200m, con el limite debes tener cuidado, si configuras un limite menor de la memoria normal del contenedor, este no levantará y con esto habrás llegado al final de esta entrada.

Conclusión

En esta entrada has aprendido no solo a crear un contenedor docker, si no a crear un contenedor pero configurando los parámetros mas utilizados a la hora de crear contenedores.

Si te ha gustado esta entrada compártela en tus redes sociales, a mi, me ayudas mucho y me anima a seguir creando contenido totalmente gratuito.

Resumen
COMO CREAR UN CONTENEDOR DOCKER | Tutorial más completo
Nombre del artículo
COMO CREAR UN CONTENEDOR DOCKER | Tutorial más completo
Descripción
El tutorial mas completo para crear un contenedor Docker
Autor

1 comentario en «COMO CREAR UN CONTENEDOR DOCKER | Tutorial más completo»

  1. Pingback: - Como instalar JENKINS en DOCKER PASO a PASO

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *