Docker安装
#Linux安装
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
#启动docker服务
systemctl start docker
#将docker添加到开机自启动
sudo systemctl enable docker
#查看是否成功安装
docker info
Mysql安装
#拉取镜像
docker pull mysql:5.6
#运行mysql 主机3307映射容器3306 后台运行 将主机的/root/data目录与容器的/var/lib/mysql目录挂载
docker run --name mysql1 -e MYSQL_ROOT_PASSWORD=root -p 3307:3306 -d -v /root/data:/var/lib/mysql mysql:5.7
Redis安装
#拉取镜像
docker pull redis:6.2.5
#简单运行
docker run --name redis -d redis:6.2.5
#开启aof持久化
docker run --name redis1 -d -p 6379:6379 -v /root/redisdata:/data redis:6.2.5 redis-server --appendonly yes
RabbitMQ
#拉取镜像
docker pull rabbitmq:3.7.28-management
#运行
docker run --name rabbit1 -p 15672:15672 -p 5672:5672 -d rabbitmq:3.7.28-management
RocketMQ
#拉取镜像
docker pull apache/rocketmq:4.8.0
#创建namesrv数据存储路径
mkdir -p /docker/rocketmq/data/namesrv/logs /docker/rocketmq/data/namesrv/store
#启动namesrv容器
docker run -d --restart=always --name rmqnamesrv -p 9876:9876 -v /docker/rocketmq/data/namesrv/logs:/root/logs -v /docker/rocketmq/data/namesrv/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" apache/rocketmq:4.8.0 sh mqnamesrv
#创建broker节点数据存储路径
mkdir -p /docker/rocketmq/data/broker/logs /docker/rocketmq/data/broker/store /docker/rocketmq/conf
#创建配置文件
vi /docker/rocketmq/conf/broker.conf
编辑broker.conf,并设置brokerIP1
# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = DefaultCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-a
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
# 设置broker节点所在服务器的ip地址
brokerIP1 = 【broker节点所在服务器的ip】
# 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full
diskMaxUsedSpaceRatio=95
#构建broker容器
docker run -d --restart=always --name rmqbroker --link rmqnamesrv:namesrv -p 10911:10911 -p 10909:10909 -v /docker/rocketmq/data/broker/logs:/root/logs -v /docker/rocketmq/data/broker/store:/root/store -v /docker/rocketmq/conf/broker.conf:/opt/rocketmq-4.8.0/conf/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" apache/rocketmq:4.8.0 sh mqbroker -c /opt/rocketmq-4.8.0/conf/broker.conf#拉取rockermq-console服务镜像
docker pull pangliang/rocketmq-console-ng:latest#构建rockermq-console容器 注意:设置namesrv机器地址
docker run -d --restart=always --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=175.24.204.30:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 9999:8080 pangliang/rocketmq-console-ng
MinIO
#拉取镜像
docker pull minio/minio:RELEASE.2022-06-20T23-13-45Z.fips
#创建本地数据卷
mkdir -p /minio/config
mkdir -p /minio/data#网络模式指定为bridgedocker run -p 9000:9000 -p 9090:9090 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=minioadmin" -e "MINIO_SECRET_KEY=minioadmin" -v /home/minio/data:/data -v /home/minio/config:/root/.minio minio/minio:RELEASE.2022-06-20T23-13-45Z.fips server /data --console-address ":9090" -address ":9000"
Docker-Compose一键启动
上述方法需要我们单独对每一个服务进行启动,当基础服务多的时候,非常不方便,所以可以采用Docker-Compose的方式一键启动,以下是相关步骤
1.docker-compose手动安装
在这个目录下载docker-compose-Linux-x86_64:
https://github.com/docker/compose/releases/tag/1.25.5
2.上传docker-compose-Linux-x86_64文件到Linux
#上传本地的文件到Linux服务器,注意更换为自己的地址
scp /Users/xxx/Downloads/docker-compose-Linux-x86_64 root@172.24.214.33:/usr/local/bin/docker-compose
3.赋予该文件可执行权限
sudo chmod +x /usr/local/bin/docker-compose
4.创建docker-compose文件
#在root目录下创建
cd ~/
touch docker-compose.yml
5.编辑docker-compose.yml
vim docker-compose.yml
version: "3.5"
services:mysql_base:image: mysql:5.6ports:- "3307:3306"container_name: mysql_baserestart: always #总是重启 相当于docker run --restart=alwaysenvironment:- "MYSQL_ROOT_PASSWORD=root"volumes: #数据卷映射- /root/volumes/mysql_app/mysqldata:/var/lib/mysql #手动数据卷 不存在刻意自动创建networks:- helloredis_base:image: redis:6.2.5ports:- "6379:6379"container_name: redis_baserestart: alwaysvolumes:- /root/volumes/redisdata:/datacommand: redis-server --appendonly yesnetworks:- hellorabbitmq_base:image: rabbitmq:3.7.28-managementports:- "5672:5672"- "15672:15672"container_name: rabbitmq_baserestart: alwaysnetworks:- hellominio_base:image: minio/minio:RELEASE.2022-06-20T23-13-45Z.fipsports:- "9000:9000"- "9090:9090"container_name: minio_baserestart: alwaysenvironment:- "MINIO_ACCESS_KEY=minioadmin"- "MINIO_SECRET_KEY=minioadmin"volumes:- /home/minio/data:/data- /home/minio/config:/root/.minionetworks:- hellovolumes: #声明项目中使用的所有卷fff:
networks:hello:
6.启动docker-compose
docker-compose up -d