0


Docker安装MySQL

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

标签: docker 容器 tomcat

本文转载自: https://blog.csdn.net/Pcccy/article/details/129892317
版权归原作者 likeeefish 所有, 如有侵权,请联系我们删除。

“Docker安装MySQL”的评论:

还没有评论