Notas adicionales a Virtualización para todos. Docker

2021-10-19T19:00:00+02:00 | 4 minutos de lectura | Actualizado en 2021-10-20T19:00:00+02:00

Notas adicionales a Virtualización para todos. Docker

Resumen

Aquí traigo los comandos y las notas referentes al capítulo de ayer sobre Docker y las correcciones necesarias.

Otra nota.
Es posible que este artículo crezca con el paso del tiempo, como acabo de hacer

Lo primero. Todos los comandos están adaptados a mi entorno. Eso quiere decir que una ruta o un puerto puede variar, y de hecho, debe variar, en instalaciones propias con datos propios de cada usuario.

El artículo de ayer sobre docker

Primer contenedor. BBDD

Partiendo de una imagen base de Linuxserver, podemos trabajar con el siguiente código:

docker run -d \
  --name=mariadb \
  -e PUID=1000 \
  -e PGID=1000 \
  -e MYSQL_ROOT_PASSWORD=Password.2021 \
  -e TZ=Europe/Madrid \
  -e MYSQL_DATABASE=wordpress \
  -e MYSQL_USER=wordpress \
  -e MYSQL_PASSWORD=wordpress.2021 \
  -p 3306:3306 \
  -v /home/usuario/wp_database:/config \
  --restart unless-stopped \
  linuxserver/mariadb

Este comando es correcto y está probado. Cambio el $ por . por evitar problemas.
Hay que tener bastante cuidado con las variables de entorno.
Y con eso tenemos una ocupación de 236 MB.

Segundo contenedor. PHPMyAdmin

También con una imagen base de Linuxserver.

docker run -d \
  --name=phpmyadmin \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/Madrid \
  -e PMA_ARBITRARY=1 \
  -p 1180:80 \
  -p 11443:443 \
  -v /home/usuario/wp_pma:/config \
  --restart unless-stopped \
  linuxserver/phpmyadmin

Seguimos creciendo en ocupación. 336 MB en este punto.

Tercer contenedor. Wordpress

Esta vez desde el propio Wordpress podemos desplegar. He hecho referencia al primero de los contenedores que hemos creado.

docker run -d \
  --name=wordpress \
  -e WORDPRESS_DB_USER=wordpress \
  -e WORDPRESS_DB_PASSWORD=wordpress.2021 \
  -e WORDPRESS_DB_HOST=mariadb \
  -e WORDPRESS_DB_NAME=wordpress \
  -v /home/usuario/wp:/var/www/html \
  -p 1080:80 \
  -p 10443:443 \
  --restart unless-stopped \
  wordpress

La ocupación ha crecido hasta 844 MB.

Primer stack. NPM

Nginx Proxy Manager es un stack de contenedores preparado para usar Nginx como proxy inverso con capacidad de usar certificados.
Este es el stack corregido en el que en el vídeo no arrancaba porque no estaba correctamente definida la creación de la BBDD.
El cambio de BBDD es debido a que la BBDD de jc21/nginx-proxy-manager es de 64 bits y estamos utilizando hardware de 32 bits, por lo que este stack está fuertemente personalizado frente al original y corregidos los problemas que surgen en el vídeo. Aquí si se genera correctamente la BBDD.

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    environment:
      DB_MYSQL_HOST: 'db'
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: 'npm.user'
      DB_MYSQL_PASSWORD: 'npm.password'
      DB_MYSQL_NAME: 'npm.database'
    volumes:
      - /home/usuario/npm/data:/data
      - /home/usuario/npm/ssl:/etc/letsencrypt
  db:
    image: 'linuxserver/mariadb:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'npm.root.password.2021'
      MYSQL_DATABASE: 'npm.database'
      MYSQL_USER: 'npm.user'
      MYSQL_PASSWORD: 'npm.password'
    volumes:
      - /home/usuario/npm/db:/config

Con esto crecemos hasta 1.7 GB.

Cuarto contenedor. Portainer

Portainer es ampliamente conocido. Pero de todas formas dejo aquí el entorno y la forma de crearlo.

docker run -d \
  --name portainer \
  -p 8000:8000 \
  -p 9443:9443 \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /home/usuario/portainer:/data \
  portainer/portainer-ce:latest

Y ahora hasta 1,9 GB.

El stack prometido. Stack de wordpress

Debidamente modificado para funcionar en máquinas como la BananaPi M2U y otras ARMv7.

version: '3'
services:
  database:
    image: 'linuxserver/mariadb:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'wordpress'
      MYSQL_DATABASE: 'wordpress'
      MYSQL_USER: 'wordpress'
      MYSQL_PASSWORD: 'wordpress'
      TZ: 'Europe/Madrid'
    volumes:
      - /home/usuario/wp-stack/db:/config
  wordpress:
    image: 'wordpress:latest'
    restart: unless-stopped
    ports:
      - '1080:80'
      - '10443:443'
    environment:
      DB_MYSQL_HOST: 'database'
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: 'wordpress'
      DB_MYSQL_PASSWORD: 'wordpress'
      DB_MYSQL_NAME: 'wordpress'
    volumes:
      - /home/usuario/wp-stack:/var/www/html

El stack prometido. Stack completo de wordpress

Y esta modificación incluye un PHPMyAdmin en el stack. Solo que habrá que dar permisos a la BBDD.

version: '3'
services:
  database:
    image: 'linuxserver/mariadb:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'wordpress.2021'
      MYSQL_DATABASE: 'wordpress'
      MYSQL_USER: 'wordpress'
      MYSQL_PASSWORD: 'wordpress.2021'
      TZ: 'Europe/Madrid'
    volumes:
      - /home/usuario/wp-stack/db:/config
  pma:
    image: 'linuxserver/phpmyadmin:latest'
    restart: unless-stopped
    ports:
      - '1180:80'
      - '11443:443'    
    environment:
      PMA_HOST: 'database'
      TZ: 'Europe/Madrid'
    volumes:
      - /home/usuario/wp-stack/pma:/config
  wordpress:
    image: 'wordpress:latest'
    restart: unless-stopped
    ports:
      - '1080:80'
      - '10443:443'
    environment:
      DB_MYSQL_HOST: 'database'
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: 'wordpress'
      DB_MYSQL_PASSWORD: 'wordpress.2021'
      DB_MYSQL_NAME: 'wordpress'
    volumes:
      - /home/usuario/wp-stack:/var/www/html

El tema de los permisos de PMA debería ser tan simple como ejecutar dentro del contenedor mediante docker exec -ti wp-stack_database_1 mysql -u root -p sabiendo que realmente el contenedor se llama así, como en mi caso.

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

O bien si no nos fiamos del aislamiento y hay exposición de puertos que puedan ser vulnerados.
De todas formas esto es una solución que no debería usarse en producción.

GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.%' WITH GRANT OPTION;

Y el resultado final queda así

primera captura


YoVirtualizador en formato podcast. Ahora también en Sospechosos Habituales: https://wt.territoriolinux.es/rss/short.xml
Y sin más, os dejo los enlaces:

Web: https://www.yovirtualizador.com
Grupo de telegram: https://t.me/grupovirtualizador
Podcast: https://www.ivoox.com/podcast-yovirtualizador_fg_f1563806_filtro_1.xml
Canal de youtube: https://www.youtube.com/channel/UC0R70cABSsmC6TFyXth0qPg
Enlace de afiliados de amazon: https://amzn.to/3gX3HmK
Enlace de referidos de la Asociación Podcast: https://www.asociacionpodcast.es/registrarse/socio/?coupon=SB6A70

© 2019 - 2025 YoVirtualizador

Tu podcast y blog de confianza

Política de comentarios

En YoVirtualizador, todos los comentarios serán bienvenidos pero moderados.

Los grupos de telegram y redes sociales tienen moderación activa. Consulta con sus administradores.

Respetos guardan respetos.

El contenido irrelevante u ofensivo será eliminado.

Acerca de YoVirtualizador

YoVirtualizador es la marca de varios proyectos

Podcast de informática profesional. Canal de Youtube sobre el blog, el podcast y de temática profesional. Blog de contenido diverso, con temática BOFH y técnica.

Gracias por la lectura.

Galletas

Política de cookies

Lo de las galletas en 2025

En YoVirtualizador no usamos cookies para nada, pero los servicios de discus y analytics recopilan datos en servidores ajenos a YoVirtualizador sin que yo pueda hacer nada. Si no quieres galletas, usa un navegador que no ejecute javascript.

Este aviso es sólo porque algún político tenía que justificar su existencia, y ahora además hay que redactar.

Legislación aplicable:

  • Reglamento (UE) 2016/679 del Parlamento Europeo y del Consejo, de 27 de abril de 2016, General de Protección de Datos (RGPD) (Aplicable desde mayo de 2018),“Establece la definición y los requisitos del consentimiento (libre, informado, específico e inequívoco) y los derechos del interesado. Es la norma principal sobre datos personales.”
  • Artículo 22 de la Ley 34/2002, de 11 de julio, de servicios de la sociedad de la información y de comercio electrónico (LSSI). Es la norma específica española sobre cookies. Establece la obligación de informar y obtener el consentimiento para el uso de dispositivos de almacenamiento y recuperación de datos (cookies) que no sean estrictamente necesarios.
  • Ley Orgánica 3/2018, de 5 de diciembre, de Protección de Datos y garantía de los derechos digitales (LOPDGDD) (Aplicable desde diciembre de 2018),Es la ley española que desarrolla y adapta el RGPD al ordenamiento jurídico español. Complementa la LSSI en lo relativo a la protección de datos personales.

Definición y función de las cookies

¿Qué son las cookies? Una cookie es un fichero que se descarga en su ordenador al acceder a determinadas páginas web. Las cookies permiten a una página web, entre otras cosas, almacenar y recuperar información sobre los hábitos de navegación de un usuario o de su equipo y, dependiendo de la información que contengan y de la forma en que utilice su equipo, pueden utilizarse para reconocer al usuario.
¿Qué tipos de cookies utiliza esta página web? Cookies propias: Son aquéllas que se envían al equipo terminal del usuario desde un equipo o dominio gestionado por el propio editor y desde el que se presta el servicio solicitado por el usuario. Cookies de terceros Son aquéllas que se envían al equipo terminal del usuario desde un equipo o dominio que no es gestionado por el editor, sino por otra entidad que trata los datos obtenidos través de las cookies. Cookies persistentes Son un tipo de cookies en el que los datos siguen almacenados en el terminal y pueden ser accedidos y tratados durante un periodo definido por el responsable de la cookie, y que puede ir de unos minutos a varios años. Cookies de análisis Son aquéllas que bien tratadas por nosotros o por terceros, nos permiten cuantificar el número de usuarios y así realizar la medición y análisis estadístico de la utilización que hacen los usuarios del servicio ofertado. Para ello se analiza su navegación en nuestra página web con el fin de mejorar la oferta informativa, productos o servicios que le ofrecemos. Cookies publicitarias Son aquéllas que permiten la gestión, de la forma más eficaz posible, de los espacios publicitarios que, en su caso, el editor haya incluido en una página web, aplicación o plataforma desde la que presta el servicio solicitado en base a criterios como el contenido editado o la frecuencia en la que se muestran los anuncios.

Asimismo es posible que al visitar alguna pagina web o al abrir algún email donde se publique algún anuncio o alguna promoción sobre nuestros productos o servicios se instale en tu navegador alguna cookie que nos sirve para mostrarte posteriormente publicidad relacionada con la búsqueda que hayas realizado, desarrollar un control de nuestros anuncios en relación, por ejemplo, con el numero de veces que son vistos, donde aparecen, a que hora se ven, etc

Ayuda con las galletas

Como algún político tenía que justificar su existencia, yo te cuento como lo vamos a hacer.

Revocación y eliminación de cookies (IA generativa dixit)

Usted puede permitir, bloquear o eliminar las cookies instaladas en su equipo mediante la configuración de las opciones del navegador instalado en su ordenador, en caso que no permita la instalación de cookies en su navegador es posible que no pueda acceder a alguna de las secciones de nuestra web.

A continuación puede encontrar como acceder a la configuración de las cookies en los principales navegadores:

  • Internet Explorer: Menú Herramientas -> Opciones de Internet -> Privacidad -> Configuración. También puede consultar el soporte de Microsoft o la Ayuda del navegador.
  • Firefox: Menú Herramientas -> Opciones -> Privacidad -> Historial -> Configuración Personalizada. También puede consultar el soporte de Mozilla o la Ayuda del navegador.
  • Chrome: Menú Configuración -> Mostrar opciones avanzadas -> Privacidad -> Configuración de contenido. También puede consultar el soporte de Google o la Ayuda del navegador.
  • Safari: Menú Preferencias -> Seguridad. También puede consultar el soporte de Apple o la Ayuda del navegador.