0
点赞
收藏
分享

微信扫一扫

Docker部署镜像(二)

小迁不秃头 2022-04-06 阅读 62
docker

Docker部署镜像(二)


文章目录


前言

延续上一篇文章,本文将介绍一些稍微少用一点的环境部署,本人主要是进行微服务开发,所以部署的环境多少与微服务有点关联。


一、部署镜像

1.Cerebro

docker pull lmenezes/cerebro

docker run --name cerebro -p 9000:9000 -d lmenezes/cerebro

说明:

2.Zookeeper

docker pull zookeeper

docker run --privileged=true -d --name zookeeper --publish 2181:2181  -d zookeeper

3.Elasticsearch-head

docker pull docker.io/mobz/elasticsearch-head:5

docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5

4.MSSQL

docker pull mcr.microsoft.com/mssql/server

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Aa123456" -p 1433:1433 --name mssql -d mcr.microsoft.com/mssql/server

说明:

5.Sentinel

docker pull bladex/sentinel-dashboard

docker run -p 8858:8858 --name sentinel -d bladex/sentinel-dashboard

6.Seata

docker pull seataio/seata-server

docker run -d --restart always --name seata -p 8091:8091 -v /usr/local/docker/seata:/seata-server -e SEATA_IP=192.168.23.1 -e SEATA_PORT=8091 seataio/seata-server

说明:

7.Canal

docker pull canal/canal-server

docker run --name canal -d -p 11111:11111 -v /usr/local/docker/canal:/home/admin/canal-server canal/canal-server

说明:


二、部署镜像集群

在分布式环境的需求下,单机环境已经难以满足,但如果又重新生成镜像实例来进行配置又显得麻烦,这时候我们可以使用docker-compose来进行一键部署,以下列举一下搭建ElasticSearch和Redis的集群的例子。
ElasticSearch集群:

# docker-compose.yml文件
version: '2.0'
services:
  es01:
    image: elasticsearch:7.12.1
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      # 注意自己本机或者服务器的内存大小进行调整JAVA_OPTS
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - /usr/local/docker/elasticsearch/data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic
  es02:
    image: elasticsearch:7.12.1
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - /usr/local/docker/elasticsearch/data02:/usr/share/elasticsearch/data
    ports:
      - 9201:9200
    networks:
      - elastic
  es03:
    image: elasticsearch:7.12.1
    container_name: es03
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - /usr/local/docker/elasticsearch/data03:/usr/share/elasticsearch/data
    networks:
      - elastic
    ports:
      - 9202:9200
volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge

Redis集群:

# docker-compose.yml文件
version: '2.0'

services:
  redis7001:
    image: 'redis'
    container_name: redis7001
    command:
      ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./redis-cluster/7001/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis-cluster/7001/data:/data
    ports:
      - "7001:7001"
      - "17001:17001"
    environment:
      # 设置时区为上海,否则时间会有问题
      - TZ=Asia/Shanghai


  redis7002:
    image: 'redis'
    container_name: redis7002
    command:
      ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./redis-cluster/7002/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis-cluster/7002/data:/data
    ports:
      - "7002:7002"
      - "17002:17002"
    environment:
      # 设置时区为上海,否则时间会有问题
      - TZ=Asia/Shanghai


  redis7003:
    image: 'redis'
    container_name: redis7003
    command:
      ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./redis-cluster/7003/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis-cluster/7003/data:/data
    ports:
      - "7003:7003"
      - "17003:17003"
    environment:
      # 设置时区为上海,否则时间会有问题
      - TZ=Asia/Shanghai


  redis7004:
    image: 'redis'
    container_name: redis7004
    command:
      ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./redis-cluster/7004/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis-cluster/7004/data:/data
    ports:
      - "7004:7004"
      - "17004:17004"
    environment:
      # 设置时区为上海,否则时间会有问题
      - TZ=Asia/Shanghai


  redis7005:
    image: 'redis'
    container_name: redis7005
    command:
      ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./redis-cluster/7005/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis-cluster/7005/data:/data
    ports:
      - "7005:7005"
      - "17005:17005"
    environment:
      # 设置时区为上海,否则时间会有问题
      - TZ=Asia/Shanghai


  redis7006:
    image: 'redis'
    container_name: redis7006
    command:
      ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./redis-cluster/7006/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis-cluster/7006/data:/data
    ports:
      - "7006:7006"
      - "17006:17006"
    environment:
      # 设置时区为上海,否则时间会有问题
      - TZ=Asia/Shanghai

在docker-compose.yml同级目录下在命令行运行以下命令即可生成对应集群

docker-compose up -d

三、镜像文件的获取

有时候想要挂载文件却不知道具体文件在哪个路径,亦或者想要修改对应的配置却不想重写整份配置文件,可以在Docker生成默认配置的镜像实例后对文件进行拷贝,然后删除实例,重新生成挂载文件后的实例。
以Seato为例子:

# 生成默认实例
docker run --name seata -p 8091:8091 -d seataio/seata-server
# docker cp命令进行拷贝
# docker cp [镜像名]:[实例内部对应的文件路径] [想要拷贝到的本机路径]
docker cp seata:/seata-server /usr/local/docker/seata
# 停止删除原实例 或者可以直接使用docker rm -f seata命令
docker stop seata
docker rm seata
# 重新生成挂载文件后的实例
docker run -d --restart always --name seata -p 8091:8091 -v /usr/local/docker/seata:/seata-server -e SEATA_IP=120.77.238.28 -e SEATA_PORT=8091 seataio/seata-server

需要注意的是docker cp命令需要管理员权限

总结

本文接续上篇简单地介绍了如何使用Docker部署几种少用的环境,以及使用docker-compose搭建集群和docker cp拷贝实例文件的方法。

举报

相关推荐

0 条评论