準備條件:
1. 至少2臺Linux的主機,這裡選擇CentOS7
2.Xshell工具
在Windows作業系統下通過VMware Workstation創建兩臺CentOS的虛擬機
虛擬機啟動後,通過xShell分別連接上兩臺虛擬機
分別為兩臺虛擬機安裝docker,操作步驟參考
Linux下安裝和使用Docker
安裝完,使用命令
sudo systemctl start docker
啟動docker,再通過命令
docker version
查看docker版本信息
利用docker swarm 命令來指定其中一臺虛擬機為docker的Manager管理機
docker swarm init --advertise-addr=192.168.65.129
成功後提示信息,當前虛擬機節點成為一個manager管理者,如果需要添加一個worker工作者的話,可以通過join命令完成
Swarm initialized: current node (3lkefy351fmsroalxu6hb3hvs) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-2fl56eq1fov04ftmzsaayrybz92mrc2c90ja5sc8ni4ur5ze54-8lta9gj7pot0s9fhhxsbca032 192.168.65.129:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
在另一臺linux虛擬機上執行命令
docker swarm join --token SWMTKN-1-2fl56eq1fov04ftmzsaayrybz92mrc2c90ja5sc8ni4ur5ze54-8lta9gj7pot0s9fhhxsbca032 192.168.65.129:2377
這樣就創建了一個Worker的節點,即將當前虛擬機節點關聯到Manager節點
輸入命令
docker info
在兩臺虛擬機上分別查看Manager和Worker兩個節點的信息情況
查看當前虛擬機節點的node信息
docker node ls
只有Manager管理節點虛擬機上該命令才可用
如果在Worker工作節點上執行命令,則會出現錯誤信息提示
Error response from daemon: This node is not a swarm manager. Worker nodes can't be used to view or modify cluster state. Please run this command on a manager node or promote the current node to a manager.
接下來我們通過命令創建一個服務
docker service create --name weatherservice -p 8008:80 at.microservice
通過命令
docker service ls
查看當前虛擬機下的服務列表(注意:只能在Manager管理機器上執行,Worker工作機上是沒有執行權限的)
通過以下命令查看某個服務下的容器信息
docker service ps weatherservice
通過命令
docker ps -a
查看docker下的所有容器信息,其中就包括了上面剛創建的service服務
我們通過瀏覽器訪問埠,可以看到接口的返回信息
我們還可以對創建的Service再指定對外暴露的埠,可以使用以下命令
docker service update --publish-add 8009:80 weatherservice
通過命令docker service ls 查看,可以看到8008 和 8009兩個埠都可以訪問服務接口地址
docker動態伸縮,快速啟動多個服務實例(使用的是一致性哈希算法,還有一些其他算法,比如輪詢算法)
docker service scale weatherservice=5
查看5個不同的容器運行在不同的虛擬機節點上
docker service ps weatherservice
動態查看服務的負載均衡分布情況
docker service logs -f weatherservice