Introducción
La primera vez que usé Docker no me convenció demasiado, porque me parecía que las imágenes a partir de las cuales se crean los contenedores eran muy pesadas. Por ejemplo, mysql pesa 603 MB, nginx 192 MB y openvpn 708 MB. Por eso lo veía como un desperdicio de espacio en disco y de recursos. Sin embargo, a medida que fui profundizando y creando mis propias imágenes, me di cuenta de que pueden pesar muchísimo menos si se optimizan correctamente.
Ese descubrimiento me convirtió en un fanático: hoy prácticamente no hay un solo servicio en mi servidor que no corra dentro de un contenedor. Docker ofrece comodidad y seguridad, algo que para mí es esencial. Combinarlo con un firewall que cierre todos los puertos de los contenedores y deje pasar únicamente los necesarios me parece una de las formas más eficientes de gestionar un servidor web. Además, si las imágenes están lo suficientemente optimizadas, todo funciona muy rápido y se siente ligero.
Postinstalación
Instalar docker resulta muy fácil usando alguno de los gestores de paquetes disponibles en internet. Luego de instalar hay que hacer una serie de pasos para que quede completamente listo.
- Agregar grupo docker y asociar dicho grupo con el usuario principal. Si no se hace esto docker solo funcionará si se ejecuta como superusuario
sudo groupadd docker sudo usermod -aG docker $USERSe puede verificar si los cambios se aplicaron correctamente corriendo el container de docker
hello-worlddocker run hello-world - Hacer que los servicios de docker se inicien con el sistema:
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R sudo chmod g+rwx "$HOME/.docker" -R
La documentación de docker tiene una página en su documentación dedicada a la postinstalación.
Acopio de Comandos
A continuación se muestran algunos de los comandos qu me parece útil guardar para posterior uso.
Entrar a la terminal de un contenedor
Los contenedores permiten entrar a sus respectivas terminales, lo cual puede ser muy útil para realizar modificaciones internas en el sistema.
docker exec -it contenedor sh
Ejecutar un comando en una imagen
Ejecutar un comando dentro de una imagen puede resultar muy útil. En mi caso particular, me ha servido para inspeccionar distintas partes de la imagen de Alpine y, así, contar con una base sólida que oriente la creación de imágenes derivadas y contenedores.
docker run --rm <imagen> <comando>