使用Docker快速搭建基础服务

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

#网络模式指定为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的方式一键启动,以下是相关步骤

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 [email protected]:/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.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:
6.启动docker-compose
docker-compose up -d

你可能感兴趣的:(docker,容器,运维)