docker hub
-
下载MySQL镜像
sudo docker pull mysql:5.7
-
检查下载好的镜像
sudo docker images
-
切换root的用户
su root
-
启动容器
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql
-v /mydata/mysql/data:/var/lib/mysql
-v /mydata/mysql/conf:/etc/mysql
-e MYSQL_ROOT_PASSWORD=root
-d mysql:5.7
-p 3306:3306为端口映射
-v 是目录挂载 具体意思是在本体linux下的/mydata/mysql/log :冒号就是与容器内部的/var/log/mysql进行挂载,直白的说容器内部log文件的记录 会直接反应到linux指定目录下,容器内不的日志,linux在外面也能够看到
如上图所示,MySQL容器挂载的各个log,数据,配置文件dg在外面root linux里面也是可以访问到的,容器外部对挂载文件直接修改,是可以同步到容器
-
查看docker运行中的容器
docker ps
-
进入MySQL容器内部
docker exec -it docker容器的前三位id\或者容器的名字 /bin/bash
- 就会发现我们进入容器内部的环境当中,因为每一个容器都是一个小型的linux系统,如上图为哦们已经进入到MySQL容器的内部
- 查看目录结构会发现,他就是一个完整的一个linux的目录结构
-
查看MySQL装在了那个位置
whereis mysql
-
下图是docker容器文件挂载与端口映射
访问linux的3306接口也就能够访问到MySQL容器的3306的端口
cd conf vi my.cnf
- 复制下面配置文件
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect=‘SET collation_connection = utf8_unicode_ci’
init_connect=‘SET NAMES utf8’
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
-
docker 重启mysql
docker restart mysql
-
进入交互模式
docker exec -it mysql /bin/bash
查看linux上配置的文件是否同步到位