天天看點

注冊中心Consul使用【叢集容器化部署】【使用docker-compose部署】1.前章回顧2.docker-compose簡介3.docker-compose安裝4.編寫docker-compose.yml5.docker-compose啟動6.修改consul另外節點的join IP7.啟動,檢視增加強定IP部署配置

目錄

1.前章回顧

2.docker-compose簡介

3.docker-compose安裝

4.編寫docker-compose.yml

5.docker-compose啟動

注意網絡問題:

6.修改consul另外節點的join IP

7.啟動,檢視

1.前章回顧

https://blog.csdn.net/wzy_168/article/details/100518527

上一章使用了docker指令部署consul叢集,但是每次都敲指令太麻煩了,可以使用docker-compose簡化。

2.docker-compose簡介

本章内容參考官網:https://docs.docker.com/compose/

Compose是一個用于定義和運作多容器Docker應用程式的工具。使用Compose,您可以使用YAML檔案來配置應用程式的服務。然後,使用單個指令,您可以從配置中建立并啟動所有服務。

3.docker-compose安裝

進入官網,https://docs.docker.com/compose/install/,選擇linux,可以找到安裝指令

#運作此指令以下載下傳Docker Compose的目前穩定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

#對二進制檔案應用可執行權限:
sudo chmod +x /usr/local/bin/docker-compose

#可以移到到你需要的目錄下,也可以不移動,如果移動,例如
mv /usr/local/bin/docker-compose /docker/docker-compose

#可以再建立一個連結就行
sudo ln -s /docker/docker-compose /usr/bin/docker-compose

#測試安裝
$ docker-compose --version
docker-compose version 1.24.1, build 1110ad01
           

4.編寫docker-compose.yml

version: '3'
services:
  #服務名
  consul_server_1:
    #容器名
    container_name: consul_server_1
    #使用的鏡像
    image: consul:1.6.0
    #映射的端口
    ports:
      - "8500:8500"
    #使用的網絡
    networks: 
      - consul
    #映射的目錄
    volumes:
      - /docker/consul/server1/config:/consul/config
      - /docker/consul/server1/data:/consul/data
    #需要導入的環境變量
    environment:
      - CONSUL_BIND_INTERFACE=eth0
      - TZ=Asia/Shanghai
    #是否伴随docker重新開機
    restart: always
    #執行的指令
    command: [
      'agent'
    ]

#使用自定義網絡,這樣每次啟動就不會建立新的網絡了,ip相對固定
networks:
  consul:
           

5.docker-compose啟動

#啟動/停止都需要進入到docker-compose.yml目錄下
#啟動指令-前台運作
docker-compose up

#啟動指令-背景運作
docker-compose up -d

#停止指令
docker-compose stop

#更多指令進入官網學習:https://docs.docker.com/compose/
           

注意網絡問題:

  • docker-compose使用的是docker網絡
#檢視現有docker網絡
docker network ls

#删除一個網絡
docker network rm +name

#檢視一個網絡的詳情
docker network inspect +name

#docker-compose網絡設定
#自定義網絡
networks:
  frontend:
  backend:  

#使用預設網絡
networks:
  default:
    # Use a custom driver
    driver: custom-driver-1

#使用現有網絡
networks:
  default:
    external:
      name: my-pre-existing-network
#更多參考官網:https://docs.docker.com/compose/networking/
           

6.修改consul另外節點的join IP

擷取consul_server_1的ip,可以根據啟動日志,或者運作完之後執行docker exec consul_server_1 consul members檢視IP

注冊中心Consul使用【叢集容器化部署】【使用docker-compose部署】1.前章回顧2.docker-compose簡介3.docker-compose安裝4.編寫docker-compose.yml5.docker-compose啟動6.修改consul另外節點的join IP7.啟動,檢視增加強定IP部署配置

注冊中心Consul使用【叢集容器化部署】【使用docker-compose部署】1.前章回顧2.docker-compose簡介3.docker-compose安裝4.編寫docker-compose.yml5.docker-compose啟動6.修改consul另外節點的join IP7.啟動,檢視增加強定IP部署配置

修改其餘consul配置的join ip

注冊中心Consul使用【叢集容器化部署】【使用docker-compose部署】1.前章回顧2.docker-compose簡介3.docker-compose安裝4.編寫docker-compose.yml5.docker-compose啟動6.修改consul另外節點的join IP7.啟動,檢視增加強定IP部署配置

在docker-compose.yml中增加其他節點服務,完整配置如下:

version: '3'
services:
  consul_server_1:
    container_name: consul_server_1
    image: consul:1.6.0
    ports:
      - "8500:8500"
    networks: 
      - consul
    volumes:
      - /docker/consul/server1/config:/consul/config
      - /docker/consul/server1/data:/consul/data
    environment:
      - CONSUL_BIND_INTERFACE=eth0
      - TZ=Asia/Shanghai
    restart: always
    command: [
      'agent'
    ]

  consul_server_2:
    container_name: consul_server_2
    image: consul:1.6.0
    networks: 
      - consul
    volumes:
      - /docker/consul/server2/config:/consul/config
      - /docker/consul/server2/data:/consul/data
    environment:
      - CONSUL_BIND_INTERFACE=eth0
      - TZ=Asia/Shanghai
    restart: always
    command: [
      'agent'
    ]

  consul_server_3:
    container_name: consul_server_3
    image: consul:1.6.0
    networks: 
      - consul
    volumes:
      - /docker/consul/server3/config:/consul/config
      - /docker/consul/server3/data:/consul/data
    environment:
      - CONSUL_BIND_INTERFACE=eth0
      - TZ=Asia/Shanghai
    restart: always
    command: [
      'agent'
    ]

  consul_client_1:
    container_name: consul_client_1
    image: consul:1.6.0
    networks: 
      - consul
    volumes:
      - /docker/consul/client1/config:/consul/config
      - /docker/consul/client1/data:/consul/data
    environment:
      - CONSUL_BIND_INTERFACE=eth0
      - TZ=Asia/Shanghai
    restart: always
    command: [
      'agent'
    ]

networks:
  consul:
           

7.啟動,檢視

注冊中心Consul使用【叢集容器化部署】【使用docker-compose部署】1.前章回顧2.docker-compose簡介3.docker-compose安裝4.編寫docker-compose.yml5.docker-compose啟動6.修改consul另外節點的join IP7.啟動,檢視增加強定IP部署配置
注冊中心Consul使用【叢集容器化部署】【使用docker-compose部署】1.前章回顧2.docker-compose簡介3.docker-compose安裝4.編寫docker-compose.yml5.docker-compose啟動6.修改consul另外節點的join IP7.啟動,檢視增加強定IP部署配置
注冊中心Consul使用【叢集容器化部署】【使用docker-compose部署】1.前章回顧2.docker-compose簡介3.docker-compose安裝4.編寫docker-compose.yml5.docker-compose啟動6.修改consul另外節點的join IP7.啟動,檢視增加強定IP部署配置

服務均正常,以後啟動隻需要docker-compose up -d 和 docker-compose stop即可,大大友善!

增加強定IP部署配置

version: '3'
services:
  consul_server_1:
    container_name: consul_server_1
    image: consul:1.6.0
    ports:
      - "8500:8500"
    networks: 
      consul:
        ipv4_address: 172.20.0.2
    volumes:
      - /docker/consul/server1/config:/consul/config
      - /docker/consul/server1/data:/consul/data
    environment:
      - CONSUL_BIND_INTERFACE=eth0
      - TZ=Asia/Shanghai
    restart: always
    command: [
      'agent'
    ]

  consul_server_2:
    container_name: consul_server_2
    image: consul:1.6.0
    networks: 
      consul:
        ipv4_address: 172.20.0.3
    volumes:
      - /docker/consul/server2/config:/consul/config
      - /docker/consul/server2/data:/consul/data
    environment:
      - CONSUL_BIND_INTERFACE=eth0
      - TZ=Asia/Shanghai
    restart: always
    command: [
      'agent'
    ]

  consul_server_3:
    container_name: consul_server_3
    image: consul:1.6.0
    networks: 
      consul:
        ipv4_address: 172.20.0.4
    volumes:
      - /docker/consul/server3/config:/consul/config
      - /docker/consul/server3/data:/consul/data
    environment:
      - CONSUL_BIND_INTERFACE=eth0
      - TZ=Asia/Shanghai
    restart: always
    command: [
      'agent'
    ]

  consul_client_1:
    container_name: consul_client_1
    image: consul:1.6.0
    networks: 
      consul:
        ipv4_address: 172.20.0.5
    volumes:
      - /docker/consul/client1/config:/consul/config
      - /docker/consul/client1/data:/consul/data
    environment:
      - CONSUL_BIND_INTERFACE=eth0
      - TZ=Asia/Shanghai
    restart: always
    command: [
      'agent'
    ]

networks:
  consul:
    ipam:
      config:
        - subnet: 172.20.0.0/16