Si tenéis una Raspberry Pi actualizada o una Orange Pi usando el kernelEl kernel o núcleo del sistema operativo es la base de much... mainline, podéis empezar a experimentar con Docker del que ya hablé hace mucho tiempo por aquí y luego sobre una imagen ya preparada: HypriotOS un Raspbian con Docker listo para usar.
DockerDocker es un sistema de contenedores virtuales. Un contened... es un sistema de contenedores virtuales. Un contenedor es más simple que una máquina virtual, ya que en su interior solo incluye los librerías y programas que son diferentes a lo que tiene tu máquina, o sea, tu RaspbianRaspbian es un sistema operativo Linux libre basado en Debia... en Raspberry Pi¿Qué es una Raspberry Pi? Es un ordenador o computador com... o tu armbian en tu Orange Pi. La base de estos contenedores son las denominadas imágenes, una especie de mini iso que se compara con lo que hay en tu máquina y completa lo que falta o es diferente para crear el contenedor.
En primer lugar aseguraos de tener un kernelEl kernel o núcleo del sistema operativo es la base de much... mayor que 3.10, para ello en la Terminal ejecutáis este comando:
uname -a
Debe saliros una información más o menos como esta:
Donde podéis ver que pone LinuxGNU/Linux o solo Linux como se denomina para abreviar, es un... orangepione 4.9.0-sun8i
También es muy conveniente tener la dirección IP fija o estática, para ello podéis seguir las indicaciones de este post en Raspbian.
Así que si el número es mayor podéis seguir adelante e instalar desde TerminalLa Terminal o Interfaz de Línea de Comandos (CLI), por su...:
sudo apt install dockerDocker es un sistema de contenedores virtuales. Un contened....io
Comprobar que se ha instalado y funciona:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... info
DockerDocker es un sistema de contenedores virtuales. Un contened... funciona como un servicio o sea que podemos pararlo si queremos hacer algún cambio de configuración y luego ponerlo en marcha de nuevo:
sudo service dockerDocker es un sistema de contenedores virtuales. Un contened... stop
sudo service dockerDocker es un sistema de contenedores virtuales. Un contened... start
Otros comandos interesantes son los que nos permiten loguearnos en una cuenta de DockerDocker es un sistema de contenedores virtuales. Un contened..., creada previamente en su web https://hub.docker.com/ y aunque no es necesario puede sernos útil en el futuro:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... login
O saber que contenedores están en funcionamiento:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... ps
O saber todos los contenedores que tenemos, incluso los que están parados:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... ps -a
En el caso de que haya contenedores funcionando podemos ver su estado con:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... stats
Para salir de esta pantalla pulsamos Ctrl + C
OJO, las imágenes compatibles con Raspberry Pi¿Qué es una Raspberry Pi? Es un ordenador o computador com..., Orange Pi o similares son especiales para procesadores ARMLa arquitectura ARM describe un tipo de procesadores diseña... y la imágenes suelen marcarse como
rpi
o comoarmhfarmhf indica que un programa o sistema operativo está optim...
. Si no incluyen esto seguro que no funcionan.
Arrancar container con una imagen externa como base
El comando para iniciar un contenedor desde cero es:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... run -d -p puerto_real:puerto_container imagen
Un par de ejemplos:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... run -d -p 80:80 hypriot/rpi-busybox-httpd
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... run -d -p 8081:8081 resin/rpi-google-coder
El primer contenedor del ejemplo de arriba lo podremos ver con solo entrar con el navegador a su dirección IP vía web:
http://IP-fija-de-mi-maquina-con-docker/
El segundo contenedor necesita acceso seguro (https), aceptar la excepción de seguridad y especificar el puerto:
https://IP-fija-de-mi-maquina-con-docker:8081
Descargar imágenes
Si en vez de iniciar el contenedor desde cero queremos descargar las imágenes primero:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... pull imagen
Haríamos por ejemplo:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... pull hypriot/rpi-busybox-httpd
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... pull resin/rpi-google-coder
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... pull hypriot/rpi-alpine
Arrancar container en modo interactivo en la Terminal
Si en vez de arrancar el contenedor como un servicio, queremos conectarnos a él como si fuera otra TerminalLa Terminal o Interfaz de Línea de Comandos (CLI), por su...:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... run -t -i imagen /bin/bash
Por ejemplo, para iniciar la imagen de coder:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... run -t -i resin/rpi-google-coder /bin/bash
Arrancar y parar containers ya creados
Si ahora volvemos a mirar los contenedores funcionando y el total ce creados:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... ps
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... ps -a
Podremos ver una lista más o menos larga:
Aquí vemos que los contenedores tienen un identificador único que es código de letras y números largos del principio o un nombre aleatorio formado por dos partes: nombre-adjetivo
. Usando cualquiera de estas opciones para identificarlos, podremos parar los contenedores o arrancarlos si están parados:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... start container_por_nombre o ID
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... stop container_por_nombre o ID
Conectarse de forma interactiva a un container en funcionamiento
Si queremos ver o cambiar cosas en las tripas de un container que ya está en marcha, podemos conectarnos a él si por ejemplo usa la shell bash
con su nombre o ID de la siguiente forma:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... exec -i -t container_por_nombre o ID /bin/bash
Borrar container incluso el volumen asociado
Si os habéis emocionado y puesto en marcha muchos contenedores. Si os preguntáis: ¿dónde se guardan las imágenes y contenedores creados en DockerDocker es un sistema de contenedores virtuales. Un contened...? os diré que vuestra carpeta es:
/var/lib/docker
Y que si os habéis emocionado y hay demasiados, lo mismo ha llegado el momento de borrarlos.
OJO que cada contenedor debe estar parado,
stop
, antes de borrarlo y que tienen un volumen asociado para los archivos temporales que podemos eliminar también con la opción-v
Usando los nombres o identificadores, ID, separados por espacios podéis borrarlos con este comando:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... rm -v container1 container2
¿Que hay en esa carpeta /var/lib/docker además de container?
Imágenes
Pues en esa carpeta están las Imágenes que hemos descargado y usado, podemos verlas con el comando:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... images
Borrar imágenes de dockerDocker es un sistema de contenedores virtuales. Un contened...
Si también nos hemos emocionado y hay muchas las podemos borrar, siempre que no la esté usando ningún container:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... rmi imagen_por_nombre o ID
Volúmenes
Cada container se basa en una imagen de referencia y al ponerlo en marcha crea un volumen para los archivos temporales que necesita, podemos verlos con:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... volume ls
Borrar volúmenes de dockerDocker es un sistema de contenedores virtuales. Un contened...
Si cuando borramos el contenedor no usamos la opción -v
, habrá volúmenes abandonados que podemos borrar:
sudo dockerDocker es un sistema de contenedores virtuales. Un contened... volume rm volumen_por_nombre
Y esto es todo lo que por ahora he probado, espero que os animéis y os convirtáis en maestros de Docker.