mysql安装
docker hub 上面查找 mysql 镜像
docker search mysql
从 docker hub 上(阿里云加速器)拉取 mysql 镜像到本地标签为 5.7
docker pull mysql:5.7
使用 mysql5.7 镜像创建容器(也叫运行镜像)
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
简单版
使用 mysql 镜像
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
查看3306端口是否被占用
netstat -anp |grep 3306
启动成功
进入容器
docker exec -it 2c04dfeaecbe /bin/bash
create database db01;
use db01;
create table t1(id int,name varchar(20));
insert into t1 values(1,"z3");
select * from t1;
外部 Win10 连接运行在 dokcer 上的 mysql 容器实例服务
插入中文数据试试
为什么报错?
docker 上默认字符集编码隐患
docker 里面的 mysql 容器实例查看,内容如下:
SHOW VARIABLES LIKE 'character%'
删除容器后,里面的 mysql 数据如何办?
容器数据卷
新建mysql容器实例
docker run -d -p 3306:3306 --privileged=true -v /zzyyuse/mysql/log:/var/log/mysql -v /zzyyuse/mysql/data:/var/lib/mysql -v /zzyyuse/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
docker run:在docker中启动一个容器实例
-d:该容器在后台运行
-p 3306:3306:容器与主机映射端口为,主机3306,容器3306
--name mysql:容器运行后的名称
-v /mysqldata/mysql/log:/var/log/mysql:将容器/var/log/mysql目录下的数据,备份到主机的 /mysqldata/mysql/log目录下
-v /mysqldata/mysql/data:/var/lib/mysql:将容器/var/lib/mysql目录下的数据,备份到主机的 /mysqldata/mysql/data目录下
-v /mysqldata/mysql/conf:/etc/mysql:将容器/etc/mysql目录下的数据,备份到主机的 mysqldata/mysql/conf目录下
-e MYSQL_ROOT_PASSWORD=root:设置当前mysql实例的密码为root
mysql:5.7:需要运行的容器名称以及版本号
停止之前的容器
依旧报错
换个名字
mysql->mysql5.7
进入目录新建my.cnf
通过容器卷同步给 mysql 容器实例
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
重新启动 mysql 容器实例再重新进入并查看字符编码
再次建库建表
插入中文数据,成功
删除容器mysql5.7
再次启动
数据恢复了
Q.E.D.