術語node
本文中用到的術語書名docker
docker節點(docker node):docker的運行環境,一般爲物理機或者虛擬機
測試環境centos
2個docker主機的配置以下所示
[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
2
3
4
5
配置dockerapi
主要是配置docker的api端口,具體參考docker的安裝&配置app
準備Docker鏡像dom
docker pull swarm
docker pull etcd
1
2
啓動服務發現:etcdide
在docker集羣的master節點上執行下面命令(其實能夠在任何一個docker環境中執行下面的命令,只要注意後面使用etcd時的ip便可,將其假設爲[etcd_ip])測試
docker run -ti -d -p [etcd_port]:4001 --name etcd docker.io/microbox/etcd -name discovery
1
其中[map_port]須要替換成本身環境中可用的端口,好比4001。
該步驟是啓動了etcd,並在4001端口監聽,以便各個docker節點進行上報。ui
啓動swarm mangerip
docker run -ti -d -p [swarm_manager_port]:2375 --name swarm-manager docker.io/swarm manage etcd://[etcd_ip]:[etcd_port]
1
將[swarm_manager_port]替換成本身環境中可用的端口,好比2376
將[etcd_ip]換成etcd所在環境的ip,例如docker集羣master節點的ip(etcd運行的位置決定了該ip的值)
將[etcd_port]換成啓動etcd時映射到host機後的端口,好比4001
docker節點加入集羣
在每一個要加入集羣docker節點上執行下面的命令。
docker run -ti -d --name swarm-agent docker.io/swarm join --addr [docker_node_ip]:[docker_port] etcd://[etcd_ip]:[etcd_port]
1
2
將[docker_node_ip]替換成當前docker節點的ip
將docker_port替換成當前docker監聽的端口,好比2375。端口的配置在本文上面已經介紹,或者參考具體參考docker的安裝&配置
將[etcd_ip]換成etcd所在環境的ip,例如docker集羣master節點的ip(etcd運行的位置決定了該ip的值)
將[etcd_port]換成啓動etcd時映射到host機後的端口,好比4001
驗證
docker -H [swarm_ip]:[swarm_manager_port] info
1
將swarm_ip換成swarm所在的節點的ip。
將swarm_manager_port換成swarm的端口,例如2376.
能夠看到以下內容:
Containers: 7
Images: 26
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 2
ftd.master: [docker_node_ip_1]:2375
└ Status: Healthy
└ Containers: 4
└ 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
localhost.localdomain: [docker_node_ip_2]:2375
└ Status: Healthy
└ Containers: 3
└ Reserved CPUs: 0 / 4
└ Reserved Memory: 0 B / 3.888 GiB
└ Labels: executiondriver=native-0.2, kernelversion=3.10.0-229.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper
CPUs: 12
Total Memory: 36.67 GiB
Name: xxxxxxxxxx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
集羣中建立容器
建立兩個容器:執行2次docker run busybox。
經過docker -H [swarm_ip]:[swarm_port] ps -a能夠看到swarm中建立的docker容器.
經過docker ps -a能夠看到2個容器分佈在不一樣的docker節點。
至此,Docker + Etcd + Swarm已經實驗完成