美文网首页
【菜鸡学习】docker中使用一行部署Mysql并挂载相应文件和

【菜鸡学习】docker中使用一行部署Mysql并挂载相应文件和

作者: 来秋先生 | 来源:发表于2018-02-13 08:16 被阅读0次

    偷懒没写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 中配置时区

    感谢各位大牛给出的教程和指导!!!

    相关文章

      网友评论

          本文标题:【菜鸡学习】docker中使用一行部署Mysql并挂载相应文件和

          本文链接:https://www.haomeiwen.com/subject/ktqjtftx.html