Docker Stack เป็นการรัน docker-compose.yml ให้สามารถทำ Replica เหมือนกับทีทำบน Docker Swarm เช่น ถ้าเรากำหนด Replica ไว้ 3 ก็จะไปสร้าง Container ไว้ทั้ง 3 Node แต่ถ้าเราใช้ docker-compose.yml จะต้องใช้ Docker Stack ในการ Deploy
Get Started
- สร้างไฟล์ docker-compose.yml เพื่อทำการรัน Service 2 ตัว คือ PHP และ MySQL
version: '3'
services:
php:
image: php:5.6-apache
container_name: lamp_php5.6_apache
restart: always
deploy:
replicas: 3
volumes:
- ./html/:/var/www/html
ports:
- 80:80
mariadb:
image: mariadb:latest
container_name: lamp_mariadb
restart: always
deploy:
replicas: 3
environment:
- MYSQL_ROOT_PASSWORD=P@ssw0rd
- MYSQL_DATABASE=lamp
- MYSQL_USER=lamp
- MYSQL_PASSWORD=lamp
- ทำการ Deploy docker-compose.yml ด้วย Docker Stack
# docker stack deploy --compose-file docker-compose.yml lamp
- ตรวจสอบ Stack ที่เราได้ Deploy จะเห็นว่า Stack ที่ชื่อ lamp มีอยู่ 2 Service
# docker stack ls
NAME SERVICES ORCHESTRATOR
lamp 2 Swarm
- ตรวจสอบ Service ของ lamp Stack ว่ามีการทำ Replicated เท่าไหร่ในแต่ละ Service
# docker stack services lamp
ID NAME MODE REPLICAS IMAGE PORTS
fftuvl3aea4k lamp_php replicated 3/3 php:5.6-apache *:80->80/tcp
zxonde1mgtwv lamp_mariadb replicated 3/3 mariadb:latest
- ตรวจสอบสถานะของ Service จะเห็นว่า lamp_php จะรันอยู่บนโหนด Manager ที่เดียวเนื่องจากที่ไฟล์ docker-compose.yml เราได้ทำการระบุ Volume ไว้ มันเลยไม่สามารถทำ Replica ได้
# docker stack ps lamp
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
l0p7c2zm0y51 lamp_mariadb.1 mariadb:latest lab-docker-01.lab.local Running Running 2 minutes ago
tge4fav48u6h lamp_php.1 php:5.6-apache lab-docker.lab.local Running Running about a minute ago
ydf6s0cyp0hm lamp_php.2 php:5.6-apache lab-docker.lab.local Running Running 34 seconds ago
z3hadbd94b2o lamp_mariadb.2 mariadb:latest lab-docker.lab.local Running Running about a minute ago
ez5bw804v9st lamp_php.3 php:5.6-apache lab-docker.lab.local Running Running 35 seconds ago
di6eumxmdae0 lamp_mariadb.3 mariadb:latest lab-docker-02.lab.local Running Running 2 minutes ago
- ทำการลบ Stack
# docker stack rm lamp
Removing service lamp_mariadb
Removing service lamp_php
Removing network lamp_default
อ่านเพิ่มเติม : https://dockr.ly/2PpCkDH
Leave a Reply