Docker的软件安装
一:安装软件的步骤
- 搜索镜像
- 拉取镜像
- 查看镜像
- 启动镜像
- 停止镜像
- 移除容器
二:Docker安装tomcat
#查找
docker search tomcat
#下载
docker pull tomcat:8.5
#查看是否成功下载
docker images tomcat
#运行
docker run -d -p8080:8080 --name tom tomcat:8.5
ps:后台运行,暴露映射端口8080启动tomcat:805,名字时tom
- 无法访问
- 解决办法
- 进入到tomcat中
docker exec -it 7e60b291c9f8 /bin/bash
- 因为webapp中没有文件,所以会出现无法访问的情况
#删除webapps
rm -rf webapps
mv webapps.dist/ webapps
重新访问,就发新有了
三:Docker安装mysql
#拉取镜像
docker pull mysql:5.7
#查看
docker images
#启动mysql 映射端口和root密码 和容器卷
docker run -d -p 3306:3306 --privileged=true -v /usr/local/mysql/log:/var/log/mysql -v/usr/local/mysql/data:/var/lib/mysql -v/usr/local/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123321 --name mysql mysql:5.7
# 在/usr/local/mysql/conf 新建my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
# 重启mysql
docker restart d7b25905c9f2
#进入到Mysql
docker exec -it d7b25905c9f2 /bin/bash
- 测试数据备份
- 删除容器
docker rm -f d7b25905c9f2
- 重新启动,因为有数据卷所以数据可以同步
docker run -d -p 3306:3306 --privileged=true -v /usr/local/mysql/log:/var/log/mysql -v/usr/local/mysql/data:/var/lib/mysql -v/usr/local/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123321 --name mysql mysql:5.7
- 数据还存在
四:Docker安装redis`
#拉取镜像
docker pull redis:6.0.8
#查看
docker images
#在/usr/local/redis新建redis.conf ,将自己之前安装的redis.conf拷贝一份
#修改配置文件
#启动
docker run -d -p 6379:6379 --privileged=true -v/usr/local/redis/redis.conf:/etc/redis/redis.conf -v/usr/local/redis/data:/data redis:6.2 redis-server /etc/redis/redis.conf
#进入容器
docker exec -it e67f6b18bce8 /bin/bash
#
redis-cli
- 测试
- 在本机的redis.conf文件配置为10个
- 重启 docker restart e67f6b18bce8
- 说明修改生效,redis是加载的本机的配置文件
- 如果想远程访问需要将
- 其他知识
bind 0.0.0.0 #改成0.0.0.0,使redis可以外部访问
daemonize no #用守护线程的方式启动
requirepass 你的密码 #给redis设置密码
appendonly yes #redis持久化 默认是no
五:Docker安装mysql的主从复制
#在/usr/local/mysqlmaster/conf 目录下新建一个my.cnf文件
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=101
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能
log-bin=mall-mysql-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
#复制上去
#先启一个映射端口3307的
docker run -d -p 3307:3306 --privileged=true -v /usr/local/mysqlmaster/log:/var/log/mysql -v/usr/local/mysqlmaster/data:/var/lib/mysql -v/usr/local/mysqlmaster/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123321 --name mysqlmaster mysql:5.7
# 通过容器id进入
docker exec -it 02f3d0806236 /bin/bash
#授权连接 在mysql的图像化界面运行两行命令
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
#- 配置从机 在/usr/local/mysqlslave/conf创建文件my.cnf
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mall-mysql-slave1-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1
#复制进去
#在开启一台mysql3308
docker run -d -p 3308:3306 --privileged=true -v /usr/local/mysqlslave/log:/var/log/mysql -v/usr/local/mysqlslave/data:/var/lib/mysql -v/usr/local/mysqlslave/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123321 --name mysqlslaver mysql:5.7
- 在主服务器查看主从同步的状态
- show MASTER STATUS
- 连接从服务器
#在从机上运行
change master to master_host='宿主机ip', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;
例:
change master to master_host='192.168.116.126', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=2654, master_connect_retry=30;
ps:踩坑
master_user
master_password
master_log_file
master_log_pos 这四个参数一定要合主机对应
主从复制说明:
master_host:主数据库的IP地址;
master_port:主数据库的运行端口;
master_user:在主数据库创建的用于同步数据的用户账号;
master_password:在主数据库创建的用于同步数据的用户密码;
master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
master_connect_retry:连接失败重试的时间间隔,单位为秒。
#在从服务开启主从复制
start slave
-这样就算成功了
- 新建库表 同步完成
六:Docker安装redis集群
- 等过两天在写累了