【发布时间】:2015-07-31 16:31:11
【问题描述】:
在容器中,我正在尝试启动 mysqld。
我能够创建映像并推送到注册表,但是当我想启动它时,/var/lib/mysql 卷无法初始化,因为我尝试在其上执行 chown mysql 并且不允许这样做。
我检查了 docker 特定的解决方案,但现在我无法进行任何工作。
有没有办法从 bluemix 为绑定安装的文件夹设置正确的权限? 或者是否支持 --volumes-from 选项,我似乎无法使其工作。
我现在能看到的唯一解决方案是以 root 身份运行 mysqld,但我宁愿不这样做。
试试 mount-bind
- 使用
cf ic volume create database在 bluemix 上创建了一个卷 -
尝试在我的数据库容器上运行
mysql_install_db来初始化它的内容docker run --name init_vol -v database:/var/lib/mysql registry.ng.bluemix.net/<namespace>/<image>:<tag> mysql_install_db --user=mysql
mysql_install_db 应该填充/var/lib/mysql 并将权限设置为在--user 选项中设置的所有者,但我得到:
chown:更改“/var/lib/mysql”的所有权:权限被拒绝。
我还以不同的方式尝试了上述方法,使用 sudo 或脚本。我尝试使用mysql_install_db --user=root,它确实正确设置了我的文件夹,但它归root用户所有,我宁愿让mysql以mysql用户身份运行。
尝试使用volumes-from数据容器
-
我创建了一个带有卷
/var/lib/mysql的数据容器docker run --name db_data -v /var/lib/mysql registry.ng.bluemix.net/<namespace>/<image>:<tag> mysql_install_db --user=mysql -
我使用选项
--volumes-from运行我的数据库容器docker run --name db_srv --volumes-from=db_data registry.ng.bluemix.net/<namespace>/<image>:<tag> sh -c 'mysqld_safe & tail -f /var/log/mysql.err'
docker inspect db_srv 显示:
[{ "BluemixApp": null, "Config": { ..., "工作目录": "", ... } ... }]
cf ic logs db_srv 显示:
150731 15:25:11 mysqld_safe 使用来自的数据库启动 mysqld 守护进程 /var/lib/mysql 150731 15:25:11 [注意] /usr/sbin/mysqld (mysqld 5.5.44-0ubuntu0.14.04.1-log)从进程 377 开始 .. /usr/sbin/mysqld:找不到文件“./mysql-bin.index”(错误代码:13) 150731 15:25:11 [错误] 中止
这是由于 --volumes-from 不受支持,并且第一次创建的数据没有保留在第二次运行中。
【问题讨论】: