#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
#拉取镜像
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
#拉取镜像
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
#拉取镜像
docker pull rabbitmq:3.7.28-management
#运行
docker run --name rabbit1 -p 15672:15672 -p 5672:5672 -d rabbitmq:3.7.28-management
#拉取镜像
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
#拉取镜像
docker pull minio/minio:RELEASE.2022-06-20T23-13-45Z.fips
#创建本地数据卷
mkdir -p /minio/config
mkdir -p /minio/data
#网络模式指定为bridge
docker 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-Linux-x86_64:
https://github.com/docker/compose/releases/tag/1.25.5
#上传本地的文件到Linux服务器,注意更换为自己的地址
scp /Users/xxx/Downloads/docker-compose-Linux-x86_64 [email protected]:/usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
#在root目录下创建
cd ~/
touch docker-compose.yml
vim docker-compose.yml
version: "3.5"
services:
mysql_base:
image: mysql:5.6
ports:
- "3307:3306"
container_name: mysql_base
restart: always #总是重启 相当于docker run --restart=always
environment:
- "MYSQL_ROOT_PASSWORD=root"
volumes: #数据卷映射
- /root/volumes/mysql_app/mysqldata:/var/lib/mysql #手动数据卷 不存在刻意自动创建
networks:
- hello
redis_base:
image: redis:6.2.5
ports:
- "6379:6379"
container_name: redis_base
restart: always
volumes:
- /root/volumes/redisdata:/data
command: redis-server --appendonly yes
networks:
- hello
rabbitmq_base:
image: rabbitmq:3.7.28-management
ports:
- "5672:5672"
- "15672:15672"
container_name: rabbitmq_base
restart: always
networks:
- hello
minio_base:
image: minio/minio:RELEASE.2022-06-20T23-13-45Z.fips
ports:
- "9000:9000"
- "9090:9090"
container_name: minio_base
restart: always
environment:
- "MINIO_ACCESS_KEY=minioadmin"
- "MINIO_SECRET_KEY=minioadmin"
volumes:
- /home/minio/data:/data
- /home/minio/config:/root/.minio
networks:
- hello
volumes: #声明项目中使用的所有卷
fff:
networks:
hello:
docker-compose up -d