Docker1:本地连接Docker中的mysql,实现数据同步

说明:最近在学习Docker,打算记录一下学习过程,不会从安装开始,只记录遇到的问题以及个人觉得“真香”的玩法。

后悔没有早点学习,这几天才发现是真的香啊,即使已经有了k8s,但我总觉得学习容器技术,也要先从Docker开始。话不多说,进入正题。

问题:在docker中安装并启动mysql,挂载本地目录到容器,在本地使用Navicat连接容器中的数据库,实现数据同步。

一、在docker中运行mysql镜像

1、查询mysql镜像

docker images

Docker1:本地连接Docker中的mysql,实现数据同步

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 

 Docker1:本地连接Docker中的mysql,实现数据同步

3、查看docker容器是否启动

docker ps

Docker1:本地连接Docker中的mysql,实现数据同步

 mysql已经启动,下面进入容器去连接mysql

4、进入容器连接mysql

docker exec -it 2e0e37441a3e /bin/bash
mysql -u root -p

 Docker1:本地连接Docker中的mysql,实现数据同步 

 5、本地连接容器数据库

Docker1:本地连接Docker中的mysql,实现数据同步

点击测试连接,发现成功;

 Docker1:本地连接Docker中的mysql,实现数据同步

6、测试数据同步问题

在本地新建数据库docker和docker_test表并插入一些数据后,去容器查看,发现数据已经同步到了容器

Docker1:本地连接Docker中的mysql,实现数据同步 

 7、删除容器

将运行的容器删除后,发现本地连接失败

docker rm -f 2e0e37441a3e

Docker1:本地连接Docker中的mysql,实现数据同步

 刷新本地连接报错如下

 Docker1:本地连接Docker中的mysql,实现数据同步

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

 Docker1:本地连接Docker中的mysql,实现数据同步

 查看数据,发现数据也依然存在,并没有因为数容器的删除而删除

Docker1:本地连接Docker中的mysql,实现数据同步

 通过上面的操作发现,只要在docker中运行mysql镜像,通过数据卷技术(后面细说)将本地目录挂载到容器中的指定目录,就能实现本地与容器间的数据同步,所以以后就不用在本地傻傻的安装数据库(还有别的软件)了,

是真的香啊!!!