在一个容器中,我试图启动mysqld.
我能够创建一个图像并推送到注册表,但是当我想启动它时,/var/lib/mysql无法初始化该卷,因为我尝试对其进行操作chown mysql并且不允许.
我检查了docker特定的解决方案但是现在我无法做任何工作.
有没有办法从bluemix在绑定挂载的文件夹上设置正确的权限?或者--volumes-from支持该选项,我似乎无法使其工作.
我现在能看到的唯一解决方案是以root身份运行mysqld,但我不愿意.
cf ic volume create database尝试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
Run Code Online (Sandbox Code Playgroud)mysql_install_db应该填充/var/lib/mysql并设置--user选项中所有者设置的权限,但我得到:
chown:更改'/ var/lib/mysql'的所有权:权限被拒绝.
我也使用sudo或脚本以不同的方式尝试了上述方法.我试过mysql_install_db --user=root,它确实正确设置我的文件夹,除了它由root用户拥有,我宁愿让mysql作为mysql用户运行.
我用卷创建一个数据容器 /var/lib/mysql
docker run --name db_data -v /var/lib/mysql registry.ng.bluemix.net/<namespace>/<image>:<tag> mysql_install_db --user=mysql
Run Code Online (Sandbox Code Playgroud)我使用选项运行我的数据库容器 --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'
Run Code Online (Sandbox Code Playgroud)docker inspect db_srv 说明:
[{"BluemixApp":null,"Config":{...,"WorkingDir":"",...} ...}]
cf ic logs db_srv 说明:
150731 15:25:11 mysqld_safe用/ var/lib/mysql中的数据库启动mysqld守护进程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 [ERROR]正在中止
这是由于--volumes-from不受支持,以及第一次没有停留在第二次运行中创建的数据.
您在这里有多个问题。我会尝试解决一些问题。也许这会让你在正确的方向上更进一步。
IBM Containers 尚不支持 --volumes-from。您可以通过在第一个和后续容器上使用相同的 --volume (-v) 选项来解决这个问题,而不是在第一个容器创建命令上使用 -v 并在后续容器上使用 --volumes-from 。
IBM Containers 也不支持 --user 选项。
我发现您使用 --user 的语法(我想在本地主机 docker 上)不正确。docker run 命令的所有选项都必须位于映像名称之前。图像名称后面的任何内容都被视为在容器内运行的命令。在这种情况下,“--user=mysql”将被视为系统将尝试运行并失败的命令。
您共享的最后一条错误消息显示,在工作目录中找不到某些文件,导致应用程序中止。您可以通过使用脚本作为在容器中运行的命令来解决这个问题,该命令将 dir 更改为正确的位置。
| 归档时间: |
|
| 查看次数: |
3533 次 |
| 最近记录: |