应该是你挂载 “-v /home/hhao/mysql_slave/conf:/etc/mysql ” 配置文件里面的参数问题,把 MySQL 的 log 指定到 /var/log 下了,然后 mysql 用户没有这个目录的可写权限,导致 MySQL 启动失败。
下载个镜像验证一下:
root@ab0848e14e94:/# su - mysql
No directory, logging in with HOME=/
$ cd /var/log
$ touch mysqld.log
touch: cannot touch 'mysqld.log': Permission denied
$ cd ..
$ ls -al | grep log
drwxr-xr-x 3 root root 111 Jul 17 2019 log
果然没有权限创建日志文件,问题确认就好解决了,修改宿主机上的 my.cnf 文件 log-error=/var/lib/mysql/mysqld.log ,将日志输入到有权限的 /var/lib/mysql 目录下即可,或者 修改宿主机的 /var/log 目录权限为 777 然后挂载到容器内(将宿主机目录挂载到容器内给普通用户使用时,一定要给足够权限)。
另外你在验证容器内运行用户的时候还犯了一个别的错误。
反查 MySQL 镜像的 Dockerfile:
docker history mysql:8.0.16 --no-trunc=true --format "{ {.CreatedBy}}" | sed 's/^\(|3.*\)\?\/bin\/\(ba\)\?sh -c/RUN/' | sed 's/^RUN #(nop) */