docker中搭建MySQL服务

docker中构建MySQL服务

容器运行MySQL,实现在外部可以连到数据库服务进行增删改查。 要求:

  1. 宿主机系统重启完成后数据库服务自动启动

  2. 重新创建MySQL容器后,原数据还可以使用(即删除容器数据不丢失)

 

具体实现:

  1. 利用docker获取MySQL镜像

    docker pull ecr.eisoo.com:5000/mysql:5.7.27

[root@localhost ~]# docker pull ecr.eisoo.com:5000/MySQL:5.7.27
5.7.27: Pulling from MySQL
Digest: sha256:b16d058ac835a0a087d4e42a5c200abc2a4936ec73ff7a427b28257f66bb5c04
Status: Image is up to date for ecr.eisoo.com:5000/MySQL:5.7.27
ecr.eisoo.com:5000/MySQL:5.7.27

2.配置文件

[root@localhost ~]# mkdir my
[root@localhost ~]# mkdir -p docker/MySQL/data docker/MySQL/conf
  • 在root目录下新建my目录,并新建docker/mysql/data 目录和docker/mysql/conf目录

[client]
port=3306
default-character-set=utf8
[MySQL]
default-character-set=utf8
[MySQLd]
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 配置大小写不敏感
lower_case_table_names=1
  • 进入root/my/docker/mysql/conf目录,新建my.cnf文件并对mysql进行配置

3.目录、文件权限设置

[root@localhost conf]# chmod -R 777 /root/my/docker/mysql
[root@localhost conf]# cd /root/my/docker/mysql/conf
[root@localhost conf]# chmod 644 my.cnf

4.运行容器并挂载目录

[root@localhost data]# systemctl enable docker.service
  • 设置docker开机自启动,实现MySQL在docker开机启动时也同时启动

mysql[root@localhost conf]# docker run -d -it --restart=always --name mysqlL -p 3308:3306 -e mysql_ROOT_PASSWORD=driver --privileged=true -v /root/my/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /root/my/MySQL/data:/var/lib/mysql -v /root/my/docker/MySQL/logs:/var/log/mysql ecr.eisoo.com:5000/mysql:5.7.27
  • --name 容器指定名称

  • --restart=always 设置MySQL服务自启动

  • -e MySQL_ROOT_PASSWORD=driver 为MySQL设置root密码

  • -p 端口映射

  • -v 挂载宿主机目录到容器以实现删除容器后数据不丢失

5.进入容器

[root@localhost data]# docker exec -it mysql bash
  • 进行增删改查操作

mysql> create database test;
mysql> use test;
mysql> create table test(name varchar(20),age int);
mysql> insert test values('april',20),('tom',18),('mary',21);
mysql> select * from test;
+-------+------+
| name | age |
+-------+------+
| april |   20 |
| tom   |   18 |
| mary |   21 |
+-------+------+
3 rows in set (0.00 sec)
mysql> update test set name='lisa' where name='mary' ;
mysql> select * from test;
+-------+------+
| name | age |
+-------+------+
| april |   20 |
| lisa |   21 |
+-------+------+
2 rows in set (0.00 sec)

6.删除容器

[root@localhost data]# docker stop mysql
[root@localhost data]# docker rm mysql

 

猜你喜欢

转载自www.cnblogs.com/Aprilnn/p/11276136.html
今日推荐