zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    地理学考 要结合地图记忆的知识点
    物理选修3-1学习笔记
    UOJ#506. 【JOISC2020】遗迹 动态规划
    UOJ#39. 【清华集训2014】简单回路 动态规划 插头DP
    UOJ#339. 【清华集训2017】小 Y 和二叉树 贪心
    Codeforces 1239E. Turtle 折半
    概率论学习笔记
    UOJ#469. 【ZJOI2019】开关 生成函数
    被鄙视
    UOJ#468. 【ZJOI2019】Minimax搜索 动态DP
  • 原文地址:https://www.cnblogs.com/Aprilnn/p/11276136.html
Copyright © 2011-2022 走看看