【问题标题】:Docker mysql stop with exit(1)Docker mysql 停止并退出(1)
【发布时间】:2019-03-18 07:23:56
【问题描述】:

我试图在 docker 容器中启动我的 MySql。但是,它因代码退出(1)而停止。这是我的运行方式:

docker run --name demo-db -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql:latest --mount type=bind,source=$(pwd),target=/var/lib/mysql

这是容器的日志

初始化数据库
2018-10-12T17:50:42.694183Z 0 [警告] [MY-011070] [服务器] '使用 --skip-symbolic-links (或等效项)禁用符号链接是默认设置。考虑不要使用此选项,因为它已被弃用,并将在未来的版本中删除。
2018-10-12T17:50:42.694277Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.12) 作为进程 31 正在初始化服务器
mbind:不允许操作
mbind:不允许操作
mbind:不允许操作
mbind:不允许操作
2018-10-12T17:51:10.497527Z 0 [错误] [MY-011071] [服务器] 未知选项“--mount”
2018-10-12T17:51:10.497543Z 0 [警告] [MY-010952] [服务器] 权限系统未能正确初始化。如果您已升级服务器,请确保您正在执行 mysql_upgrade 以纠正问题。
2018-10-12T17:51:10.497551Z 0 [错误] [MY-010119] [服务器] 中止
2018-10-12T17:51:14.130241Z 0 [系统] [MY-010910] [服务器] /usr/sbin/mysqld: 关闭完成 (mysqld 8.0.12) MySQL 社区服务器 - GPL。

请帮帮我...

【问题讨论】:

  • 我一年没用过 Docker,但我不认识 --mount 语法。我记得类似 -v /path/to/foo:/path/to/var
  • @wbg 使用较新版本的 docker,可以将 --mount 标志用于独立容器

标签: mysql docker


【解决方案1】:

docker run命令的语法基本是

docker run <docker run options> IMAGE <command and arguments>

所以当你运行时:

docker run \
  --name demo-db -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d \
  mysql:latest \
  --mount type=bind,source=$(pwd),target=/var/lib/mysql

--mount 选项在图像名称之后,因此它作为参数传递给容器。将此选项移到之前 mysql:latest,您将被设置。

【讨论】:

    【解决方案2】:

    可能会有更好的答案,我曾经使用 Docker 以及 MySQL,但已经有一段时间了。

    从分离容器开始:

    docker run -v $PWD:/var/lib/mysql --name demo-db -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql:latest
    

    然后像这样附加到它:

    docker run -i -t demo-db /bin/bash
    

    注意pwd的使用:

    无需使用pwd 命令,只需获取shell 变量$PWD。当你这样做时foo=$(pwd) 有点过头了,b/c 你实际上是在子 shell 中运行 pwd 命令以返回 $PWD

    【讨论】:

      猜你喜欢
      • 2018-01-20
      • 1970-01-01
      • 2014-12-01
      • 2020-10-01
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      相关资源
      最近更新 更多