Docker-Создавать Постоянные Проблемы С Данными

у меня возникли проблемы с настройкой постоянных данных с Mariadb. Я использую docker-compose, С каждой службой в одном контейнере (Nginx, PHP-FPM и Mariadb). Все работает, кроме Mariadb не хранит данные. Каждый раз, когда я перезапускаю контейнер, я теряю все данные. Затем я узнал, что могу использовать другой контейнер только для хранения данных, и он даже не должен работать.

поэтому я использую, в Mariadb контейнер volume_from контейнер контента. Но когда я это делаю ... это, когда я пытаюсь отобразить объем /var/lib/mysql, контейнер MariaDb не запускается.

2015-12-29 12:16:40 7f2f02e4a780
InnoDB: номер ошибки операционной системы 13 в файловой операции.
InnoDB: ошибка означает, что mysqld не имеет прав доступа к
InnoDB: каталог.

ошибка относится к проблеме с разрешениями тома, но я попытался установить разрешения через Dockerfile в обоих контейнерах, и проблема сохраняется. Я немного заблудился. Я использую OSX, поэтому я считаю, что это проблема OSX. Кто-нибудь может мне помочь?

это мой код:

Мои Настройки Составлять

content:
  build: containers/content
  container_name: content
  hostname: content
  volumes:
    - /var/lib/mysql
mariadb:
  build: containers/mariadb
  container_name: mariadb
  hostname: mariadb
  ports:
    - "3306:3306"
  volumes_from:
    - content
  environment:
    - MYSQL_ROOT_PASSWORD=mariadb
    - TERM=xterm
    - PORT=3306

Файла Docker Версию MariaDB

FROM debian:jessie

RUN apt-get update && apt-get install -y  mariadb-server

EXPOSE 3306

Content Dockerfile

FROM debian:jessie

VOLUME /var/lib/mysql

CMD ["true"]

1 ответов


способ, которым я это делаю, заключается в том, что я использую busybox для всех данных, хранящихся и совместно с mariadb. Тогда используйте --volumes-from в mariadb, чтобы связать эти каталоги. Пожалуйста, посмотрите на мой simpified .

db-data:
  container_name: db-data
  image: busybox:latest
  volumes:
    - /data/mysql:/var/lib/mysql

db:
  container_name: db
  image: million12/mariadb
  restart: always
  volumes_from:
    - db-data
  environment:
    - MARIADB_USER=admin
    - MARIADB_PASS=my_pass

теперь все файлы базы данных доступны на хост-ОС и не должно быть никаких проблем с разрешениями.

обновление для docker-compose 2.0

version: '2'
volumes:
  database:

services:
  db:
    container_name: db
    image: million12/mariadb
    restart: always
    volumes_from:
       - database
     environment:
       - MARIADB_USER=admin
       - MARIADB_PASS=my_pass

вы можете увидеть, где docker хранит этот том на вашем жестком диске, запустив команда:
docker volume inspect docker_database

[
{
    "Name": "docker_database",
    "Driver": "local",
    "Mountpoint": "/var/lib/docker/volumes/docker_database/_data",
    "Labels": null,
    "Scope": "local"
}

]