1. 程式人生 > 實用技巧 >php-cli命令列選項

php-cli命令列選項

技術標籤:docker

Docker Stack簡介

docker stack是基於cluster叢集模式,釋出服務的一個功能。
docker stack 有如下幾個命令
docker stack deploy 釋出或者更新一個stack
docker stack list 獲取所有stack
docker stack ps 列出stack中執行的task
docker stack services 列出stack中的服務
docker stack rm 移除stack

wordpress實戰

基於docker stack 實現之前的wordpress功能

version: '3'

services:

  web:
    image: wordpress
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_PASSWORD: root
    networks:
      - my-network
    depends_on:
      - mysql
    deploy:
      mode: replicated
      replicas: 3
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
      update_config:
        parallelism: 1
        delay: 10s

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: wordpress
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - my-network
    deploy:
      mode: global
      placement:
        constraints:
          - node.role == manager

volumes:
  mysql-data:

networks:
  my-network:
    driver: overlay

簡單解釋下docker-compose的各個引數
services : 要執行的服務,這裡填寫了兩個服務,web服務和mysql服務
web服務的構建方式為映象構建,埠為80埠對映為8080埠
environment : 表示環境變數,通過environment傳遞給容器
networks : 兩個服務都通過my-network 網路通訊
deploy : 這裡定義了釋出規則,mode 為replicated表示這個服務可以複製很多個例項
模式為global表示之啟動一個例項,不允許複製
replicas : 表示副本數量
restart_policy : 重啟策略,condition為失敗時,重啟

delay : 多個例項重啟延遲為5s
max_attempts : 表示最大嘗試次數為3
update_config : 表示更新配置,parallelism表示並行更新數量
placement :設定服務執行的位置,constraints表示約束,
node.role == manager只允許該服務執行在manager節點
volumes :表示掛載的卷
networks: 設定網路driver為overlay,這樣可以允許多主機互通

通過docker stack釋出服務

執行如下命令

docker stack deploy  wordpress --compose-file  docker-compose.yml

可以看到建立瞭如下服務

Creating network wordpress_my-network
Creating service wordpress_web
Creating service wordpress_mysql

接下來我們看看運行了哪些stack

docker stack list

會展示cluster執行的stack

NAME                SERVICES            ORCHESTRATOR
wordpress           2                   Swarm

可以看到名字為wordpress的stack正在執行,其上運行了兩個服務
檢視wordpress上具體的服務

docker stack services wordpress

可以看到服務

ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
2soubn9aey1y        wordpress_mysql     global              1/1                 mysql:5.7           
p3h9g6tigocx        wordpress_web       replicated          3/3                 wordpress:latest    *:8080->80/tcp

有兩個服務,分別是wordpress_mysql和wordpress_web。在web和mysql之前增加了wordpress這個stack的名字
接下來列出wordpress中執行的task

docker stack ps wordpress

可以看到stack上跑了三個服務

ID                  NAME                                        IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
gvtnr0dy5sjs        wordpress_mysql.axapk9ke3o47r3er3jeqilpgg   mysql:5.7           VM-0-9-ubuntu       Running             Running 24 minutes ago                       
q15ncnt0cx73        wordpress_web.1                             wordpress:latest    instance-6nsdfhv9   Running             Running 24 minutes ago                       
z3ivbcopqguv        wordpress_web.2                             wordpress:latest    VM-0-9-ubuntu       Running             Running 24 minutes ago                       
zmlyu8lnw78x        wordpress_web.3                             wordpress:latest    instance-6nsdfhv9   Running             Running 24 minutes ago

如果要更新服務,可以通過修改docker-compose修改配置,然後重新deploy指定修改後的docker-compose即可。

最後可以通過docker stack rm 刪除stack

docker stack rm wordpress

可以看到服務被移除

Removing service wordpress_mysql
Removing service wordpress_web
Removing network wordpress_my-network

  

感謝關注我的公眾號

wxgzh.jpg