martes, 4 de junio de 2019

Instalando y configurando Docker en Ubuntu 16.04 server lts

Bueno a estas alturas ya no tenemos donde instalar nuestras apps Web, esta saturado de fierros y no hay mas espacio ni tiempo para la implementación costosa que eso requiere, tod evoluciona rapido y para los developers tambien, por lo tanto han aparecido después de las maquinas virtuales lo famosos contenedores. los cuales proveen del entorno necesario para correr nuestras apps sin necesidad de tener un sistema operativo o maquina virtual, ni tampoco tener una plataforma de sistema determinada.

Docker entonces nos ahorra esa pega de configuraciones etc etc. y docker nos provee de todo lo necesario, modularidad, escalabilildad, seguridad, consistencia, aislamiento, etc.

Vamos a instalar una app web para tomcat 7, osea un archivo .war que contiene una app desarrollada en JEE con spring y patron MVC

Entonces vamos a preparar nuestro entorno docker, veamos que sistema tenemos :

slack@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.2 LTS
Release: 16.04
Codename: xenial

ejecutamos el update para actualizar nuestros paquetes de software y repositorios,

slack@ubuntu:~$ sudo apt-get update
Ign:1 http://dl.google.com/linux/chrome/deb stable InRelease
Obj:2 http://dl.google.com/linux/chrome/deb stable Release
Des:4 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]                                               Obj:5 http://archive.canonical.com/ubuntu xenial InRelease                                                                         Obj:6 http://archive.ubuntu.com/ubuntu xenial InRelease                              
Des:7 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]            
Obj:8 https://deb.nodesource.com/node_10.x xenial InRelease      
Des:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [964 kB]          
Des:10 http://archive.ubuntu.com/ubuntu xenial-updates/main i386 Packages [829 kB]                             Des:11 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [750 kB]                     Des:12 http://archive.ubuntu.com/ubuntu xenial-updates/universe i386 Packages [685 kB]                       Descargados 3.446 kB en 25s (134 kB/s)                                                                                                       Leyendo lista de paquetes... Hecho

instalamos los prerequisitos:

slack@ubuntu:~$ sudo apt-get install \
>     apt-transport-https \
>     ca-certificates \
>     curl \
>     gnupg-agent \
>     software-properties-common
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias    
Leyendo la información de estado... Hecho
apt-transport-https ya está en su versión más reciente (1.2.31).
ca-certificates ya está en su versión más reciente (20170717~16.04.2).
curl ya está en su versión más reciente (7.47.0-1ubuntu2.13).
software-properties-common ya está en su versión más reciente (0.96.20.8).
Se instalarán los siguientes paquetes adicionales:
  gnupg2
Paquetes sugeridos:
  gnupg-doc parcimonie xloadimage
Se actualizarán los siguientes paquetes:
  gnupg-agent gnupg2
2 actualizados, 0 nuevos se instalarán, 0 para eliminar y 761 no actualizados.
Se necesita descargar 995 kB de archivos.
Se utilizarán 0 B de espacio de disco adicional después de esta operación.
¿Desea continuar? [S/n] S
Des:1 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 gnupg-agent amd64 2.1.11-6ubuntu2.1 [240 kB]
Des:2 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 gnupg2 amd64 2.1.11-6ubuntu2.1 [755 kB]
Descargados 995 kB en 5s (174 kB/s)
(Leyendo la base de datos ... 312021 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../gnupg-agent_2.1.11-6ubuntu2.1_amd64.deb ...
Desempaquetando gnupg-agent (2.1.11-6ubuntu2.1) sobre (2.1.11-6ubuntu2) ...
Procesando disparadores para man-db (2.7.5-1) ...
Configurando gnupg-agent (2.1.11-6ubuntu2.1) ...
(Leyendo la base de datos ... 312021 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../gnupg2_2.1.11-6ubuntu2.1_amd64.deb ...
Desempaquetando gnupg2 (2.1.11-6ubuntu2.1) sobre (2.1.11-6ubuntu2) ...
Procesando disparadores para man-db (2.7.5-1) ...
Procesando disparadores para install-info (6.1.0.dfsg.1-5) ...
Configurando gnupg2 (2.1.11-6ubuntu2.1) ...

Configuramos y verificamos el certificado :

slack@ubuntu:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
OK
slack@ubuntu:~$ sudo apt-key fingerprint 0EBFCD88
pub   4096R/0EBFCD88 2017-02-22
      Huella de clave = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid                  Docker Release (CE deb) <docker@docker.com>
sub   4096R/F273FCD8 2017-02-22

Agregamos el repositorio Docker versión estable:

slack@ubuntu:~$ sudo add-apt-repository \
>    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
>    $(lsb_release -cs) \
>    stable"

Hacemos un nuevo update del sistema, vemos que nos detecta el repo de Docker :

slack@ubuntu:~$ sudo apt-get update
Obj:1 https://deb.nodesource.com/node_10.x xenial InRelease                                                                   Des:2 https://download.docker.com/linux/ubuntu xenial InRelease [66,2 kB]                                             Des:3 https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages [8.482 B]                         Ign:4 http://dl.google.com/linux/chrome/deb stable InRelease                                                                     Obj:5 http://dl.google.com/linux/chrome/deb stable Release                                                                         Des:7 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]                                               Obj:8 http://archive.canonical.com/ubuntu xenial InRelease                                                                         Obj:9 http://archive.ubuntu.com/ubuntu xenial InRelease                                                                             Obj:10 http://archive.ubuntu.com/ubuntu xenial-updates InRelease                                                             Descargados 184 kB en 8s (22,3 kB/s)                                                                                                           Leyendo lista de paquetes... Hecho

Instalamos los paquetes de Docker :

slack@ubuntu:~$ sudo apt-get install docker-ce docker-ce-cli containerd.io

Verificamos la instalación y su versión :

slack@ubuntu:~$ docker --version
Docker version 18.09.6, build 481bc77

Hasta aquí vemos que hemos instalado con éxito la versión 18 de Docker, ahora veremos como utilizar Docker para desplear un WAR jee en nuestro contenedor Docker.


Revisar la siguiente documentación en caso de instalación de ciertas versiones y des-instalación de nuestros paquetes, luego de esta revisión hice purge de los paquetes instalados y ejecute el siguiente comando :

slack@ubuntu:~$ sudo apt-get install docker-ce=5:18.09.6~3-0~ubuntu-xenial docker-ce-cli=5:18.09.6~3-0~ubuntu-xenial containerd.io

slack@ubuntu:~$ docker --version

Docker version 18.09.6, build 481bc77


Ahora instanciamos una aplicación hello world en nuestro contenedor :

slack@ubuntu:~$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:0e11c388b664df8a27a901dce21eb89f11d8292f7fca1b3e3c4321bf7897bffe
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/


Y huala !!