我在OSX上的mariadb遇到了麻烦,我在CentOS上也做了同样的事情,它工作得很好。所以一定是OSX的问题:
mariadb:
image: mariadb:latest
container_name: mariadb
ports:
- "3306:3306"
restart: always
environment:
MYSQL_ROOT_PASSWORD: XXXXXXXX
volumes:
- /Users/sandro/Code/mysql:/var/lib/mysql日志包含以下错误:
mkdir: cannot create directory '/var/lib/mysql//mysql': Permission denied
Fatal error Can't create database directory '/var/lib/mysql//mysql'如果我让它像这样安装在容器中:
volumes:
- /var/lib/mysql它可以工作,但我有持久性的问题,一旦vm重启数据库就消失了。
我试图创建mysql目录并赋予它全局可写权限,但却收到了以下错误:
2016-05-20 23:43:54 140694234605504 [Note] mysqld (mysqld 10.1.14-MariaDB-1~jessie) starting as process 1 ...
2016-05-20 23:43:54 140694234605504 [Warning] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Using mutexes to ref count buffer pool pages
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: The InnoDB memory heap is disabled
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Memory barrier is not used
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Compressed tables use zlib 1.2.8
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Using Linux native AIO
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Using SSE crc32 instructions
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Initializing buffer pool, size = 256.0M
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Completed initialization of buffer pool
2016-05-20 23:43:54 140694234605504 [ERROR] InnoDB: ./ibdata1 can't be opened in read-write mode
2016-05-20 23:43:54 140694234605504 [ERROR] InnoDB: The system tablespace must be writable!
2016-05-20 23:43:54 140694234605504 [ERROR] Plugin 'InnoDB' init function returned error.
2016-05-20 23:43:54 140694234605504 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2016-05-20 23:43:54 140694234605504 [ERROR] mysqld: File '/var/lib/mysql/aria_log_control' not found (Errcode: 13 "Permission denied")
2016-05-20 23:43:54 140694234605504 [ERROR] mysqld: Got error 'Can't open file' when trying to use aria control file '/var/lib/mysql/aria_log_control'
2016-05-20 23:43:54 140694234605504 [ERROR] Plugin 'Aria' init function returned error.
2016-05-20 23:43:54 140694234605504 [ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.
2016-05-20 23:43:54 140694234605504 [Note] Plugin 'FEEDBACK' is disabled.
2016-05-20 23:43:54 140694234605504 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
2016-05-20 23:43:54 140694234605504 [ERROR] Unknown/unsupported storage engine: InnoDB
2016-05-20 23:43:54 140694234605504 [ERROR] Aborting发布于 2016-07-26 09:53:35
使mysql容器作为用户1000运行。
在Dockerfile中:
USER "1000"在docker-compose.yml中
db:
image: mysql
user: "1000"这是我目前的变通方法(通过docker-compose.yml完成)。1000用户是-I believe- docker卷(至少对于docker-machine)中文件的默认用户,因此这应该允许您写入卷。
发布于 2016-05-21 07:39:13
很可能是权限问题。在Mac上,docker在通过VM映射本地目录的虚拟机器中运行。要获得正确的权限是很棘手的。首先尝试在/Users/sandro/Code目录上设置限制最少的权限。另外,在启动容器之前,尝试预先创建/Users/sandro/Code/myssql目录,并赋予其全局可写权限。
更新:所以问题实际上更加复杂。看起来你不能做很多低级的文件调用,除非容器内的用户id与启动docker机器的用户的id匹配。以下是澄清此问题的一些链接:
https://github.com/boot2docker/boot2docker/issues/581
该问题存在于boot2docker、MariaDB镜像启动脚本、docker-compose和Virtual Box来宾操作系统之间
通过这样做,我能够运行maria db容器。
mkdir mysql
chmod ug+ws mysql
docker run -it -u $UID:$UID -e MYSQL_ROOT_PASSWORD=bob \
-v /Users/vlad/Proj/Stack/maria/mysql:/var/lib/mysql \
mariadb:latest请注意,-u选项
发布于 2017-10-06 16:51:05
路径在错误消息中看起来很奇怪:mkdir: cannot create directory '/var/lib/mysql//mysql': Permission denied
对我来说,mariadb镜像看起来像是在卷路径上附加了/mysql。通过在docker-compose.yml文件中删除/mysql,它就像一个护身符一样工作。
mdb:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- ./data:/var/libhttps://stackoverflow.com/questions/37357315
复制相似问题