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