Programacion

Como usar Docker

Como usar Docker

En este articulo veremos Como usar Docker. Docker es un proyecto que permite utilizar contenedores para virtualizar aplicaciones en distintos sistemas operativos.

Que es Docker?

Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores virtuales, proporcionando una capa adicional de abstracción y automatización de virtualización de aplicaciones en múltiples sistemas operativos. Docker facilita la escalabilidad de las aplicaciones. 

Docker permite a los usuarios crear imágenes de contenedores que contienen todas las dependencias necesarias para ejecutar una aplicación.

Como instalar docker

Para instalar docker deberemos recurrir a su sitio oficial pudiendo descargar la versión adecuada de acuerdo al sistema operativo de nuestra computadora.

https://www.docker.com/products/docker-desktop/

Como usar Docker

Para utilizar docker deberemos utilizar una terminal.

Para correr una imagen deberemos utilizar el comando run seguido por el nombre de la imagen.
Si la imagen no existe se descargará automáticamente.
Cada imagen esta compuesta por capas. Si la capa ya existe en nuestra computadora no se descargará y utilizará la existente.

docker run postgres

Para descargar una imagen sin correrla deberemos utilizar el comando pull

docker pull postgres

Como saber que imagenes de docker tengo disponibles para descargar

https://hub.docker.com/

Si quiero saber que imagenes tengo disponibles en mi computadora debo utilizar el comando images

docker images

Si quiero ver solo un resumen de esta información

docker images | head

Si queremos saber que contenedores están corriendo en nuestra computadora debemos usar el comando ps

docker ps

utilizando el parametro – a mostrará los ultimos contenedores que corrimos en nuestra computadora.

docker ps -a

Si queremos detener el contenedor deberemos utilizar el comando stop seguido del id del contenedor

docker stop c4547dcf102

Podemos detener varios contenedores en la misma acción.

Como crear un contenedor

Para crear un contenedor deberemos crear un Dockerfile. Este es un archivo de texto que contiene un conjunto de instrucciones o comandos para la creación de una imagen docker.
Este archivo de texto debe contener el FROM donde dice a partir de que versión de software estaremos partiendo.
En FROM podemos indicar si queremos partir de un node en que versión de linux correrá. Por ejemplo FROM node:18-alpine3.18
WORKDIR nuestro directorio de trabajo
COPY los archivos que queremos copiar. Si son todos debemos indicar . .
RUN son los comandos que utilizará el constructor por ejemplo: RUN yarn install
CMD es el comando que se ejecutará en el shell de la aplicación

Para contruir un contenedor deberemos utilizar el bomando build
docker build .
o podemos colocarle un nombre de un servicio al contenedor por ejemplo docker build -t mi-servicio .
Una vez construida la imagen la podemos correr utilizando el comando docker run mi-servicio
Para hacer accesible el contenedor a nuestra computadora deberemos exponer el puerto de comunicación docker run -p 3000:3000 mi-servicio

Ten en cuenta que los contenedores al cerrarse pierden los datos ya que no son almacenados en ningun sitio. Si queremos montar un volumen deberiamos ejecutar el comando run utilizando el parametro -v

docker run -v /Users/usuario/aplicacion/app/etc:/etc/ -p 3000:3000 mi-servicio

De ese modo los datos persisten aunque el contenedor se reinicie o este detenido. También podriamos modificar el codigo de nuestra app que se veria reflejado en el navegador al refrescar el mismo.

Deberemos utilizar un comando -v por cada carpeta del contenedor que pretendamos mantener en un disco local.

Most Popular

To Top
$(".comment-click-1975").on("click", function(){ $(".com-click-id-1975").show(); $(".disqus-thread-1975").show(); $(".com-but-1975").hide(); }); // Infinite Scroll $('.infinite-content').infinitescroll({ navSelector: ".nav-links", nextSelector: ".nav-links a:first", itemSelector: ".infinite-post", loading: { msgText: "Loading more posts...", finishedMsg: "Sorry, no more posts" }, errorCallback: function(){ $(".inf-more-but").css("display", "none") } }); $(window).unbind('.infscr'); $(".inf-more-but").click(function(){ $('.infinite-content').infinitescroll('retrieve'); return false; }); $(window).load(function(){ if ($('.nav-links a').length) { $('.inf-more-but').css('display','inline-block'); } else { $('.inf-more-but').css('display','none'); } }); $(window).load(function() { // The slider being synced must be initialized first $('.post-gallery-bot').flexslider({ animation: "slide", controlNav: false, animationLoop: true, slideshow: false, itemWidth: 80, itemMargin: 10, asNavFor: '.post-gallery-top' }); $('.post-gallery-top').flexslider({ animation: "fade", controlNav: false, animationLoop: true, slideshow: false, prevText: "<", nextText: ">", sync: ".post-gallery-bot" }); }); });