说明:最近在学习Docker,打算记录一下学习过程,不会从安装开始,只记录遇到的问题以及个人觉得“真香”的玩法。
后悔没有早点学习,这几天才发现是真的香啊,即使已经有了k8s,但我总觉得学习容器技术,也要先从Docker开始。话不多说,进入正题。
问题:在docker中安装并启动mysql,挂载本地目录到容器,在本地使用Navicat连接容器中的数据库,实现数据同步。
一、在docker中运行mysql镜像
1、查询mysql镜像
docker images
2、启动并挂载msyql数据目录到本地指定目录
docker run -p 3307:3306 --name mysql -v /Users/hyc/DockerStudy/mysql/log:/var/log/mysql -v /Users/hyc/DockerStudy/mysql/data:/var/lib/mysql -v /Users/hyc/DockerStudy/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
3、查看docker容器是否启动
docker ps
mysql已经启动,下面进入容器去连接mysql
4、进入容器连接mysql
docker exec -it 2e0e37441a3e /bin/bash mysql -u root -p
5、本地连接容器数据库
点击测试连接,发现成功;
6、测试数据同步问题
在本地新建数据库docker和docker_test表并插入一些数据后,去容器查看,发现数据已经同步到了容器
7、删除容器
将运行的容器删除后,发现本地连接失败
docker rm -f 2e0e37441a3e
刷新本地连接报错如下
8、重新使用之前的命令运行容器
docker run -p 3307:3306 --name mysql -v /Users/hyc/DockerStudy/mysql/log:/var/log/mysql -v /Users/hyc/DockerStudy/mysql/data:/var/lib/mysql -v /Users/hyc/DockerStudy/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
查看数据,发现数据也依然存在,并没有因为数容器的删除而删除
通过上面的操作发现,只要在docker中运行mysql镜像,通过数据卷技术(后面细说)将本地目录挂载到容器中的指定目录,就能实现本地与容器间的数据同步,所以以后就不用在本地傻傻的安装数据库(还有别的软件)了,
是真的香啊!!!