Swarm 在Docker1.12版本之前屬於一個獨立的項目,在Docker1.12版本發佈之後,該項目合併到了Docker中,成爲Docker的一個子命令。Swarm是Docker 社區提供的唯一一個原生支持Docker集羣管理的工具。Swarm可以把多個Docker 主機組成的系統轉換爲單一的虛擬 Docker主機,使得容器可以組成跨主機的子網網絡。Docker Swarm 是一個爲IT運維團隊提供集羣和調度能力的編排工具。
swarm的管理體系
·Docker Swarm 優點
·任何規模都有高性能表現
·靈活的容器調度
·服務的持續可用性
·和DockerAPI及整合支持的兼容性
·Docker Swarm爲Docker化應用的核心功能(諸如多主機網絡和存儲卷管理)提供原生支持。
做swarm初始化
docker swarm init
docker notes ls
一個master,兩個worker
然後在server2和server3中分別啓動docker
systemctl daemon-reload
systemctl restart docker
同時保證他們能上網
·docker swarm 相關概念
·節點分爲管理(manager)節點和工作(worker)節點
·任務(Task)是Swarm中的最小的調度單位,目前來說就是一個單一的容器。
·服務(Services)是指一組任務的集合,服務定義了任務的屬性。
docker network create -d overlay mynet
我們創建一個服務
docker service create --name my_cluster --network mynet --replicas 3 -p 80:80 ikubernetes/myapp:v1
如果myapp鏡像沒有的話會從外網下載
docker ps my_cluster,查看容器在三個節點的運行狀態
然後我們部署一個監控
先拉取資源
docker pull dockersamples/visualizer
然後我們再創建一個服務
然後我們打開瀏覽器去查看
這三個節點均能實現負載均衡
如果節點不夠用我們可以做拉伸
docker service scale my_cluster=6
6個節點也可以做縮減(彈性壓縮)
docker service scale my_cluster=3
滾動更新--然後我們可以批量的進行更新容器
一次更新3個間隔五秒
這樣剛纔的v1都別更新爲v2了
編輯我們docker compose文件
然後我們讀取compose文件
docker stack deploy -c docker-compose.yml my_cluster
查看部署
修改conpose文件
給節點設置內存和cpu,保證一個資源限制
然後我們節點需要的鏡像都上傳到harbor倉庫中
ikubernetes/myapp:v1、ikubernetes/myapp:v2均長傳到倉庫中,然後刪除本地的鏡像
然後修改我們的私有倉庫vim daemon.json(server1\2\3)
{
"registry-mirrors":["https://reg.westos.org"]
}
然後
systemctl daemon-reload
systemctl reatart docker
也要保證解析是正確的(/etc/hosts)
然後拉取嘗試、
發現連接成功
修改名字myapp:
image: myapp:v1
修改端口ports:
"8000:80"
然後我們部署創建
還可以創建滾動更新(vim compose.yml)
myapp:
image:myapp:v2
部署一下
查看更新
然後去訪問查看一下8000端口
我們也可以通過portainer
進行圖形可視化的監控
然後我們在harbor上創建一個portainer的項目
docker tag portainer/portainer:latest reg.westos.org/portainer/portainer:latest放到我們的私有倉庫中
docker push reg.westos.org/portainer/portainer:latest然後上傳
然後我們部署
docker stack deploy -c portainer-agent-stack.yml portainer
然後我們訪問9000端口強制修改密碼登錄
這樣就可以查看我們的集羣監控
也可以直接在上述界面部署服務
我們先刪除我們的my_cluster
然後設置register
然後在服務欄
添加名字,端口網絡等信息
直接create
也可以進行拉伸直接修改後面的數字即可