一、在docker run 新建mysql 容器的时候,由于容器里mysql 相关的数据文件的从属都是用户mysql,官方镜像里,mysql用户的id为999,且容器里的root用户只是普通用户的身份,非超级管理员,没有权限对挂载的宿主机的数据目录的文件进行写入修改操作,若直接启动mysql容器会失败,查看日志(docker logs -f CONTAINER_ID)会提示挂载的目录权限拒绝(PERMISSION DENIED),所以启动容器前需要把宿主机需要挂载的数据目录的从属改为用户999所有(chown -R 999 /mount_volume),这里不直接修改为mysql所有,是因为宿主机和容器的mysql用户id未必相同。
二、已验证,在mysql5.7.28中,docker启动mysql后自带的配置文件位置为/etc/mysql/mysql.conf.d,里面有一个默认的配置文件mysql.cnf 指定了数据库实例的数据存放目录datadir=/var/lib/mysql,以及若干的配置,经测试发现/etc/mysql/mysql.conf.d/mysql.cnf中的配置优先级较高,会覆盖/etc/mysql/conf.d目录下的配置文件my.cnf的相同配置项,所以如果需要docker映射或添加自定义配置文件my.cnf,则需要删除或者注释/etc/mysql/mysql.conf.d/mysql.cnf中的相关配置。或者直接使用默认的数据目录datadir=/var/lib/mysql映射到宿主机上以实现数据持久化。(注:可前往https://hub.docker.com/搜索相关镜像使用说明,或者在启动容器后,使用docker inspect CONTAINER_ID 查看容器挂载目录情况。)
三、安装harbor的时候若web入口使用HTTP协议访问,则在配置文件harbor.yml里的hostname设置为IP地址访问,已验证,若hostname使用域名,则在后续登陆到仓库Registry的时候(docker login A.B.C.D),会提示所提供的hostname的域名无法解析,故无法访问。在使用IP登陆到docker仓库之前,需要在配置文件/etc/docker/daemon.json里加入"insecure-registries":["A.B.C.D"],由于是JSON格式的数据注意用逗号分隔开,之后先运行docker-compose down -v(注意运行时需要和harbor.yml文件在同一目录下)停止harbor生态实例,然后运行prepare脚本让harbor.yml里修改后的配置生效,然后运行docker-compose up -d启动harbor即可。