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"
}
]