官方文檔中演示時用到了五臺主機/虛擬機;node
這裏由於資源有限,只用三臺;docker
建立虛擬機(能夠用主機,也能夠用虛擬機);bootstrap
安裝Ubuntu 16.04 Server amd64系統(系統版本最好不要低於Ubuntu 14.04);segmentfault
開啓並配置ssh服務(方便操做);後端
安裝Docker(僅做參考,也能夠根據下面的步驟操做);api
Docker Registry搭建私有倉庫 和 批量上傳鏡像到私有倉庫(非必需,便於鏡像快速複用);ssh
啓用root用戶登陸及SSH遠程鏈接(包含失敗狀況的解決);curl
接下來的全部操做都是以root用戶進行的。tcp
升級軟件包(操做對象:manager0,node0,node1
);學習
apt-get update && apt-get -y upgrade && apt-get -y install curl
安裝Docker引擎(操做對象:manager0,node0,node1
);
curl -sSL https://get.docker.com/ | sh
配置並啓動Docker引擎,令其監聽Swarm節點的2375端口(操做對象:node0,node1
)
docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
操做對象:manager0
)前面已經列出了本次學習用到的三臺主機的主機名以及其IP地址,下面的操做用到的IP也是這三個主機IP。
拉取鏡像
docker pull progrium/consul
啓動發現後端
docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap
建立主管理員(操做對象:manager0
)
docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise 192.168.2.56:4000 consul://192.168.2.56:8500
由於這裏的manager0既是主管理員又是發現服務後臺,因此--advertise
和consul
的ip都是192.168.2.56
。
配置節點(操做對象:node0,node1
)
# 操做對象:node0(IP:192.168.2.77) docker run -d swarm join --advertise 192.168.2.77:2375 consul://192.168.2.56:8500 # 操做對象:node1(IP:192.168.2.129) docker run -d swarm join --advertise 192.168.2.129:2375 consul://192.168.2.56:8500
獲取主管理員和各節點的信息(操做對象:manager0
):
docker -H :4000 info
在集羣中運行容器(操做對象:manager0
):
docker -H :4000 run hello-world
經過屢次重複上面的操做出現了下面的結果,主管理員在兩個節點上建立的容器的數量趨於相等(這裏運行的容器是跑的一個core api demo,若是運行的是上面的指令,狀態應該是Exited)。
主管理員操做節點的容器:
# 查看集羣節點的容器列表 docker -H :4000 ps # 刪除容器 docker -H :4000 rm -f ContainerID # 啓/停容器 docker -H :4000 start/stop/restart ContainerID
與直接操做的區別就是docker
後面加了-H :4000