Docker-构成持久性数据问题
我在使用Mariadb
configuration持久性数据时遇到了麻烦。 我使用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问题。 谁可以帮我这个事?
这是我的代码:
我的Docker撰写
内容: build立:容器/内容 container_name:内容 主机名:内容 卷: - / var / lib / mysql MariaDB的: build:containers / mariadb container_name:mariadb 主机名:mariadb 端口: - “3306:3306” volumes_from: - 内容 环境: - MYSQL_ROOT_PASSWORD = mariadb - TERM = xterm - PORT = 3306
MariaDB Dockerfile
从debian:jessie 运行apt-get update && apt-get install -y mariadb-server EXPOSE 3306
内容Dockerfile
从debian:jessie VOLUME / var / lib / mysql CMD [“true”]
我这样做的方式是使用busybox来存储和共享mariadb的所有数据。 然后使用--volumes-from
中的–volumes来链接这些目录。 请看看我简化的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" }
]
- Docker无法为RoR应用程序提供GEMFILE文件
- 如何在AWS EC2 Windows Server实例上构buildDocker镜像?
- 如何将variables作为属性传递给Docker中的Wildfly的xmlconfiguration文件
- Maven的子模块无法在Docker构build的图像中find父pom / artifact
- 在安装Kerberos时,Docker组合会挂起
- 未find文件 – Docker中的Nginx
- Docker-compose不能在boot2docker上正确安装或运行
- 在Docker容器启动时运行Symfony数据库迁移脚本
- 在Docker容器中运行py.test作为服务