Swarm創建docker集羣:服務發現-配置文件法

  • 本文不詳細介紹swarm、docker的原理、架構,主要記錄Centos7上安裝docker、swarm構建docker集羣的步驟。
  • 安裝swarm有兩種方式:(1)通過docker官方獲取token-id(2)配置文件中配置節點。由於方法1需要訪問外網,所以對內網環境有侷限性。

環境

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[root@localhost ~]# docker --version
Docker version 1.8.2-el7.centos, build a01dc02/1.8.2
[root@localhost ~]#
  • 本文只通過1個docker節點組成swarm+docker集羣進行實驗。

Docker安裝&配置

請參考docker安裝&配置

swarm配置文件

echo "[docker_ip]:[docker_port]" >> /your/path/cluster
  • [docker_ip]換成要加入docker集羣的節點ip,將 [docker_port]換成上面配置的端口,例如2375.
  • /your/path/cluster換成配置文件的位置。例如/root/cluster。

  • 可以重複此步驟將多個節點添加到集羣中。或者直接按照這種格式編輯cluster文件。

安裝&啓動swarm

說明:docker官方提供了swarm的鏡像,目前的swarm安裝過程均是下載swarm鏡像並啓動。

  • 下載swarm鏡像:docker pull swarm
docker run –d –p [swarm_port]:2375 –v /your/path/cluster:/tmp/cluster --privileged=true swarm manage file:///tmp/cluster
  • 啓動swarm:將上面命令中/your/path/cluster替換成自己的配置文件位置。例如/root/cluster
  • 將[swarm_port]換成swarm的ip(未被佔用即可),例如:2376
  • 命令中的2375不需要替換,因爲swarm鏡像默認expose了2375端口。

驗證

  • 通過swarm查看節點
docker run --rm=true --privileged=true -v /root/cluster:/tmp/cluster docker.io/swarm list file:///tmp/cluster
  • 可以看到如下內容:
[root@localhost ~]# docker run --rm=true --privileged=true -v /root/cluster:/tmp/cluster docker.io/swarm list file:///tmp/cluster
192.168.1.65:2375
[root@localhost ~]#
  • 通過docker查看節點.
  • swarm_ip換成swarm所在的節點的ip。
  • swarm_port換成swarm的端口,例如2376.
docker -H [swarm_ip]:[swarm_port] info
  • 可以看到如下內容:
[root@localhost ~]# docker -H 192.168.1.65:2376 info
Containers: 1
Images: 1
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 1
 localhost.localdomain: 192.168.1.65:2375
  └ Status: Healthy
  └ Conttainers: 1
  └ Reserved CPUs: 0 / 8
  └ Reserved Memory: 0 B / 32.79 GiB
  └ Labels: executiondriver=native-0.2, kernelversion=3.10.0-229.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper
CPUs: 8
Total Memory: 32.79 GiB
Name: 5ae8d49987cf
[root@localhost ~]#
  • 上例中docker節點只有1個,且與swarm在同一個host機中。

集羣中創建容器

創建兩個容器:執行2次docker run busybox
通過docker -H [swarm_ip]:[swarm_port] ps -a可以看到swarm中創建的docker容器.
通過docker ps -a可以看到在本機上也有兩個容器。

因爲該示例中有1個docker節點,所以2個容器都在1個docker節點上。如果有2個docker節點,可以看到2個容器分佈在不同的docker節點。

至此,swarm已經實驗完成

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章