偷懒没写dockerfile......直接用的指令
docker run --privileged -p 3306:3306 --name mysql -v $PWD/conf/:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
解决了报错:/usr/bin/docker-current: Error response from daemon: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused "process_linux.go:364: container init caused \"rootfs_linux.go:54: mounting \\\"$pwd(我的当前路径 匿了)/conf\\\" to rootfs \\\"/var/lib/docker/devicemapper/mnt/46b34d890127f54db7cfdb8ad2c972f05489d1368420d7854d41c6a7f705a1fd/rootfs\\\" at \\\"/var/lib/docker/devicemapper/mnt/46b34d890127f54db7cfdb8ad2c972f05489d1368420d7854d41c6a7f705a1fd/rootfs/etc/mysql/mysql.cnf\\\" caused \\\"not a directory\\\"\""\n".
说明目标不是一个文件目录啊,所以需要把文章里所说的.cnf文件改为目录,不过原理...还不是很明白,如果有大神知道原理请在评论中不吝赐教!
--privileged:使此容器中的root真正拥有root权限
3306:3306 : 第一个3306指访问你宿主主机地址后面需要写的映射端口地址 如127.0.0.1:3306
第二个指这个镜像原本映射的哪一个端口
--name:起别名,否则会用几个形容词代替
-v(重点):需要把宿主主机的相关目录挂载到容器中,$PWD指当前宿主主机位于哪个目录中,相当于linux终端中写pwd指令的路径。
挂载目标是容器中的/etc/mysql/conf.d,/logs,/mysql_data
需要挂载的宿主主机路径是$PWD/conf/,$PWD/logs,$PWD/data
-e MYSQL_ROOT_PASSWORD:值为mysql的密码
-d 此容器可以运行于后台
mysql:5.6 : mysql是镜像的名字,冒号后面是tag名,如果不写就默认latest
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci : 防止中文出现乱码,前者为字符集,后者为字符集校对规则,在数据库建表时一致。
docker中设置时区方法:
Step1. docker exec -ti containerID /bin/bash
Step2. echo "Asia/Shanghai" > /etc/timezone
Step3. dpkg-reconfigure -f noninteractive tzdata
参考文章:1. 菜鸟教程 Docker 安装 MySQL 方法二
2. Tommy的自留地 在 Docker 中配置时区
感谢各位大牛给出的教程和指导!!!