前端之家收集整理的这篇文章主要介绍了
macos – Docker-撰写持久数据麻烦,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在使用Mariadb配置持久数据时遇到了麻烦.
我正在使用docker-compose,每个服务都在一个容器中(Nginx,PHP-FPM和Mariadb).
一切正常,但Mariadb不存储数据.每次重新启动容器时,都会丢失所有数据.然后我发现我可以使用另一个容器来保存数据,甚至不必运行.
所以我在Mariadb容器中使用volume_from内容容器.但是当我这样做时,当我尝试映射卷/ var / lib / MysqL时,Container MariaDb无法启动.
错误
2015-12-29 12:16:40 7f2f02e4a780
InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means MysqLd does not have the access rights to
InnoDB: the directory.
该错误是指有关卷权限的问题,但我尝试在两个容器中通过Dockerfile设置权限,问题仍然存在.我有点迷茫.我正在使用OSX,所以我认为这是一个OSX问题.谁可以帮我这个事?
这是我的代码:
我的Docker撰写
- 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
MariaDB Dockerfile
- FROM debian:jessie
-
- RUN apt-get update && apt-get install -y mariadb-server
-
- EXPOSE 3306
内容Dockerfile
- FROM debian:jessie
-
- VOLUME /var/lib/MysqL
-
- CMD ["true"]
@H_
301_41@最佳答案
我这样做的方式是我使用busy
Box存储和与mariadb共享的所有数据.然后在mariadb中使用–volumes-from来
链接那些目录.请查看我简化的compose.yml
文件.
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"
}
]