diumenge, 17 de juliol del 2016

Preguntas frecuentes sobre Docker para usuarios de Windows

he copiat el següent articleliteralment


http://www.joseangelfernandez.es/blog/2015/03/preguntas-frecuentes-sobre-docker-para-usuarios-de-windows/

Preguntas frecuentes sobre Docker para usuarios de Windows

En artículos anteriores ya he estado haciendo una introducción de qué es Docker y cómo empezar a usarlo desde nuestros equipos con Windows o a través de Microsoft Azure. Sin embargo, para los usuarios acostumbrados a trabajar con Windows Server, no suele ser sencillo comprender las nuevas posibilidades que ofrece y cómo funciona. A través de Twitter llegué al blog de Richard Seroter donde recopilaba una buena colección de preguntas y respuesta enfocadas a aquellos usuarios que usan Windows. Tras pedirle permiso para adaptarlo al español os dejo a continuación con la colección de preguntas y respuestas.

P: ¿Es Docker otra forma de virtualización?
R: En cierta manera se podría considerar así. Su objetivo fundamental es proporcionar la capacidad de ejecutar contenedores ligeros que permitan aislar ciertos procesos del resto del sistema operativo. Cuando hablamos de procesos estos pueden ser una aplicación web, una base de datos, un balanceador de carga o prácticamente cualquier cosa que deseemos. A diferencia de las máquinas virtuales, un contenedor no proporciona el mismo nivel de funcionalidad pero sí que simplifica los procesos de creación, uso y destrucción de los mismos. En algunos casos, el uso de contenedores es conocido como virtualización a nivel de sistema operativo, algo que se adecúa a la realidad ya que cada contenedor obtiene su propio espacio de ejecución y recursos dentro del sistema operativo anfitrión.
P: ¿Cómo se diferencian los contenedores de Docker de una máquina virtual?
R: Cuando estamos haciendo uso de una máquina virtual ejecutada sobre Hyper-V por ejemplo, estamos realizando una virtualización completa del sistema operativo invitado empleando los recursos del servidor físico disponible por debajo. Usando contenedores como los que ofrece Docker estamos aislando únicamente procesos y sus dependencidas. Un contenedor comparte el kernel de Linux con otros contenedores y el propio sistema operativo anfitrión. Es decir, en lugar de ejecutar una copia completa del sistema operativo como las máquinas virtuales hacen, los contenedoes se resumen a un directorio dentro del sistema operativo que contiene todo lo necesario para ejecutarse.
P: ¿Docker == contenedores?
R: No, Docker únicamente se refiere al demonio que compila, ejecuta y distribuye los contenedores.
Q: ¿Puedo funcionar algo como Docker de forma nativa en Windows?
R: No realmente. A día de hoy no es posible contar con una solución similar a Docker que se ejecute en Windows. Gracias al acuerdo de Microsoft con Docker será posible disponer de una solución similar ejecutándose sobre la siguiente versión de Windows Server. A día de hoy, ya podemos disponer del cliente de Docker de forma nativa en Windows.
Para poder lograr que el demonio de Docker se ejecute de forma nativa es necesario que el núcleo de Windows proporcione características similares a las que ofrece el kernel de Linux y que posibilitan esta tecnología:
  • Namespaces: proporcionan el aislamiento necesario de los recursos utilizados por los contenedores
  • Grupos de control: permiten gestionan los límites de recursos que los contenedores pueden utilizar para evitar que acaparen todo lo disponible. Algo similar a lo que Hyper-V permite con las opciones de QoS sobre la red, el almacenamiento y la memoria
  • Union File Systems: un sistema de ficheros basado en capas que permita crear proyecciones a partir de diferentes copias de la estructura de nuestro árbol de directorios en una sola.
  • Fomato definido de contenedores: la estructura que defina qué es un contenedor y que se integra con los elementos anteriores para dar forma a la solución. En Linux a día de hoy se soporta libcontainer y LXC
P: ¿Qué es una imagen de Docker?
R: Las imágenes son plantillas de solo lectura usadas para crear los contenedores. Es posible crear nuestras propias imágenes, actualizar las ya existentes o descargarlas a partir de registros disponibles como Docker Hub. Las imágenes descargadas se almacenan en el host local de Docker y se pueden utilizar para crear nuevos contenedores. Cada vez que una imagen es modificada se le añade una nueva capa. De esta forma es posible distribuir los cambios de forma sencilla sin la necesidad de distribuir toda la imagen completa.
P: ¿Cuánto ocupan las imágenes de Docker?
R: Las imágenes que se usan como base pueden ocupar de unos cientos de megabytes hasta unos pocos gigabytes. A partir de ahí, cada capa que se añade a la imagen base suele ser de un tamaño más pequeño aunque es necesario tener en cuenta que las dependencias pueden hacer que nuestro contenedor crezca más de lo esperado.
P: ¿Qué posibilidades ofrece Docker a la hora de mover nuestros contenedores entre diferentes servidores?
R: A diferencia de las máquinas virtuales que están asociadas a un hipervisor específico y su tamaño suele ser considerable, los contenedores pueden ser ejecutados en cualquier plataforma en la que Linux se ejecute y se pueden construir de forma rápida a partir de pequeñas imágenes.
P: ¿Es posible ejecutar Docker sobre Windows??
R: A día de hoy no es posible realizarlo de forma nativa. Si estás interesado es necesario realizarlo a través de una pequeña máquina virtual que proporcione los elementos necesario de Linux para ejecutarse. Soluciones como Boot2Docker simplifican dicho proceso.
P: ¿Es posible ejecutar más de un proceso en un contenedor de Docker?
R: Técnicamente sí es posible; sin embargo, el equipo de Docker recomienda que cada contenedor ejecute un único proceso.
P: ¿Una aplicación Dockerizada es portable a cualquier host que ejecute Linux?
R: El objetivo es que así sea; es decir, que un desarrollador sea capaz de ejecutar una imagen creada en Ubuntu sobre una máquina que esté ejecutando Red Hat. Sin embargo, es posible que aparezcan problemas en el caso de que las herramientas instaladas dependan de ciertas características en el kernel de Linux que no están disponibles en la máquina destino.
P: ¿Cómo se gestionan los datos de una aplicación Dockerizada?
R: Cuando sales de un contenedor, la capa de lectura y escritura de ficheros disponible desaparece. Si quieres mantener los datos una de las opciones es guardar el contenedor como una nueva imagen de nuestro repositorio. Sin embargo, Docker recomienda el uso de volúmenes de datos dentro de los contenedores o contenedores enfocados a realizar esa tarea en su lugar. La siguiente pregunta en StackOverflow propociona una buena visión sobre este tema. Soluciones externas como Flocker también pueden resultar útiles.
P: ¿Hay alguna distribución de Linux que sea mejor que otra para ejecutar Docker?
R: No. Existen distribuciones de Linux enfocadsa a soluciones de contenedores como CoreOS; sin embargo, es posible ejecutar Docker de forma sencilla en otras distribuciones como SUSE o Ubuntu. En ambos casos, recuerda que es necesario utilizar alguna de las versiones más recientes disponibles de tu distro.
P: ¿Qué tipo de software es posible ejecutar en un contenedor de Docker?
R: Realmente, cualquier cosa que se ejecute sobre Linux debería ser capaz de ejecutarse en un contenedor.
P: ¿Necesito usar la nube para ejecutar Docker?
R: No, no es necesario. Es posible ejecutar Docker en máquinas virtuales (locales o en la nube), máquinas físicas (locales o en la nube) o en servicios online basados en la solución de Docker.
P: ¿Qué tecnologías están relacionadas con Docker y debería tener en cuenta?
R: La nueva tendencia de aplicaciones basadas en microservicios y contenedores fuerza a los desarrolladores a aprender una serie nueva de conceptos. Es posible que no estés acostumbrado a herramientas de despliegue de contenedores como Fleet, herramientas de orquestación de contenedores como Kubernetes o herramientas de descubrimiento de servicios como Zookeeper o Consul; sin embargo, es un buen momento para comenzar a leer sobre ello.
P: ¿Es una tecnología aún inmadura?
R: Los contenedores es una tecnología con una evolución muy rápida, es posible que Docker esté madura para ser usada en el mundo empresarial mucho antes que las propias empresas lo estén. La seguridad es un área preocupa a día de hoy sobre todo y las guías de arquitectura y despliegue de soluciones basadas en Docker aún están en desarrollo.
P: Ok, estoy más convencido ahora de probarlo. ¿Cuál es la forma más sencilla de comenzar en Windows?
R: Configura Hyper-V en tu equipo, descarga una imagen de Ubuntu e instala Docker. A partir de ahí, sigue los ejemplos disponibles en la propia página de Docker.
Espero que estas preguntas te ayuden a tener una mejor visión de qué es Docker y qué implicaciones tiene en este nuevo mundo de opciones que abre para los profesionales de infraestructura. Muchas gracias a Richard por dejarme utilizar su artículo como base de este.

dissabte, 16 de juliol del 2016

instalar docker en kali linux

  punt de partida https://openwebinars.net/instalar-docker-en-kali-linux/

A nivel de productividad Docker es un indiscutible candidato a hacerse un hueco entre las aplicaciones indispensables para los administradores de sistemas, puesto que es liviana, ágil, tiene un catálogo de contenedores impresionante y es muy estable. Y por si fuera poco ahora vienen los de Kali Linux y nos dan ¡¡un contenedor y un script para hacernos nuestro propio Kali!!

Instalar Docker

 

- Instalación Docker: Lo primero que haremos será descargar la clave gpg de Docker.

wget https://get.docker.io/gpg

- La añadiremos al sistema.

apt-key add gpg

- Editaremos el archivo source.list para meter los repositorios de Docker.

 nano /etc/apt/sources.list

- Añadiendo al final del documento la siguiente línea:

deb http://get.docker.io/ubuntu docker main

- Actualizamos los repositorios.

apt-get update

- Añadimos el repositorio de Docker a la lista de fuentes de apt, como ya nos enseñaba nuestro amigo Jesús Lucas en un post anterior.

sh -c "echo deb http://get.docker.io/ubuntu docker main \ > 
/etc/apt/sources.list.d/docker.list" 

sudo apt-get install apt-transport-https
 
sudo apt-get update

- Instalamos la paquetería principal de Docker.

sudo apt-get install lxc-docker
- Descargamos la imagen de Kali Linux para Docker.

docker pull kalilinux/kali-linux-docker
- Y la iniciamos.

docker run –i –t kalilinux/kali-linux-docker /bin/bash

- Desde este punto solo quedaría instalar la paquetería que quisiéramos en el contenedor, de forma totalmente aislada de nuestro sistema anfitrión.

- Podemos ver un listado de los contenedores de Docker que hemos creado con el siguiente comando.

docker ps –a

- La ID de los contenedores es compleja de recordar, por lo que editaremos la id de nuestra imagen de Kali con la siguiente fórmula: docker commit IDActual IDNuevo.

docker commit 0083b0ca865e mikali

- Para conectarnos directamente al contenedor podremos usar este comando.

docker run –i –t –p 80:80 mikali /bin/bash

Por si todo esto no os bastase, desde Kali Linux nos ofrecen un script para que nos “montemos” nuestro propio Kali en cualquier contenedor (aquí para descargar). Yo lo he probado y es muy fácil editarlo puesto que trae comentarios de lo que va realizando en cada momento el script.



 

 

The method driver /usr/lib/apt/methods/http could not be found.

$ sudo apt-get update
E: The method driver /usr/lib/apt/methods/http could not be found.

solució

sudo apt-get install apt-transport-https