创建Mysql容器过程

过程记录

docker pull mysql,当前最近的版本是8.0,然后docker images查看一下效果。

然后就是启动一个容器,命令是:docker run --name test-mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=123456 -d mysql,这句话的意思是:启动一个叫test-mysql的容器, 端口影射是3306到宿主机的3306,同时设置root的密码是123456,然后以守护进程的形式启动。

但是如果在宿主机上使用mysql -h127.0.0.1 -uroot -p123456可能会报错,报错内容是:Authentication plugin ‘caching_sha2_password’ cannot be loaded:

那么就docker exec -it 容器ID号 env LANG=C.UTF-8 /bin/bash进入到容器里,使用mysql -uroot -p123456,看一下在容器里是否可以正常登录,如果可以的话,那么就在mysql的命令行里执行ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

退出容器在宿主机上重新连接,这样就OK了。至于原因就是,mysql的客户端是yum安装的,虽然是centos 7,但是安装的版本也是5.5版本的,所以8.0的客户端有一个新的密码加密方式:caching_sha2_password,客户端不支持,所以需要手动到命令行里更改一下。

mysql存储的坑

先思考一个问题:假如某mysql容器里存储了100G的数据,那么这个容器关闭了,这100G的数据还在么?从宿主机是可以找到这100G的数据么?

docker inspect mysql-container-id,找到里面的volume字段,这里也显示挂载的host路径,可以通过这个路径来备份数据。或者使用docker cp mysql-container-id:/path/to/db-backup-file ./,把容器内数据放到当前目录下。如果是生产环境,必须使用Volume或数据容器。

参考资料

http://binary-space.iteye.com/blog/2412769
http://dockone.io/question/108
paradin

-------------This article is over!Thanks for reading!-------------
感谢您请我喝咖啡!(o´ω`o)
0%