El objetivo del post de hoy, va a ser crear un contenedor con una sola línea de comandos, entrar dentro de este, instalar un servicio o aplicación e iniciarlo. Pero lo mejor de todo, es que vamos a utilizar una distro diferente para nuestro contenedor, creando un servidor con un Ubuntu 18.04 en una Raspberry con sistema operativo Raspbian.
De esta manera, podremos acceder a los repositorios de Ubuntu en su última versión, con paquetes totalmente actualizados utilizando Raspbian.
Parece muy complejo, pero es muy sencillo.
Vamos a instalar Docker desde los repositorios oficiales:
sudo apt install docker
También lo tenemos disponible en la paquetería snap, así que a dia de hoy, es muy sencilla su instalación.
Para no tener que utilizar Docker como usuario root y así evitar el tener que poner siempre sudo, crearemos el grupo docker y añadiremos los usuarios.
sudo groupadd docker
sudo usermod -aG docker $USER
También es muy útil a nivel de seguridad deshabilitar el usuario root, para iniciar y detener servicios con la sesión del propio usuario o mediante el cron este, programar el encendido y apagado de los contenedores.
Creando el nuevo contenedor con la última versión de Ubuntu para Raspberry o cualquier arquitectura de procesador y entrando directamente a este contenedor una vez creado:
docker run -t -i ubuntu:latest /bin/bash
Para nuestra Raspberry, si queremos, también podemos especificar la arquitectura con la que queremos montar en nuestro contenedor:
docker run -t -i arm32v7/ubuntu:latest /bin/bash
La versión "latest", es la 18.04, si queremos utilizar una en concreto, deberemos especificarlo.
Una vez creado el contenedor y dentro de él, podemos salir pulsando exit
o Ctrl-d
. Esto dentendrá nuestro contenedor, para que esto no suceda, pulsa Ctrl+p+q
Vamos a listar todos los contenedores que tenemos en nuestro servidor, indistintamente si están corriendo ahora o no:
docker ps -a
No confundir con ver todos los contenedores que están corriendo ahora mismo en nuestro servidor, que lo haríamos así:
docker ps
Super sencillo, con docker start/stop:
docker start nombre_del_contenedor
docker stop nombre_del_contenedor
Para entrar a la terminal de nuestro contenedor, tenemos que ejecutar: docker exec -i -t nombre_del_contenedor /bin/bash
Voy a explicar, con el servicio garbera de ejemplo, como descargar la imagen, crear el contenedor e iniciarlo con una única línea de terminal.
docker run -t -i --name gerbera -p 1900:1900 -p 49152:49152 -v /home/usuario/docker/gerbera:/etc/gerbera/ -v /media:/root arm32v7/ubuntu:latest /bin/bash
Vamos a entenderlo:
--name gerbera
El nombre será gerberaarm32v7/ubuntu:latest
. Si fuera para cualquier arquitectura y que se instale el más adecuado: ubuntu:latest
-p 1900:1900 -p 49152:49152
-v /home/usuario/docker/gerbera:/etc/gerbera/ -v /media:/root
Una vez estemos dentro del contenedor, igual que haríamos si nos hubiéramos conectado a un servidor por ssh, instalaremos e iniciaremos el servicio:
Recuerda sustituir "usuario", por tu usuario, no hagas un copia y pega 😜
Si ya has acabado con tus pruebas, voy a explicarte algunos comando muy útiles, como borrar el contenedor, imagenes, etc… que ya no vamos a utilizar:
Detenemos el contentedor:
docker stop nombre_del_contenedor
Borramos el contendedor:
docker rm nombre_del_contenedor
Es posible que quieras eliminar la imagen con la que habíamos creado nuestro Docker, para ello, listaremos y borraremos así:
Listar todas las imágenes:
docker images
Borrar la imagen (rm"i" de imágen, para recordar):
docker rmi nombre_de_la_imagen
En caso que quisieras cambiar el nombre del contenedor, haremos lo siguiente:
docker rename nombre_actual nombre_nuevo
Con un poco de práctica, como ves, Docker puede ayudarte a probar, practicar y utilizar servicios o aplicaciones, dentro de estos de un modo muy limpio y sencillo. El punto fuerte es que no vas a romper nada del sistema operativo anfitrión, y además, en el caso de la Raspberry, utilizar aplicaciones a la última que no están disponibles en Raspbian.
Publicado por Angel el Sunday 24 February del 2019
También te puede interesar:
Powered by org-bash-blog
Written in OrgMode with Emacs and converted to HTML with Pandoc
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.