【问题标题】:Docker percona (mysql mariadb) container stops after running on ubuntu when volume (-v) defined定义卷(-v)时,Docker percona(mysql mariadb)容器在 ubuntu 上运行后停止
【发布时间】:2018-03-18 10:57:24
【问题描述】:

在带有 Docker 17.05.0-ce 的 Ubuntu 16.04 上,我尝试使用主机目录映射(卷)设置 percona-mysql docker 映像。这是图片:

docker pull percona/percona-server:latest

这里是容器运行命令:

docker run --name percona -e MYSQL_ROOT_PASSWORD=secret -v /home/myuser/db/files:/var/lib/mysql -p 6603:3306 -d percona/percona-server:latest mysql -h docker_host_ip -P 6603

问题是容器在此命令后立即停止 - 但是当我不使用 -v ... 参数(卷映射)时,容器启动时没有问题。如何解决这个问题?

这个问题也可能出现在 mysql 或 mariadb 图像上。

【问题讨论】:

    标签: mysql ubuntu docker percona docker-volume


    【解决方案1】:

    解决方案

    在您的主机上键入以下命令:

    cd /home/myuser/db
    sudo chown 1001:0 files
    

    然后再次运行容器,仅此而已:)

    方式

    1. 运行失败后,查看日志:docker logs percona 发现mysql 没有权限写入目录/var/lib/mysql
    2. 我运行没有卷的容器:docker run --name percona -e MYSQL_ROOT_PASSWORD=secret -p 6603:3306 -d percona/percona-server:latest mysql -h docker_host_ip -P 6603
    3. 我登录到容器:docker exec -it percona /bin/bash
    4. 我输入:cd /var/lib
    5. 执行ls -l 后,我在mysql 目录附近看到以下行:drwxr-xr-x 5 mysql root 4096 Oct 6 14:39 mysql。这意味着所有者是mysql,组是root
    6. 我得到了id -u mysql的mysql用户UID(我得到1001
    7. 我通过groups mysql 检查mysql 有一个组(root)。所以要获取根 GID,我输入 id -g mysql(我得到 0
    8. chown 命令允许为不存在的用户设置文件 UID:GID (!),因此我们不需要在主机上创建用户 mysql。因此,在主机上运行chown ... 后,文件夹files 具有与容器内的mysql 所期望的完全相同的用户和组。

    【讨论】:

      猜你喜欢
      • 2017-06-26
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      • 2023-02-01
      • 2022-07-18
      • 2016-08-23
      相关资源
      最近更新 更多