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為失敗時,重啟
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