【问题标题】:Unable to start mysql with docker on Ubuntu 16.04无法在 Ubuntu 16.04 上使用 docker 启动 mysql
【发布时间】:2018-12-23 18:57:26
【问题描述】:

我无法在 Ubuntu 上使用 docker 启动 mysql。得到以下错误:

db_1_cc1214d5085c |错误:mysqld 在尝试检查时失败 配置 db_1_cc1214d5085c |命令是:“mysqld --verbose --help” db_1_cc1214d5085c | db_1_cc1214d5085c | mysqld:加载时出错 共享库:libpthread.so.0:无法统计共享对象: 权限被拒绝

docker compose 文件内容:

version: '2.4'

services:

  db:
    image: mysql:5.7
    ports:
      - "32000:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
#   restart: always
    volumes:
     - ./data/db:/var/lib/mysql

Docker 详细信息:

Client:
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        4d60db4
 Built:             Wed Nov  7 00:48:57 2018
 OS/Arch:           linux/amd64
 Experimental:      false

服务器:Docker 引擎 - 社区

Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       4d60db4
  Built:            Wed Nov  7 00:16:44 2018
  OS/Arch:          linux/amd64
  Experimental:     false

另外值得注意的是,在此服务器上安装并运行了一个非 dockerized 版本的 MySQL。任何帮助将不胜感激。

【问题讨论】:

  • 您可以检查主机上./data/db 文件夹的权限吗?
  • stackoverflow.com/questions/41619823/… 是通过 AppArmor 配置解决的类似问题,尽管唯一的答案不是一个好的答案。
  • 康拉德我已经检查了线程,大卫我删除了 aparmor。我今天会检查文件夹的权限并更新。

标签: mysql docker docker-compose


【解决方案1】:

要启动 mysql 服务,您需要在 docker-compose 文件中包含类似的内容

version: '3'    
services:
 <service-name>:
   image: mysql:5.7
   container_name: <container-name>
   ports:
     - "<host-port>:<container-port>"
   environment:
     - MYSQL_ROOT_PASSWORD=<root-password>
     - MYSQL_DATABASE=<database-name>
   volumes:
     - <host-dir>:/var/lib/mysql
   networks: ['stack']
networks:
  stack:
    driver: bridge

确保&lt;host-dir&gt; 您对执行docker-compose up 命令的当前用户具有权限。

如果您有多个服务想要连接到数据库,则使用networks,它们都应该使用相同的network,在本例中为stack

您的主机似乎存在权限问题。

【讨论】:

  • networks: 部分是不必要的; Docker Compose 将为您创建一个默认的桥接类型网络并自动将容器连接到它。显式指定container_name: 也是不必要的,并且使重用同一文件变得更加困难。如果你把这两件事去掉,这基本上与原始问题中的 YAML 文件相同。
  • 我接受这个作为答案,因为我的应用程序被定义为在 docker 网络上工作。因此,也有必要在同一网络上运行 mysql。此外,需要注意的重要一点是服务器上存在容量问题,服务器重启似乎解决了这个问题,我也可以让它在没有网络的情况下独立运行(但在这种情况下,应用程序当然无法连接到它) .
猜你喜欢
  • 2016-09-10
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
  • 2017-06-28
  • 2023-04-10
  • 2018-06-09
  • 1970-01-01
相关资源
最近更新 更多