• docker安装Mysql挂载数据卷 实现容器配置本地化


    Docker快速创建MySQL实例

    很多同学如果不会安装MySQL或者懒得安装MySQL,可以使用一下命令快速运行一个MySQL5.7实例,当然前提是你要有docker环境…

    一.安装docker

    1.查看内核,版本必须高于3.10

    uname -r

    2.移除旧的版本

    sudo yum remove docker*

    3.yum 包更新到最新

    sudo yum update

    4.安装需要的软件包, yum-util 提供yum-confifig-manager功能,另外两个是devicemapper驱动依赖的

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    5.设置yum源为阿里云

    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker- ce.repo

    6.安装docker

    sudo yum -y install docker-ce

    7.安装后查看docker版本

    docker -v

    8.启动 Docker 后台服务

    sudo systemctl start docker

    二、docker安装MySQL5.7

    安装前,,先设置阿里云镜像加速,,强烈推荐....否则那个速度实在感人

    注册一个阿里云账号,进入阿里云镜像加速模块

    1.查找MySQL的可用镜像

    docker search mysql

    或者去下面网址里查找版本

    mysql hubdocker下载地址

    2.拉取 MySQL

    docker pull mysql:5.7.31

    3.创建本地路径并挂载Docker内数据

    创建本地文件夹

    mkdir -p /root/docker/mysql/conf && mkdir -p /root/docker/mysql/data
    或者
    mkdir -p /root/docker/mysql/{conf,data}

    新建配置文件

    vim /root/docker/mysql/conf/mysqld.cnf

    内容如下:

    [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysql
    lower_case_table_names=1 #实现mysql不区分大小(开发需求,建议开启)
    #log-error      = /var/log/mysql/error.log
    # By default we only accept connections from localhost
    #bind-address   = 127.0.0.1
    # Disabling symbolic-links is recommended to prevent assorted security risks
    
    # 12.更改字符集 如果想Mysql在后续的操作中中文不出现乱码,则需要修改配置文件内容
    symbolic-links=0
    character-set-server=utf8mb4
    [client]
    default-character-set=utf8mb4
    [mysql]
    default-character-set=utf8mb4
    

    4.创建 MySQL 容器并启动

    docker run --name mysql-service5.7 
    --restart always 
    --privileged=true 
    -p 33306:3306 
    --mount type=bind,src=/root/docker/mysql/conf/mysqld.cnf,dst=/etc/mysql/mysql.conf.d/mysqld.cnf 
    --mount type=bind,src=/root/docker/mysql/data,dst=/var/lib/mysql 
    -e MYSQL_USER="haima" 
    -e MYSQL_PASSWORD="123456" 
    -e MYSQL_ROOT_PASSWORD="123456" 
    -d mysql:5.7.31
    

    解释说明

    --name:为容器指定一个名字
    –restart always:开机启动
    –privileged=true:提升容器内权限
    -mount 宿主机里的mysql.cnf:容器里的配置文件的mysqld.cnf:绑定挂载 映射配置文件
    -mount 宿主机里的数据目录data:容器里的数据目录data:绑定挂载 映射数据目录
    -e MYSQL_USER=”haima”:添加用户fengwei
    -e MYSQL_PASSWORD=”123456”:设置haima用户的密码为123456
    -e MYSQL_ROOT_PASSWORD=”123456”:设置root的密码为123456
    -d:后台运行容器,并返回容器 id
    

    5.进入Docker容器内

    docker exec -it mysql-service5.7 /bin/bash

    登录mysql

    mysql -uroot -p123456

    查看mysql字符集命令

    show variables like '%char%';

    mysql> show variables like '%char%';
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | utf8mb4                    |
    | character_set_connection | utf8mb4                    |
    | character_set_database   | utf8mb4                    |
    | character_set_filesystem | binary                     |
    | character_set_results    | utf8mb4                    |
    | character_set_server     | utf8mb4                    |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+
    8 rows in set (0.00 sec)
    
    

    查看确定Docker内 MySQL 文件相关路径

    查找Docker内,MySQL配置文件my.cnf的位置

    mysql --help | grep my.cnf

    6.退出mysql
    exit

    7.操作容器

    docker restart mysql-service5.7
    docker stop mysql-service5.7
    docker start mysql-service5.7
    docker rm mysql-service5.7 #容器停止时才能删除
    

    再进mysql里看一下mysql字符集命令,已经ok了

    启动navicat, 连接宿主机的公网IP ,指定端口为配置的33306,,账户root,密码123456
    这里的宿主机ip起始就是服务器(或者是虚拟机)的ip

    至此已经mysql已经安装成功了,mysql的数据和配置文件已经挂载到宿主机的/root/docker/mysql目录里了,
    即使删除容器数据也不会丢了,
    下次再重新挂载到宿主机的/root/docker/mysql目录里了,数据就又回来了.

    三.设置开机自动启动容器

    在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启:

    docker run --restart=always CONTAINER ID

    如果已经启动了,没有设置开机启动,则可以使用如下命令:

    docker update --restart=always CONTAINER ID

    参考文章

    参考文章

  • 相关阅读:
    远程服务器git搭建
    Ubuntu安装配置MySQL数据库,Apache,PHP
    html radio check
    opencv 抠图联通块(c接口)
    Vim命令
    二维码
    zTree Jquery eCharts
    Java进阶篇设计模式之二 ----- 工厂模式
    SpringBoot整合Netty并使用Protobuf进行数据传输(附工程)
    SpringBoot整合Jsp和Thymeleaf (附工程)
  • 原文地址:https://www.cnblogs.com/haima/p/13394986.html
Copyright © 2020-2023  润新知