1、拉取下载mysql:5.7的镜像文件
docker pull mysql:5.7
2、快速启动一个mysql容器:
docker run --name hdc-mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=hdc@328216 -d mysql:5.7
--name 指定一个容器的别名:hdc-mysql
-e 指定环境变量,MYSQL_ROOT_PASSWORD为必须变量即必须设置的变量,为root用户设置密码hdc@328216
-d 后台启动
mysql:5.7 mysql的镜像名称:标签tag
-p 映射宿主机的3307端口到该容器的3306端口(因为mysql启动的默认端口为3306)
3、进入hdc-msyql容器内:
docker exec -it hdc-mysql /bin/bash
4、登录mysql:在容器内执行:
mysql -uroot -phdc@328216
mysql> 执行如下sql创建库创建表:
-- 建库
create database `db_student`;
SET character_set_client = utf8;
use db_student;
-- 建表
drop table if exists `user`;
CREATE TABLE user (
id tinyint(5) zerofill auto_increment not null comment '学生学号',
name varchar(20) default null comment '学生姓名',
age tinyint default null comment '学生年龄',
class varchar(20) default null comment '学生班级',
sex char(5) not null comment '学生性别',
unique key (id)
)engine=innodb charset=utf8;
-- 插入数据
insert into user values('1','小明','15','初三','男');
insert into user values('2','小红','13','初二','女');
mysql>select * from user;
mysql> select * from user;
+-------+------+------+-------+-----+
| id | name | age | class | sex |
+-------+------+------+-------+-----+
| 00001 | | 15 | | |
| 00002 | | 13 | | |
+-------+------+------+-------+-----+
由结果得知,中文显示为空,这是因为容器默认启动之后编码不支持中文字符。
5、删除旧容器,重新创建
docker rm -f hdc-mysql
docker run --name hdc-mysql -e MYSQL_ROOT_PASSWORD=hdc@328216 -d mysql:5.7
docker exec -it hdc-mysql env LANG=C.UTF-8 /bin/bash
【注】:env LANG=C.UTF-8表示设置容器的环境变量为utf-8
6、使用dockerfile创建mysql镜像:
dockerfile内容:
FROM mysql:5.7
WORKDIR /docker-entrypoint-initdb.d
ENV LANG=C.UTF-8
ADD init.sql .
【注】:
ADD的作用:对于tar等压缩包会自动解压,多于可执行文件也可自动执行。
/docker-entrypoint-initdb.d 是因为:
当容器第一次启动时,将使用提供的配置变量创建和初始化具有指定名称的新数据库。它会在/docker-entrypoint-initdb.d路径下自动执行文件(可扩展).sh、.sql、.sql.gz
指定构建mysql镜像:
docker build -t hdc-mysql-5.7 .
启动mysql容器:
docker run --name my-mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=hdc@328216 -d hdc-mysql-5.7
进入容器内部:
docker exec -it my-mysql /bin/bash
容器内部执行连接mysql:
mysql -uroot -phdc@328216
mysql>select * from db_student.user;
+-------+--------+------+--------+-----+
| id | name | age | class | sex |
+-------+--------+------+--------+-----+
| 00001 | 小明 | 15 | 初三 | 男 |
| 00002 | 小红 | 13 | 初二 | 女 |
结果含中文正常
注:docker构建mysql镜像的官网:https://hub.docker.com/
网友评论