martes, 25 de junio de 2019

Docker Community Edition (CE) en Ubuntu GNU/Linux 19.04


Como ya hablamos con anterioridad de la tecnología Docker, continuaremos sin dar mucho preámbulo de los conocimiento básicos de la gestión de contenedores. 
Continuamos con el tema de instalación, gestión y configuración. ahora abordaremos en la distribución de GNU/Linux Ubuntu versión 19.04.

Instalación. 

Como ya sabemos Docker es nativo de Linux, por ello la instalación en GUN/Linu es mucho mas fácil de lo que muchos creen en ambientes para desktop. 

Instalación en Ubuntu versión 19.04.


Si usas el shell de el sitio oficial para instalación de docker en ubuntu ver. 19.04


#   $ curl -fsSL https://get.docker.com -o get-docker.sh
#   $ sh get-docker.sh

de script  en https://get.docker.com/
(el cual funciona perfecto para distribuciones menos a 19.04)

Esta opción por lo menos a mi en versión 19.04 no me ayudo. de igual forma intente con los comandos directamente nativos de Ubuntu (hay dos opciones que se listan a continuación)

opción uno instalar docker en su versión estable para sistema Linux 
opción dos instalar la versión beta 

usar la opción siguiente NO fue para mi la mejor, me explico.

sudo snap install docker 

al termino nos indica que docker ya fue instalado, ahora si escribimos la palabra docker de nuevo tendremos un resultado como este 

oposada@gnulinux:~$ docker
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers


Video de Ejemplo



esto podría ser bueno de primera, ya que el objetivo es instalarlo. pero hay que ver mas al fondo, y buscando las opciones recopile algunos comandos que en lo particular me ayudaron a tenerlo en la versión 19.04 de GUN/Linux Ubuntu.


¿Que ejecutamos distinto?


curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable edge"
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable edge test"
sudo apt-get update
apt-cache policy docker-ce
 
A este punto mi resultados en terminal fueron los siguientes
 
oposada@gnulinux:~/Docker$ apt-cache policy docker-ce
docker-ce:
  Instalados: (ninguno)
  Candidato:  5:19.03.0~2.3.rc3-0~ubuntu-disco
  Tabla de versión:
     5:19.03.0~2.3.rc3-0~ubuntu-disco 500
        500 https://download.docker.com/linux/ubuntu disco/test amd64 Packages
     5:19.03.0~2.2.rc2-0~ubuntu-disco 500
        500 https://download.docker.com/linux/ubuntu disco/test amd64 Packages
     5:19.03.0~1.5.beta5-0~ubuntu-disco 500
        500 https://download.docker.com/linux/ubuntu disco/test amd64 Packages
     5:19.03.0~1.4.beta4-0~ubuntu-disco 500
        500 https://download.docker.com/linux/ubuntu disco/test amd64 Packages
     5:19.03.0~1.3.beta3-0~ubuntu-disco 500
        500 https://download.docker.com/linux/ubuntu disco/test amd64 Packages
     5:19.03.0~1.2.beta2-0~ubuntu-disco 500
        500 https://download.docker.com/linux/ubuntu disco/test amd64 Packages
     5:19.03.0~1.1.beta1-0~ubuntu-disco 500
        500 https://download.docker.com/linux/ubuntu disco/test amd64 Packages 
 Ahora por fin a instalarlo con el siguiente comando


sudo apt-get install -y docker-ce

Resultado
oposada@gnulinux:~/Docker$ sudo apt-get install -y docker-ce
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias      
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes adicionales:
  aufs-tools cgroupfs-mount containerd.io docker-ce-cli pigz
Se instalarán los siguientes paquetes NUEVOS:
  aufs-tools cgroupfs-mount containerd.io docker-ce docker-ce-cli pigz
0 actualizados, 6 nuevos se instalarán, 0 para eliminar y 3 no actualizados.
Se necesita descargar 87.8 MB de archivos.
Se utilizarán 390 MB de espacio de disco adicional después de esta operación.
Des:1 http://mx.archive.ubuntu.com/ubuntu disco/universe amd64 pigz amd64 2.4-1 [57.4 kB]
Des:2 https://download.docker.com/linux/ubuntu disco/test amd64 containerd.io amd64 1.2.6-3 [22.6 MB]
Des:3 http://mx.archive.ubuntu.com/ubuntu disco/universe amd64 aufs-tools amd64 1:4.9+20170918-2 [104 kB]
Des:4 http://mx.archive.ubuntu.com/ubuntu disco/universe amd64 cgroupfs-mount all 1.4 [6 320 B]
Des:5 https://download.docker.com/linux/ubuntu disco/test amd64 docker-ce-cli amd64 5:19.03.0~2.3.rc3-0~ubuntu-disco [42.3 MB]
Des:6 https://download.docker.com/linux/ubuntu disco/test amd64 docker-ce amd64 5:19.03.0~2.3.rc3-0~ubuntu-disco [22.7 MB]
Descargados 87.8 MB en 1min 23s (1 061 kB/s)                                  
Seleccionando el paquete pigz previamente no seleccionado.
(Leyendo la base de datos ... 210160 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../0-pigz_2.4-1_amd64.deb ...
Desempaquetando pigz (2.4-1) ...
Seleccionando el paquete aufs-tools previamente no seleccionado.
Preparando para desempaquetar .../1-aufs-tools_1%3a4.9+20170918-2_amd64.deb ...
Desempaquetando aufs-tools (1:4.9+20170918-2) ...
Seleccionando el paquete cgroupfs-mount previamente no seleccionado.
Preparando para desempaquetar .../2-cgroupfs-mount_1.4_all.deb ...
Desempaquetando cgroupfs-mount (1.4) ...
Seleccionando el paquete containerd.io previamente no seleccionado.
Preparando para desempaquetar .../3-containerd.io_1.2.6-3_amd64.deb ...
Desempaquetando containerd.io (1.2.6-3) ...
Seleccionando el paquete docker-ce-cli previamente no seleccionado.
Preparando para desempaquetar .../4-docker-ce-cli_5%3a19.03.0~2.3.rc3-0~ubuntu-disco_amd64.deb ...
Desempaquetando docker-ce-cli (5:19.03.0~2.3.rc3-0~ubuntu-disco) ...
Seleccionando el paquete docker-ce previamente no seleccionado.
Preparando para desempaquetar .../5-docker-ce_5%3a19.03.0~2.3.rc3-0~ubuntu-disco_amd64.deb ...
Desempaquetando docker-ce (5:19.03.0~2.3.rc3-0~ubuntu-disco) ...
Configurando aufs-tools (1:4.9+20170918-2) ...
Configurando containerd.io (1.2.6-3) ...
Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /lib/systemd/system/containerd.service.
Configurando docker-ce-cli (5:19.03.0~2.3.rc3-0~ubuntu-disco) ...
Configurando pigz (2.4-1) ...
Configurando cgroupfs-mount (1.4) ...
Configurando docker-ce (5:19.03.0~2.3.rc3-0~ubuntu-disco) ...
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.
Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket.
Procesando disparadores para systemd (240-6ubuntu5.1) ...
Procesando disparadores para man-db (2.8.5-2) ...
Procesando disparadores para libc-bin (2.29-0ubuntu2) ...

ahora Valido que los servicios se encuentren funcionando de forma correcta con el siguiente comando.

sudo systemctl status docker


 Ejemplo

oposada@gnulinux:~/Docker$
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: e
   Active: active (running) since Tue 2019-06-25 12:30:35 CDT; 31s ago
     Docs: https://docs.docker.com
 Main PID: 8006 (dockerd)
    Tasks: 11
   Memory: 39.7M
   CGroup: /system.slice/docker.service
           └─8006 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/contain

jun 25 12:30:31 gnulinux dockerd[8006]: time="2019-06-25T12:30:31.284860920-05:0
jun 25 12:30:31 gnulinux dockerd[8006]: time="2019-06-25T12:30:31.285046663-05:0
jun 25 12:30:31 gnulinux dockerd[8006]: time="2019-06-25T12:30:31.285069037-05:0
jun 25 12:30:31 gnulinux dockerd[8006]: time="2019-06-25T12:30:31.285388034-05:0
jun 25 12:30:32 gnulinux dockerd[8006]: time="2019-06-25T12:30:32.184641113-05:0
jun 25 12:30:32 gnulinux dockerd[8006]: time="2019-06-25T12:30:32.495037170-05:0
jun 25 12:30:34 gnulinux dockerd[8006]: time="2019-06-25T12:30:34.979634999-05:0
jun 25 12:30:34 gnulinux dockerd[8006]: time="2019-06-25T12:30:34.979785483-05:0
jun 25 12:30:35 gnulinux dockerd[8006]: time="2019-06-25T12:30:35.310312186-05:0
jun 25 12:30:35 gnulinux systemd[1]: Started Docker Application Container Engine
 


Ahora corremos el contenedor default "hello-word" 
Comando: sudo docker run hello-world 

Ejemplo 
 oposada@gnulinux:~/Docker$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:41a65640635299bab090f783209c1e3a3f11934cf7756b09cb2f1e02147c6ed8
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/


ahora ya tenemos instalado Docker en nuestro sistema GNU/Linux Ubuntu verción 19.04

Video de Ejemplo. 

Para la gestión, al igual que en windows y en MacOS tenemos la herramienta 

sitio oficial 
https://kitematic.com/

esta fantastica tool nos yauda al manejo de los contenedores en nuestro ambiente. 

Descarga la aplicación kitematic e instalala dando doble clic desde el icono de la solución (Como en windows)


o desde la terminal de Linux

Comando
sudo dpkg -i Kitematic-0.17.7_amd64.deb


Resultadtenemos un entorno de escritorio para poder descargar y manejar nuestros contenedores 
 
Solución de problemas comunes

Es comun que al inicio cuando instalamos esta solución, a diferencia de windows o sistemas macOS en linux tenemos mucha variedad de distribuciones y en cada distribución varia la ruta y nombre de la terminal. 

hay un detalle que se tiene que revisar con especial atención al termino de iniciar nuestra aplicación Kitematic y esta es la configuración de la terminal. para validar ello preciona el boton "exec" del cliente Kitematic

en mi equipo con ubuntu 19.04 el resultado fue el siguiente.

 Para solucionar ello solo hay que ir a la opción de configuración de Kitematic 

 
Con esto terminamos este post, esperoles ayude. saludos. desde México.

domingo, 23 de junio de 2019

Ubuntu 19.04 | primeros pasos una vez instalado.

GNU/Linux Ubuntu. Mas de 16 años, es mi sistema operativo en casa para mi uso recreativo, afortunadamente no es el único, cuento con mas de 5 sistemas operativos en casa. Afortunadamente tengo los recursos para poder disfrutar de una variedad de ellos (y los equipos).

No es que me guste sufrir con sistemas operativos de código abierto,  mas bien es por el detalle (creo) de poder ser "libre", en estos meses se libero la versión 19.04 de este sistema operativo alternativo a Microsoft Windows y a macOs de la empresa de la manzana, en esta entrada te mostraré que es lo que en mi particular opinión ejecute e instale posteriormente a su instalación, para que te des una idea de por donde iniciar si te estas de turista por estos sistemas operativos libres. 

Primero que nada ¿por que uso GNU/Linux Ubuntu?
en realidad uso los sistemas operativos "Microsoft Windows 10, macOs y linux" por lo regular Linux y Windows lo uso por temas de trabajo, es decir soy informático por pasión y gusto, tengo tatuado el código binario en el pecho, sin embargo por cuestiones profesionales Linux en distribuciones como CentOS, RedHat y Kali son el pan de cada día. 

Ubuntu lo conocí por un camarada de la preparatoria "Ruben Cornejo" quien me regalo un disco de Ubuntu 10" (aun tengo ese disco Rub, lo guardo como un tesoro). anteriormente tenia Linux Mandriva, CentOS, Fedora y Arch instalado en mi computadora personal, pero ubuntu en esos inicios me enamoro, ¿por que? por que es fácil. vera, somos informáticos, en ocasiones nos agrada lo complicado, pero Ubuntu tiene un potencial enorme para poder ingresar a casa por que es "fácil" su enterno grafico y gestor de Software lo hace una competencia real y viable a Windows y macOS. 

así que "Ruly, Santy, Citla, Nando, Edu, Pau" pronto les tocara darle una oportunidad. 

Primeros pasos, primeramente la instalación, es su fácil y rápido. en cuanto termine el asisten de instalación el equipo pedirá reinicio y al mostrar el escritorio ya podemos iniciar con estos primeros pasos para poder disfrutar de este sistema operativo libre. 

Instalación de exfat-utils 

es normal al inicio de nuestros pasos por gnu/linux que tengamos un error al querer montar un disco duro o una memoria USB con formato "exFAT" nos saldría una ventana como esta cuando iniciáramos un dispositivo con este formato. 

La solución es desde la terminal instalar con el siguiente comando las utilitarias requeridas para el sistema operativo GNU/Linux  para poder usar este tipo de formatos.

sudo apt install exfat-fuse exfat-utils
 
 
al termino de la instalación de las utilitarias ya podremos sin ningún problema usar 
dispositivos con esta exención.
 

Extensiones "gnome-shell-extensions" una forma de personalizar tu escritorio.

 
Para poder usar las extensiones primero tenemos que permitirlas, ya que por defecto 
no están habilitadas. Para habilitar las extensiones de Gnome en el escritorio de ubuntu 19.04
es requerido instalar 
sudo apt install chrome-gnome-shell
sudo apt install gnome-tweak-tool
sudo apt install gnome-shell-extensions
gnome-shell --version 
 
 
 
Al terminal la instalación podremos encontrar la aplicación "retoque" en nuestro menú de
programas, para localizar el programa presiona menú inicio (si tu computadora tiene la tecla con el icono) y escribe retoque.


 con esto listo, ya podemos ir al sitio de extensiones para GNOME
Aqui podremos encontrar sin fin de extensiones muy útiles para nuestro escritorio.  



Un ejemplo de ello es la extensión "OpenWeather" la cual nos da el sistema meteorológico. Otras extensiones que uso son "EasyScreenCast" para grabar mis actividades en video de mi escritorio y "Caffeine".

Instalación de programas

La instalación de programas en gnu/linux ubuntu no es algo muy similar al instalar un programa en un dispositivo móvil o un celular, hay que ir a "Software de Ubuntu" donde encontraremos todo tipo de software listo para ser instalado en nuestro sistema. 


Video de referencia o ejemplo. 


Verdad que ahora que lo practicas gnu/linux ya no parece algo solo para guros o genios informáticos. mas adelante continuaremos explorando el mundo del gnu/linux y sus funcionalidades similares y alternativas a software de paga o propietario como Microsoft Windows y macOS, todo software propietario en windows tiene una alternativa libre, gratuita en gnu/linux. 

gracias y saludos desde México. 

Docker en macOS Mojave | Instalación & Gestión de “Contenedores” (Containers)

Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software.

Organizaciones de todos los segmentos de negocio hoy quieren entender que son los contenedores, que significan para las aplicaciones en la nube y como pueden usarlos.

proporcionando una capa adicional de abstracción y automatización de virtualización de aplicaciones en múltiples sistemas operativos.
 
Docker utiliza características de aislamiento de recursos del kernel Linux, tales como cgroups y espacios de nombres (namespaces) para permitir que "contenedores" independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales.

El soporte del kernel Linux para los espacios de nombres aísla la vista que tiene una aplicación de su entorno operativo,​ incluyendo árboles de proceso, red, ID de usuario y sistemas de archivos montados, mientras que los cgroups del kernel proporcionan aislamiento de recursos, incluyendo la CPU, la memoria, el bloque de E/S y de la red. 

Desde la versión 0.9, Docker incluye la biblioteca libcontainer como su propia manera de utilizar directamente las facilidades de virtualización que ofrece el kernel Linux, además de utilizar las interfaces abstraídas de virtualización mediante libvirt, LXC (Linux Containers) y systemd-nspawn.

De acuerdo con la firma analista de la industria Research, Docker es una herramienta que puede empaquetar una aplicación y sus dependencias en un contenedor virtual que se puede ejecutar en cualquier servidor Linux. Esto ayuda a permitir la flexibilidad y portabilidad en donde la aplicación se puede ejecutar, ya sea en las instalaciones físicas, la nube pública, nube privada.

Instalación de Docker en Mac Os 


 
Primero fui al portal oficial de docker, donde descargue el producto para sistema operativo macOS




A diferencia de Windows o Linux, en sistema operativo macOS el procedimiento de instalación de un producto o software es arrastrando a la carpeta de aplicaciones, donde el propio sistema se encarga de auto instalar el producto o software. 



Como en Linux, antes de iniciar el procedimiento de instalación el sistema macOS solicita autorización para iniciar con la instalación del producto. 

La instalación es rápida, previamente me registre en el portal docker hub, donde se pueden descargar en el futuro los “Contenedores” (Containers).para uso de micro servicios o procesos de DepOps.  

Valide con comandos el estatus de docker. comparto algunos comandos mas usados para temas de administración y gestión.

Estos son los comandos que he necesitado para hacer funcionar Docker en un entorno ST.
Construir una imagen:

docker build --build-arg -t .

Construir una imagen detrás de un proxy:

docker build --build-arg http_proxy=http://: --build-arg https_proxy=http://: -t .

Hacer pull de una imagen ya construida:

docker pull nginx:1.13-alpine

Añadir un TAG a una imagen:

docker tag :

Inspeccionar una imagen:

docker inspect

Guardar imagen en un fichero TAR:

docker save > .tar

Eliminar imagen:

docker rmi :

Eliminar todas las imágenes:

docker rmi `docker images -q`

Ejecutar contenedor:

docker run -v : -it --name -d

Eliminar contenedor:

docker rm

Eliminar todos los contenedores parados:

docker rm `docker ps -a -q`

Lista de imágenes:

docker images

Ver contenido de una imagen:

docker run -it image_name sh

Lista contenedores en ejecución:

docker ps -a

Conectar a un contenedor en ejecución:

docker exec -i -t a9ddb677957f /bin/bash

Build Docker-Compose:

docker-compose build

Configurar Dockerfile para mantener el docker en ejecución:

CMD tail -f /dev/null

Up Docker-Compose segundo plano:

docker-compose up -d

Ver salida de Docker-Compose:

docker-compose logs -f -t

Detener un Docker-Compose:

docker-compose down

Detener un Docker-Compose y eliminar volúmenes:

docker-compose down -v

Ver Docker-Compose en ejecución:

docker-compose ps

Ejecutar un comando en un conenedor de docker-compose:

docker-compose exec /bin/bash

Eliminar Docker-Compose detenidos:

docker-compose rm

Espero que sea de utilidad

Si prefieres mas la administración desde una cama de GUI o interfaces grafica de usuari, recomiendo ampliamente instalar "Kitematic" es cual agrega una cama de administración con interface la cual facilita en mucho la administración, descarga y administración de contenedores. 



Kitematic, ayuda enormemente a la gestión de contenedores, la descarga y administración de los mismos se facilita en mucho con esta GUI de administración.



Para La descarga de los contenedores, se erquiere estar firmado previamente a Docker Hub, una vez que este el login de docker hub podra ver todos los contenedores lso cuaels estan certificados por docker, algunos otros en proceso de certificación asi como sus propios contenedores desarollados por usted mismo segun sea el caso. 

Para descargar y usar un contenedor no es otra cosa que buscar el contenedor que su servicio o micro servicio requiere. 



Esperar la descarga y el termino del proc4edimiento de inicio del contenedo, al termino del rocedimiento automatico de descarga y "run on" podras ver el contenedor listo para ser usado.












Hay contenedores no certificados por Docker los cuales no son de utilidad, puedes buscar en docker hub contenedores que se acomoden a tus requerimietnos o demandas, solo que en ocaciones te encontraras con contenedores en mal estado los cuales no funcionan como esperas, en este ejemplo descarge este contenedor el cual yo esperaba que tuviera configuracioens en concreto requeridas para un escenario en particular, para mi sorpresa, el contenedor no funciona. 




En resumen, docker es una excelente solución de despliege automatico de servicios o micro servicios. existen muchas posibilidades no solo de despliegue y desarollo como compo de utilidad, Seguridad, infraestructura, desarrollo, Dbs, las areas de uso son infinitas.