Tutorial Docker

 

1. Introducción

Docker es una herramienta que permite a los desarrolladores y administradores de sistemas desplegar aplicaciones en entornos de pruebas controlados. La principal ventaja de Docker es que no es necesario instalar ninguna dependencia, todo lo que necesitamos viene integrado en un contenedor. A diferencia de las máquinas virtuales no necesitamos tener una emulación de una máquina física, Docker aprovecha los recursos del sistema anfitrión para ejecutar los contenedores. Esta diferencia es fundamental a la hora de escalar aplicaciones ya que el gasto de recursos es muchísimo menos que si utilizáramos máquinas virtuales.

Para obtener información adicional consultar se pueden consultar los siguientes enlaces:

 

2. Instalación

Docker se puede instalar en muchas distribuciones de Linux habilitando la virtualización del procesador de la máquina (VT o AMD-V). En el caso de Microsoft Windows tan solo funciona a partir de Windows 10 usando la virtualización por software de Windows ( Hyper-V).

 

3. Uso básico

Para saber la versión de docker utilizaremos el siguiente comando:

docker version

Para poner en marcha un contenedor básico de prueba:

docker run --name prueba hello-world

Para consultar los contenedores corriendo en nuestra máquina:

docker ps

Para consultar los contenedores existentes en nuestra máquina:

docker ps -all

Para borrar el contenedor de prueba:

docker rm prueba

Para ver las imágenes existentes en nuestro equipo:

docker images

Para borrar la imagen de prueba

docker rmi hello-world

A parte de ejecutar docker como un comando también podemos lanzarlo como un servicio, para ello necesitamos imágenes que dejen el docker funcionando:

docker run -p 80:80 httpd

En este caso el comando no se queda parado

 

4. Creación de imágenes

Hay disponibles muchos repositorios e imágenes preconfiguradas para que podamos realizar nuestro trabajo. Pero muchas veces necesitamos crear nuestra propia imagen para probar o poner en desarrollo nuestras aplicaciones. En este caso crearemos un servicio con Node.js.

Tutorial para crear una aplicación con nodejs en docker

 

4.1 Creación de una aplicación

Creamos fichero de configuración llamado: package.json

{
    "name": "docker_web_app",
    "version": "1.0.0",
    "description": "Node.js on Docker",
    "author": "First Last <first.last@example.com>",
    "main": "server.js",
    "scripts": {
      "start": "node server.js"
    },
    "dependencies": {
      "express": "^4.16.1"
    }
  }

Creamos el fichero principal de nuestra aplicación: server.js

'use strict';

const express = require('express');

// Constants
const PORT = 8080;
const HOST = '0.0.0.0';

// App
const app = express();
app.get('/', (req, res) => {
  res.send('Hello world\n');
});

app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);

 

4.2 Creación de plantilla

Para poder correr nuestra aplicación dentro de una imagen debemos crear un fichero: Dockerfile

FROM ubuntu
RUN apt-get update \
    && apt-get install -y apt-utils \
    && apt-get install -y locales \
    && apt-get install -y curl \
    && apt-get install -y gnupg2 \
    && rm -rf /var/lib/apt/lists/* \
    && localedef -i es_ES -c -f UTF-8 -A /usr/share/locale/locale.alias es_ES.UTF-8
ENV LANG es_ES.utf8
RUN curl -sL https://deb.nodesource.com/setup_6.x -o nodesource_setup.sh \
    && chmod +x nodesource_setup.sh \
    && ./nodesource_setup.sh \
    && apt-get install -y nodejs \
    && apt-get install -y npm \
    && apt-get install -y build-essential 
WORKDIR /usr/src/app
COPY package*.json server.js ./
RUN npm install
EXPOSE 8080
CMD [ "npm", "start" ]

 

4.3 Construir imagen

Para construir nuestra imagen debemos acceder al directorio de nuestro fichero Dockerfile y ejecutar:

docker build -t yourhubusername/node-web-app .

Podemos utilizar nuestra imagen ejecutandola en segundo plano mediante:

docker run --name=node_test -d -p 8080:8080 yourhubusername/node-web-app

 

5. Acceso a contenedores corriendo en segundo plano

Para poder acceder a una máquina que corre en segundo plano podemos abrir una una sesion de consola mediante este comando:

docker exec -it node_test /bin/bash

También podemos añadir ficheros o traer ficheros del contenedor mediante:

docker cp --help

Podemos executar comandos sin abrir una sesión de consola:

docker exec node_test ls

 

6. Compartir imágenes

Una vez desarrollado nuestro contenedor podemos compartir nuestra imagen con otros usuario de DockerHub:

docker login --username=yourhubusername
docker push yourhubusername/node-web-app

 

El código fuente de este tutorial se encuentra disponible en: github

 

Descubre más casos en … 

full logo white

Vamos a hablar

¿TIENES UNA IDEA? PODEMOS AYUDARTE.