Docker原生服務部署

Docker應用架構層次

  1. Container容器(最底層)
  2. Service(同一服務的一組容器,可伸縮架構、負載均衡。能夠service命令或stack建立)
  3. Stack(相互依賴的一組服務)

單機容器服務部署 - compose編排式

V2語法編排服務

version: '2'

services:
  MyService:
    image: my_image:tag
    container_name: xxx
    hostname: yyy
    restart: always
    env_file: .env
    environment:
	  - key=val
    ports:
	  - 'xxx:yyy'
    volumes:
      - xxx:yyy
    links:
      - OtherService

服務管理

docker-compose --version
docker-compose 【-f docker-compose.yaml】 up -d 【ServiceName】
docker-compose ps  # 查看compose啓動的容器
docker-compose down

集羣服務部署,必須在ManageNode上操做node

集羣服務部署 - service命令式

#部署服務
docker service create
        --name 服務名稱  #同一網絡內不一樣服務可經過服務名互訪
        --mode replicated|global
        --network 集羣網絡 #要求overlay網絡
        --replicas 副本數
        -p 端口:端口
        --mount type=bind,src=源路徑,dst=目標路徑
        鏡像名稱  command

#滾動更新服務
docker service update
        --update-parallelism 並行更新節點數
        --update-delay 更新間隔秒數
        --limit-cpu 0.25  #限額cpu比例
        --reserve-cpu 0.1  #預留cpu比例
        --image 鏡像名稱
        服務名稱

docker service ls #服務列表
docker service ps 服務名稱 #羅列服務下的task(服務包含的容器節點稱做task)
docker service inspect --pretty 服務名稱 #監控指定服務
docker service scale 服務名稱=節點數 #服務伸縮
docker service rm 服務名稱 #服務下線

集羣服務部署 - compose編排式

Docker 1.13開始支持v3 compose語法docker

v3語法編排服務

version: '3'

services:
  MyService:
    image: my_image:tag
    container_name: xxx
    hostname: yyy
    restart: always
    env_file: .env
    environment:
	  - key=val
    deploy:
      replicas: 5 #service啓用副本數
      resources:
        limits:
          cpus: 0.1 #每一個節點cpu資源佔比
          memory: 50M #每一個節點內存資源限額
      restart_policy:
        condition: on-failure
      placement:
        constraints: [node.role == manager]
    ports:
      - 'xxx:yyy'
    networks:
      - MyNetwork #service使用的負載均衡網絡(要求overlay網絡)
    volumes:
      - xxx:yyy
    depends_on:
      - OtherService

networks: #網絡自動負載均衡
  MyNetwork:

服務管理

docker stack deploy -c docker-compose.yml StackName #發佈Service Stack(每次執行都會自動熱更新stack)

docker stack services StackName #羅列stack下的service
docker stack ps StackName #羅列stack下的task
docker service ls #服務列表
docker service ps 服務名稱 #羅列服務下的task(服務包含的容器節點稱做task)
docker stack rm StackName #下線Service Stack
相關文章
相關標籤/搜索