Problema
L'uso di un contenitore di dati per archiviare i dati MySQL non funziona correttamente se monto la directory padre / var / lib invece di / var / lib / mysql
Infrastruttura
Sto usando 3 contenitori docker per fornire un sito Web:
- contenitore nginx per eseguire un server web
- contenitore mariadb per il database
- contenitore dati per i dati utente creati
Il contenitore dati viene creato utilizzando il seguente comando finestra mobile:
$ docker create \
-v /var/lib \
-v /var/www \
--name [appname]-data \
tianon/true /bin/true
Verifica dei supporti disponibili per [nome app] -data con $ docker inspect [appname]-data
:
"Mounts": [
{
"Name": "361ed7b3e38371653f2df75652973e1c48db52d59c4c5371f634c1930291af0c",
"Source": "/var/lib/docker/volumes/361ed7b3e38371653f2df75652973e1c48db52d59c4c5371f634c1930291af0c/_data",
"Destination": "/var/lib",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
},
...
I contenitori vengono avviati con la finestra mobile-componi. Entrambi i contenitori devono utilizzare tutti i supporti disponibili sul contenitore dati. My docker-compose.yml:
[appname]-nginx:
container_name: [appname]-nginx
image: nginx:9-apache
links:
- [appname]-mariadb:mysql
volumes_from:
- [appname]-data
restart: always
expose:
- "80"
[appname]-mariadb:
image: mariadb:10.1
container_name: [appname]-mariadb
restart: always
volumes_from:
- [appname]-data
environment:
MYSQL_ROOT_PASSWORD: pas$w0rd
TERM: dumb
L'output di $ docker exec -it [appname]-nginx ls -lha /var/lib/mysql
:
total 8.0K
drwxr-xr-x 2 root root 4.0K Jun 27 16:30 .
drwxr-xr-x 3 root root 4.0K Jul 21 10:19 ..
L'output di $ docker exec -it [appname]-mariadb ls -lha /var/lib/mysql
:
total 109M
drwxr-xr-x 4 mysql mysql 4.0K Jul 21 10:19 .
drwxr-xr-x 3 root root 4.0K Jul 21 10:19 ..
-rw-rw---- 1 mysql mysql 16K Jul 21 07:57 aria_log.00000001
-rw-rw---- 1 mysql mysql 52 Jul 21 07:57 aria_log_control
-rw-rw---- 1 mysql mysql 48M Jul 21 07:57 ib_logfile0
-rw-rw---- 1 mysql mysql 48M Jul 21 07:56 ib_logfile1
-rw-rw---- 1 mysql mysql 12M Jul 21 07:57 ibdata1
-rw-rw---- 1 mysql mysql 0 Jul 21 07:56 multi-master.info
drwx------ 2 mysql mysql 4.0K Jul 21 07:57 mysql
drwx------ 2 mysql mysql 4.0K Jul 21 07:56 performance_schema
-rw-rw---- 1 mysql mysql 24K Jul 21 07:57 tc.log
L'esecuzione mount
su entrambi i contenitori mostra lo stesso:
/dev/dm-0 on /var/lib type ext4 (rw,relatime,data=ordered)
/dev/dm-0 on /var/www type ext4 (rw,relatime,data=ordered)
Tuttavia per [nome app] -mariadb ha un mount aggiuntivo per / var / lib / mysql:
/dev/dm-0 on /var/lib/mysql type ext4 (rw,relatime,data=ordered)
Domanda
Perché non è possibile creare un mount del volume su / var / lib per salvare tutti i dati memorizzati nel contenitore di dati?
Mi manca qualcosa?
È un problema di MySQL / MariaDB?