Docker安装MySQL

本文介绍了Docker的一些基本操作指令,包括查看网络、容器信息等。详细阐述了网桥模式与主机模式的区别,以及如何在Docker中固定容器IP。此外,还详细展示了如何在Docker中安装并配置MySQL,包括创建数据目录、设置配置文件,并允许Navicat远程连接。最后,强调了数据持久化的实践方法。
摘要由CSDN通过智能技术生成

目录

一、docker一些操作指令

二、网桥模式与主机模式

三、容器ip

四、在docker中安装mysql

1.拉取

2.创建

3.1conf目录

 3.2data目录

4.创建mysql5.7容器

5.修改mysql允许Navicat远程连接


一、docker一些操作指令

1.1.查看docker中所有的网络指令

docker network ls 

1.2.查看所有网络指令

ifconfig

1.3.查看docker里容器所有信息详情指令

docker inspect bridge

1.4.查看虚拟机中所有ip

ip addr

1.5.docker拉取指令

docker pull xxx

1.6.进入docker容器指令

docker exec -it 容器名称 bash

1.7.查看虚拟机防火墙状态

systemctl status fireword

1.8.在宿主机中创建目录命令

-p:多级创建,创建的文件夹前面的路径不存在时会自动创建
     {xx,xx}:创建多个文件

mkdir -p /data/mysql/{conf,data}

二、网桥模式与主机模式

网桥模式 bridge
     >每个容器都具备独立的ip

     需要进行端口映射
        docker run-itd \
        --name tomcat \
        -p 8999:8080 \
        tomcat

主机模式 host
     >ip和端口与宿主机共享

     不需要映射端口
        docker run -itd \
        --name tomcat \
        --net host \
        tomcat

三、容器ip

容器的ip会随着启动速度来变

1.将容器的端口映射到虚拟机

           9999 -> 3306
            192.168.198.128:9999

2.固定容器的ip  (默认的网桥不能设置固定的ip)

        docker run-itd \
            --name tomcat \
            -p 8999:8080 \
            tomcat

3.自定义网络  (两台在同一网络下的容器可以互相ping通)

        docker network create \
            --subnet 172.18.0.0/16 \
            ots

4.创建自定义网络容器

        docker run-itd \
            --name t \
            -net ots \
            --ip 172.18.0.3 \  
            tomcat

    一个容器连接另一个网络
    docker network connect ots c1

重要的数据不要放在容器中
     容器被删除的时候,容器内的所有数据也会被清空
     so,可以将宿主机的文件夹挂载进去,就算容器被删除,但放在挂载文件夹内的数据不会消失

容器中的基础系统(centos, alpine)和使用的系统有区别

     当容器内没有vi vim yum...之类的命令时
     但宿主机中有某个需要的指令,可以将配置文件放到宿主机,使用挂载的方式放到容器中

四、在docker中安装mysql

1.拉取

docker pull mysql/mysql-server:5.7

2.创建

mkdir -p /data/mysql/{conf,data}

3.1conf目录

        在桌面安装mysql时需要在安装文件中编写一个配置文件 <my.ini>
        在docker中安装mysql时也需要一个my.cnf文件,但他们的后缀名不一样

        建议直接把配置文件中的数据目录直接写死
        >将my.cnf放到conf目录下面

my.cnf文件内容

[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
 
[mysqld]
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
secure-file-priv=/var/lib/mysql-files
user=mysql

symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


##下面为添加的自定义配置
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
sql_mode= STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_allowed_packet=10M
default-time_zone='+8:00'
default_authentication_plugin=mysql_native_password


#主数据库配置
log-bin=mysql-bin
server-id=1

 3.2data目录

        数据保存到宿主机中,下次需要的时候重启容器,原有数据都能被加载,不会丢失数据。

4.创建mysql5.7容器

docker run -p 3306:3306 \
        --name mysql \
        -v /data/mysql/conf/my.cnf:/etc/my.cnf \
        -v /data/mysql/data:/var/lib/mysql \
        --privileged=true \
        --restart=always \
        -e MYSQL_ROOT_PASSWORD=123456 \
        -d mysql/mysql-server:5.7

参数说明
        -p 3306:3306:宿主机端口:容器端口。
        --name mysql:容器名字。
        -v:挂载宿主机的一个目录, 持久化存储的关键所在,将主机目录挂载到容器对应目录,分别是:配置文件、日志文件、数据文件。
        -v /data/mysql/conf:/etc/mysql/conf.d
        -v /data/mysql/logs:/logs
        -v /data/mysql/data:/var/lib/mysq
        --privileged=true:使用该参数,container内的root拥有真正的root权限, 
                       否则,container内的root只是外部的一个普通用户权限。
        --restart=always:容器自动启动参数,其值可以为[no,on-failure,always]
                      no为默认值,表示容器退出时,docker不自动重启容器。
                      on-failure表示,若容器的退出状态非0,则docker自动重启容器,
                      还可以指定重启次数,若超过指定次数未能启动容器则放弃。
                      always表示,只要容器退出,则docker将自动重启容器。
        -e MYSQL_ROOT_PASSWORD=123456:设置root的密码。
        -d mysql/mysql-server:5.7:后台启动模式及使用的镜像  。

5.修改mysql允许Navicat远程连接

  5.1.进入mysql5.7容器

docker exec -it mysql /bin/bash

  5.2.登录mysql服务器,之后输入mysql密码:123456

mysql -u root -p;

  5.3给用户授权    

grant all privileges on *.* to root@'%' identified by '123456';

  5.4.更新权限后,外部就可以使用native之类的连接软件进行连接了

flush privileges;

 

        注1:数据库字符集查看
            show variables like'character%';

6.创建数据库nacos_config,并进行初始化

7.持久化测试

删除容器,重启容器,测试之前添加的数据naocs及数据是否存在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值