在定义卷(-v)时,在Ubuntu上运行后,Docker percona(mysql mariadb)容器停止运行

问题描述:

在使用Docker 17.05.0-ce的Ubuntu 16.04上,尝试使用主机目录映射(卷)设置percona-mysql docker映像。以下是图像:在定义卷(-v)时,在Ubuntu上运行后,Docker percona(mysql mariadb)容器停止运行

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图像上。

解决方案

键入以下主机上的命令:

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. I型: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(I得到)
  7. 我检查由groups mysql该MySQL有一组(根目录)。因此,要获得根GID I型id -g mysql(我得到)
  8. chown命令允许设定文件UID:GID即使存在这些犯规的用户,所以我们并不需要在主机上创建用户mysql(!)。因此,在主机上运行chown ...之后,文件夹files具有与容器中的mysql期望的完全相同的用户和组。