Usuario:ManuelRomero/docker

Acciones básicas
sudo docker run --name dwes_cordoba -ti ubuntu:14.04 acceder al fichero /etc/enviroment
 * Arranca un terminal de contenedor nuevo para probar algo a partir de la imagen ubuntu:14.04
 * Con esto ya tengo un contenedor creado, llamado dwes_cordoba para probar cosas
 * Una vez que cierre el contenedor lo puedo volver a abrir cuando quiera
 * Modificando variables de entorno tipo PATH

sudo docker build -t iternova/web. Crea una imagen llamada iternova de tag web con el contenido del dockerfile que hay en el mismo directorio El nombre/tag no puede tener mayúsculas El volumen se especifica para cada contenedor sudo docker run --name iternova -v /var/www/iternova:/var/www -dti iternova/web arranca un contenedor llamado iternova creando un volumen /var/www/iternova en el contenedor con /var/www que está en el host -dti (background terminal e interactivo) de una imagen llamada iternova
 * Creando una imagen a partir de un fichero dockerfile ubicado en el directorio actual
 * Accion
 * Restricciones
 * Poniendo un volumen
 * descripción
 * Arrancando acciones (servicios activos) en el contenedor

Qué es docker

 * No es una máquina virtual.
 * Con docker se generan “containers” independientes para ejecutarse en una simple instancia de Linux, por lo que para tener diferentes configuraciones de entornos de desarrollo, no necestiamos tener diferentes máquinas virtuales. Un solo sistema operativo para n entornos o configuraciones diferentes de entornos de desarrollo basados en containers.

Instalando docker

 * Instalando la última version de docker (acutalmente 1.9 (Versión estable)

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 root@ubuntu1404:~# sh -c "echo deb https://get.docker.com/ubuntu docker main >> /etc/apt/sources.list.d/docker.list"
 * Visualizando la versión
 * Instalando versión más reciente (experimental)
 * Añadiendo la clave pública/privada de docker
 * Añadimos el repositorio de docker en nuestro source.list

Crear un contenedor con volumenes a partir de una imagen
sudo docker run -t -i --name iternova5 -v /home/manolo/iternova:/local iternova-nagios-centreon-git /bin/bash

Ejecutar docker sin sudo
https://datafull.co/p/como-puedo-usar-docker-sin-sudo https://docs.docker.com/engine/security/security/

Dockfile
En un fichero dockerfile tendremos dos tipos de líneas
 * https://docs.docker.com/engine/reference/builder/
 * Sacado de esta página
 * Es un fichero de texto que me permite crear una imagen a partir de otra, y añadir una serie de comandos para instalar a esa imagen aplicaciones, servicios, librerías diversas con el objetivo de construirme una imagen para lanzar un contenedor personalizado a mis necesidades. Posteriormente puedo crear una imagen con ese contenedor.
 * Para ejecutar la máquina ejecutamos
 * Estructura del fichero
 * 1) comentarios (líneas que empiezan por #)
 * 2) Sentencias líneas que tiene una instrucción con una serie de argumentos para ejecutarlas
 * 3) Por se recomienda poner las instrucciones en mayúsculas

Instrucciones
FROM FROM : FROM @
 * FROM


 * Es la primera instrucción
 * Especifica la imagen base de la que parte la instalación que queremos hacer
 * En esta página puedes encontrar imágenes base de las cuales partir (hay miles)
 * En el FROM se puede especificar de forma opción el tag o digest (sirve para especificar la imagen, como por ejemplo la versión).
 * Lo primero que tenemos que especificar es la imagen de la que partimos instruccion FROM

MAINTAINER MAINTAINER Manuel Romero  RUN RUN ["ejecutable", "parametro1", "parametro2"]
 * MAINTAINER
 * Especifica el autor de la imagen y su correo
 * RUN


 * Ejecuta cualquier comando en la imagen que estamos usando. El resultado de la ejecución se puede tomar para el siguiente paso en el dockfile, por ejemplo si ejecuto la instalación de apache, en el siguiente comando puedo contar que apache ya está instalado
 * Es un comando muy utilizado.
 * Si usamos apt-get install especificaremos el flag -y para que no haga falta que sea interactivo y tome la decisión por defecto


 * Añadimos a nuestro fichero las siguientes librerías

Rehaciendo todo
sudo docker run -i -t debian:jessie /bin/bash apt-get update apt-get install apache2 sudo docker info
 * Creo un contenedor de debian
 * Instalo apache
 * Información de docker

sudo docker container_id nombre_imagen_creado
 * Hacer un commit, para fijar una imagen


 * Arrancar un contenedor a partir de un commit

Comandos para recordar
Ver los contenedores arrancadso docker ps Ver todos los contenedores del sistema docker ps -a Arrancar un contenedor parado sudo docker start nombreContenedor sudo docker exec -t -i nombreContenedor /bin/bash
 * Primero localizar su nombre o su id (docker ps -a)
 * Ahora cargamos bash para interactuar con ese comando

Referencias en la web

 * https://docs.docker.com/userguide/
 * https://www.youtube.com/playlist?list=PLfW3im2fiA7W9F4DbjmRDIZgAHsea20ON
 * http://www.muylinux.com/2016/04/19/tutorial-docker
 * https://github.com/brunocascio/docker-espanol (Muy bueno y práctico)