目录

一、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及数据是否存在

更多推荐