Docker安装MySQL
以MySQL8为例,进行安装和配置
- 拉取镜像
docker pull mysql
- 创建容器
docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql
- 删除容器
-f
参数:强制删除,即使容器正在运行,如果不加该参数,如果容器正在运行,是无法删除的,必须先docker stop mysql
# 语法:docker rm -f 容器ID/容器名称
docker rm -f mysql
- 启动、重启、停止容器
# 启动
docker start mysql
# 重启
docker restart mysql
# 停止
docker stop mysql
- 查看容器的日志
- f
参数:实时查看日志,如果不加该参数,则只看一次当前的日志,日志变化了,不会实时显示
# 语法:docker logs -f 容器名/容器ID
docker logs -f mysql
如果出现权限不足,先删除容器,然后使用以下命令启动
docker run -di --name=mysql -p 3306:3306 --privileged=true -e MYSQL_ROOT_PASSWORD=root mysql
- 登录问题
由于MySQL8的加密规则变了,如果使用SQLYong
的低版本,会不匹配加密规则,导致登录失败,解决办法:登录容器,修改加密规则
# 进入MySQL容器
docker exec -it mysql /bin/bash
- 登录数据库
mysql -u root -p root
- 执行以下命令,修改加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
- 退出MySQL
exit;
Docker安装Nacos
以创建Nacos单机版为例,集群参考:https://www.cnblogs.com/FlyAway2013/p/11201250.html
- 拉取镜像
docker pull nacos/nacos-server:v2.0.1
-
创建容器
-
MODE=standalone
单机版 -
--restart=always
开机启动 -
-p 8848:8848
映射端口 -
-d
创建一个守护式容器在后台运行
Nacos的端口:8848,gRPC协议的端口:9848
docker run --env MODE=standalone --restart=always --name nacos -d -p 8848:8848 -p 9848:9848 nacos/nacos-server
- 访问Nacos控制台
例如浏览器进入 http://192.168.253.133:8848/nacos,账号:nacos,密码:nacos,即可进入
Docker安装Redis
- 拉取镜像
docker pull redis
- 创建容器
docker run -d --name redis --restart=always -p 6379:6379 redis
Docker安装Elasticsearch
以7.4版本的Elasticsearch为例,注意安装的IK分词器版本,要与Elasticsearch的版本一致,否则可能会有问题
- 拉取镜像
docker pull elasticsearch:7.4.0
- 创建容器
9200端口:http端口(推荐使用)
9300端口:tcp端口 (ES7中不建议使用9300端口)
docker run -id --name elasticsearch -d -p 9200:9200 -v /usr/share/elasticsearch/plugins:/usr/share/elasticsearch/plugins -e "discovery.type=single-node" elasticsearch:7.4.0
- 判断是否启动成功,进入9200端口地址,返回
You Know,for Search
,即为启动成功
http://192.168.253.133:9200
- 安装IK分词器(中文分词)
IK分词器:https://github.com/medcl/elasticsearch-analysis-ik
在GitHub中,下载IK分词器压缩包,并放到Linux的root
目录,再通过cp命令拷贝到Elasticsearch
的映射目录
docker cp analysis-ik elasticsearch:/usr/share/elasticsearch/plugins
- 重启Elasticsearch容器
docker restart elasticsearch
Docker 安装Kibana
以7.4.0版本的Kibana为例,注意要和Elasticsearch的版本一致,否则可能会有问题
- 拉取镜像
docker pull kibana:7.4.0
- 安装容器
注意Kibana要链接Elasticsearch容器,命令中的ip地址,要改成你的Linux的ip地址
docker run -d -p 5601:5601 --name=kibana --link elasticsearch -e "ELASTICSEARCH_URL=http://192.168.253.133:9200" kibana:7.4.0
- 启动成功后,访问Kibana,能出现Kibana的后台管理页面即为成功
http://192.168.253.133:5601/
Docker安装Kafka
因为Kafka依赖Zookeeper,所以要先用Docker安装Zookeeper,才能安装和使用Kafka
- 拉取Zookeeper镜像
docker pull zookeeper
- 安装Zookeeper容器
docker run -d --name zookeeper -p 2181:2181 -t zookeeper
- 拉取Kafka镜像
docker pull wurstmeister/kafka
- 安装Kafka容器
注意:记得修改IPi地址为你的
docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=192.168.253.133 --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest
Docker安装MongoDB
- 拉取镜像
docker pull mongo
- 创建容器
docker run -di --name mongo -p 27017:27017 -v ~/data/mongodata:/data mongo
Docker安装Seata
- 拉取镜像
docker pull seataio/seata-server:1.4.2
- 配置Seata
创建Seata配置文件registry.conf
,并将该文件上传到Linux的/home/seata
目录下
注意:记得修改IP地址为你的
registry {
# tc服务的注册中心类,这里选择nacos,也可以是eureka、zookeeper等
type = "nacos"
nacos {
# seata tc 服务注册到 nacos的服务名称,可以自定义
application = "seata-tc-server"
serverAddr = "192.168.253.133:8848"
group = "DEFAULT_GROUP"
namespace = ""
cluster = "SH"
username = "nacos"
password = "nacos"
}
}
config {
# 读取tc服务端的配置文件的方式,这里是从nacos配置中心读取,这样如果tc是集群,可以共享配置
type = "nacos"
# 配置nacos地址等信息
nacos {
serverAddr = "192.168.253.133:8848"
namespace = ""
group = "DEFAULT_GROUP"
username = "nacos"
password = "nacos"
dataId = "seataServer.properties"
}
}
- 配置中心进行Seata配置
以Nacos作为配置中心为例,在Nacos控制台中,新建seataServer.properties
配置
注意:里面配置了Seata需要使用的MySQL数据库,所以数据库数据源url、账号密码都要改成你的
# 数据存储方式,db代表数据库
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://192.168.253.133:3306/seata?serverTimezone=Asia/Shanghai&useUnicode=true&rewriteBatchedStatements=true
store.db.user=root
store.db.password=root
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000
# 事务、日志等配置
server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
# 客户端与服务端传输方式
transport.serialization=seata
transport.compressor=none
# 关闭metrics功能,提高性能
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898
- 配置Seata数据库和表
MySQL中,创建一个叫seata的数据库,并运行以下sql语句,会生成全局事务表
、分支事务表
、全局锁表
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- 分支事务表
-- ----------------------------
DROP TABLE IF EXISTS `branch_table`;
CREATE TABLE `branch_table` (
`branch_id` bigint(20) NOT NULL,
`xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`transaction_id` bigint(20) NULL DEFAULT NULL,
`resource_group_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`resource_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`branch_type` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`status` tinyint(4) NULL DEFAULT NULL,
`client_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`gmt_create` datetime(6) NULL DEFAULT NULL,
`gmt_modified` datetime(6) NULL DEFAULT NULL,
PRIMARY KEY (`branch_id`) USING BTREE,
INDEX `idx_xid`(`xid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- 全局事务表
-- ----------------------------
DROP TABLE IF EXISTS `global_table`;
CREATE TABLE `global_table` (
`xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`transaction_id` bigint(20) NULL DEFAULT NULL,
`status` tinyint(4) NOT NULL,
`application_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`transaction_service_group` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`transaction_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`timeout` int(11) NULL DEFAULT NULL,
`begin_time` bigint(20) NULL DEFAULT NULL,
`application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`gmt_create` datetime NULL DEFAULT NULL,
`gmt_modified` datetime NULL DEFAULT NULL,
PRIMARY KEY (`xid`) USING BTREE,
INDEX `idx_gmt_modified_status`(`gmt_modified`, `status`) USING BTREE,
INDEX `idx_transaction_id`(`transaction_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Table structure for lock_table
-- ----------------------------
DROP TABLE IF EXISTS `lock_table`;
CREATE TABLE `lock_table` (
`row_key` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`xid` varchar(96) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`transaction_id` bigint(20) NULL DEFAULT NULL,
`branch_id` bigint(20) NOT NULL,
`resource_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`table_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`pk` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`gmt_create` datetime NULL DEFAULT NULL,
`gmt_modified` datetime NULL DEFAULT NULL,
PRIMARY KEY (`row_key`) USING BTREE,
INDEX `idx_branch_id`(`branch_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
SET FOREIGN_KEY_CHECKS = 1;
- 创建容器
注意:记得修改IP地址为你的
docker run -di --name seata \
-p 8091:8091 \
-e SEATA_IP=192.168.253.133 \
-e SEATA_PORT=8091 \
-e SEATA_CONFIG_NAME=file:/root/seata-config/registry \
-v /home/seata:/root/seata-config \
seataio/seata-server:1.4.2
安装Minio
- 拉取镜像
# 拉取最新版本
docker pull minio/minio
# 拉取指定版本
docker pull minio/minio:RELEASE.2022-06-20T23-13-45Z.fips
- 安装容器
设置Minio的登录账号为minio
,密码为minio123
docker run -d -p 9000:9000 -p 50000:50000 --name minio -e "MINIO_ROOT_USER=minio" -e "MINIO_ROOT_PASSWORD=minio123" -v /home/data:/data -v /home/config:/root/.minio minio/minio server --console-address ":50000" /data
- 登录后台管理系统
Minio的后台管理系统的端口为50000,ip + 端口,输入上面的账号和密码,点击登录,即可进入登录界面
http://192.168.253.133:50000
安装XXL-Job
- 拉取镜像
docker pull xuxueli/xxl-job-admin:2.3.0
- 安装容器
这里是使用--link
,链接docker中的mysql
容器,如果不这样做,XXL-Job启动时,会连接不到mysql(需要使用mysql中的xxl-job数据库)
注意:要修改为你的mysql数据库的账号的密码
docker run --link mysql:db -e PARAMS="--spring.datasource.url=jdbc:mysql://db:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=root" -p 8080:8080 -v /Users/lixiaogang/data/xxl-job:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin:2.3.0
- mysql中,导入XXL-Job需要的数据库和表
https://gitee.com/xuxueli0323/xxl-job/blob/master/doc/db/tables_xxl_job.sql
- 登录后台管理系统
账号:admin
密码:123456
安装EMQX
- 拉取镜像
docker pull emqx/emqx:v4.1.0
-
安装容器
- 后台管理系统的访问端口:18083
- 代码客户端的连接端口:1883或8083
docker run -tid --name emqx -p 1883:1883 -p 8083:8083 -p 8081:8081 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v4.1.0
- 登录后台管理系统
- 登录账号:admin
- 密码:public
注意:IP地址改成你的
http://192.168.200.128:18083/#/
网友评论