在Ubuntu16.04上使用Docker17.05.0-ce,我尝试使用主机目录映射(卷)设置percona停靠映像。这是图像:
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图像上。
发布于 2017-10-06 15:22:42
解决方案
在主机上键入以下命令:
cd /home/myuser/db
sudo chown 1001:0 files然后再次运行容器,仅此而已:)
道路
docker logs percona,并看到mysql没有写入dir /var/lib/mysql的权限。docker run --name percona -e MYSQL_ROOT_PASSWORD=secret -p 6603:3306 -d percona/percona-server:latest mysql -h docker_host_ip -P 6603docker exec -it percona /bin/bashcd /var/libls -l之后,我在mysql附近看到下面的行:drwxr-xr-x 5 mysql root 4096 Oct 6 14:39 mysql。这意味着所有者是mysql,而组是root。id -u mysql获得mysql用户UID (我获得了1001)groups mysql检查mysql是否有一个组(根)。因此,要获得根GID,我输入id -g mysql (我得到)chown命令允许为不存在的用户设置UID:GID文件(!)因此,我们不需要在主机上创建用户mysql。因此,在主机上运行chown ...之后,文件夹files具有与mysql在容器中所期望的相同的用户和组。https://stackoverflow.com/questions/46609066
复制相似问题