Swarm項(xiàng)目,通過把多個(gè)Docker Engine聚集在一起,形成一個(gè)打的docker-engine,對(duì)外提供容器的群集服務(wù)。同時(shí),這個(gè)群集對(duì)外提供Swarm API,用戶可以像使用Docker Engine一樣使用Docker群集。
Swarm是個(gè)一套較為簡(jiǎn)單的工具,用以管理Docker群集,使得Docker群集暴露給用戶時(shí)相當(dāng)于一個(gè)虛擬的整體。Swarm使用標(biāo)準(zhǔn)的Docker API接口作為其前端訪問入口,換言之,各種形式的Docker Client(dockerclient in go,docker_py,docker等)均可以直接與Swarm通信,Swarm幾乎全部用Go語言來完成開發(fā)的。
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、永清網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為永清等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
1、Swarm
群集的管理和編排是使用嵌入到Docker引擎的SwarmKit,可以在Docker初始化時(shí)啟動(dòng)Swarm模式或者加入已存在的Swarm
2、Node
一個(gè)節(jié)點(diǎn)(node)是已加入到swarm的Docker引擎的實(shí)列當(dāng)部署應(yīng)用到集群,你將會(huì)提交服務(wù)定義到管理節(jié)點(diǎn),接著Manager管理節(jié)點(diǎn)調(diào)度任務(wù)到worker節(jié)點(diǎn),manager節(jié)點(diǎn)還執(zhí)行維護(hù)集群的狀態(tài)的編排和群集管理功能,work節(jié)點(diǎn)接收并執(zhí)行來自manager節(jié)點(diǎn)的任務(wù)。通常,manager節(jié)點(diǎn)也可以是worker節(jié)點(diǎn),work節(jié)點(diǎn)會(huì)報(bào)告當(dāng)前狀態(tài)給manager節(jié)點(diǎn)。
3、服務(wù)(Service)
服務(wù)是要在work節(jié)點(diǎn)上要執(zhí)行任務(wù)的定義,它在工作這節(jié)點(diǎn)上執(zhí)行,當(dāng)創(chuàng)建服務(wù)的時(shí),需要指定容器鏡像。
4、任務(wù)(Task)
任務(wù)是在docker容器中執(zhí)行的命令,manager節(jié)點(diǎn)根據(jù)指定數(shù)量的任務(wù)副本分配任務(wù)給work節(jié)點(diǎn)。
docker swarm:集群管理,子命令由init,join,leave,updata。(docker swarm -help查看幫助)
docker service:服務(wù)創(chuàng)建,子命令由create,inspect,update,remove,tasks。(docker service -help查看幫助)
node是加入到swarm集群中的一個(gè)docker引擎實(shí)體,可以在一臺(tái)物理機(jī)上運(yùn)行多個(gè)node,node分為:
1)Manager node(管理節(jié)點(diǎn)):執(zhí)行集群的管理功能,維護(hù)集群的狀態(tài),選覺一個(gè)leader節(jié)點(diǎn)去執(zhí)行調(diào)度任務(wù)。
2)Work node(工作節(jié)點(diǎn)):接收和執(zhí)行任務(wù),參與容器集群負(fù)載調(diào)度,僅用于承載task。
service服務(wù):一個(gè)服務(wù)是工作節(jié)點(diǎn)上執(zhí)行任務(wù)的定義。創(chuàng)建一個(gè)服務(wù),制定了容器所使用的鏡像和容器運(yùn)行的命令。
task任務(wù):一個(gè)任務(wù) 包含了一個(gè)容器及其運(yùn)行的命令。task是service的執(zhí)行實(shí)體,task啟動(dòng)docker容器并在容器中執(zhí)行任務(wù)。
1、系統(tǒng)環(huán)境
兩臺(tái)centos 7分別對(duì)應(yīng)swarm01和swarm02
swarm01:192.168.80.100
swarm02:192.168.80.110
2、修改主機(jī)名
hostnamectl set-hostname swarm01
hostnamectl set-hostname swarm02
vi /etc/hosts //分別修改hosts文件
192.168.80.100 swarm01
192.168.80.110 swarm02
3、安裝docker(每臺(tái)都要裝)vi /etc/yum.repos.d/CentOS-Base.repo
末行添加docker的yum源
[docker-repo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpgyum install -y docker-engine
4、更改docker的鏡像源
mkdir /etc/docker
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
或
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}systemctl daemon-reload //重載配置文件
5、修改docker監(jiān)聽端口
Swarm是通過監(jiān)聽2375端口進(jìn)行通信的,所以在使用Swarm進(jìn)行集群管理之前,需要設(shè)置一下2375端口的監(jiān)聽。所有主機(jī)節(jié)點(diǎn)docker開啟2375監(jiān)聽,docker版本不同,配置方式不一樣。vi /lib/systemd/system/docker.service
在ExecStart加入:-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
systemctl start docker //啟動(dòng)docker
netstat -anput | grep 2375 //查看監(jiān)聽端口
6、swarm安裝(兩臺(tái)分別安裝)
docker pull swarm //從docker倉庫拉取swarm
docker images 查看是否下載成功
docker swarm init --advertise-addr 192.168.80.100 //初始化Swarm
--advertis-addr:swarm中的work節(jié)點(diǎn)使用此IP地址與manager聯(lián)系
上面命令執(zhí)行后,該機(jī)器自動(dòng)加入到swarm集群。這個(gè)會(huì)創(chuàng)建一個(gè)集群token,獲取全球唯一的token,作為集群唯一標(biāo)識(shí)。后續(xù)將其他節(jié)點(diǎn)加入集群都會(huì)用到這個(gè)token值。docker node ls //查看節(jié)點(diǎn),只有本機(jī)加入swarm集群
7、添加集群節(jié)點(diǎn)
在swaram02機(jī)器上執(zhí)行以下命令
docker swarm join \
--token SWMTKN-1-0mp5blsez01rkhdngyx7qnwapwfaugexq0llasg5t4mlr0rpdj-2i3qqd7ejsl73ga5fqncmeroe \
192.168.80.100:2377
docker node list //在swarm01上查看
8、升級(jí)或降級(jí)節(jié)點(diǎn)(只能在主節(jié)點(diǎn)上)
docker node promote swarm02 //將swarm02升級(jí)為主節(jié)點(diǎn)
docker node demote swarm01 //將swarm02降級(jí)為工作節(jié)點(diǎn)
docker node list //在swarm02上查看
9、創(chuàng)建swarm集群網(wǎng)絡(luò)(swarm02上)
docker network create --driver overlay skynet
docker network ls //查看網(wǎng)絡(luò)
10、swarm部署http(在主節(jié)點(diǎn)swarm02上)docker service create -p 80:80 --name webserver --replicas 4 httpd
--name:服務(wù)名稱
--replicas:服務(wù)副本集個(gè)數(shù)
-p:端口映射docker service ls //查看服務(wù)列表
docker service ps webserver | grep Running //查看具體服務(wù)開啟情況
web分別訪問192.168.80.100和192.168.80.110
注意:swarm02上并沒有部署httpd但是可以訪問網(wǎng)頁,說明swarm01節(jié)點(diǎn)接收了主節(jié)點(diǎn)的任務(wù)部署。
11、swarm圖像化管理(swar02上)
docker pull portainer/portainer //拉取圖像化管理鏡像
docker run -d -p 9000:9000 --restart=always --name prtainer-test portainer/portainer //啟動(dòng)鏡像
Web瀏覽器訪問192.168.80.110:9000