您好,登錄后才能下訂單哦!
Swarm項目,通過把多個Docker Engine聚集在一起,形成一個打的docker-engine,對外提供容器的群集服務。同時,這個群集對外提供Swarm API,用戶可以像使用Docker Engine一樣使用Docker群集。
Swarm是個一套較為簡單的工具,用以管理Docker群集,使得Docker群集暴露給用戶時相當于一個虛擬的整體。Swarm使用標準的Docker API接口作為其前端訪問入口,換言之,各種形式的Docker Client(dockerclient in go,docker_py,docker等)均可以直接與Swarm通信,Swarm幾乎全部用Go語言來完成開發的。
1、Swarm
群集的管理和編排是使用嵌入到Docker引擎的SwarmKit,可以在Docker初始化時啟動Swarm模式或者加入已存在的Swarm
2、Node
一個節點(node)是已加入到swarm的Docker引擎的實列當部署應用到集群,你將會提交服務定義到管理節點,接著Manager管理節點調度任務到worker節點,manager節點還執行維護集群的狀態的編排和群集管理功能,work節點接收并執行來自manager節點的任務。通常,manager節點也可以是worker節點,work節點會報告當前狀態給manager節點。
3、服務(Service)
服務是要在work節點上要執行任務的定義,它在工作這節點上執行,當創建服務的時,需要指定容器鏡像。
4、任務(Task)
任務是在docker容器中執行的命令,manager節點根據指定數量的任務副本分配任務給work節點。
docker swarm:集群管理,子命令由init,join,leave,updata。(docker swarm -help查看幫助)
docker service:服務創建,子命令由create,inspect,update,remove,tasks。(docker service -help查看幫助)
node是加入到swarm集群中的一個docker引擎實體,可以在一臺物理機上運行多個node,node分為:
1)Manager node(管理節點):執行集群的管理功能,維護集群的狀態,選覺一個leader節點去執行調度任務。
2)Work node(工作節點):接收和執行任務,參與容器集群負載調度,僅用于承載task。
service服務:一個服務是工作節點上執行任務的定義。創建一個服務,制定了容器所使用的鏡像和容器運行的命令。
task任務:一個任務 包含了一個容器及其運行的命令。task是service的執行實體,task啟動docker容器并在容器中執行任務。
1、系統環境
兩臺centos 7分別對應swarm01和swarm02
swarm01:192.168.80.100
swarm02:192.168.80.110
2、修改主機名
hostnamectl set-hostname swarm01
hostnamectl set-hostname swarm02
vi /etc/hosts //分別修改hosts文件
192.168.80.100 swarm01
192.168.80.110 swarm02
3、安裝docker(每臺都要裝)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監聽端口
Swarm是通過監聽2375端口進行通信的,所以在使用Swarm進行集群管理之前,需要設置一下2375端口的監聽。所有主機節點docker開啟2375監聽,docker版本不同,配置方式不一樣。vi /lib/systemd/system/docker.service
在ExecStart加入:-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
systemctl start docker //啟動docker
netstat -anput | grep 2375 //查看監聽端口
6、swarm安裝(兩臺分別安裝)
docker pull swarm //從docker倉庫拉取swarm
docker images 查看是否下載成功
docker swarm init --advertise-addr 192.168.80.100 //初始化Swarm
--advertis-addr:swarm中的work節點使用此IP地址與manager聯系
上面命令執行后,該機器自動加入到swarm集群。這個會創建一個集群token,獲取全球唯一的token,作為集群唯一標識。后續將其他節點加入集群都會用到這個token值。docker node ls //查看節點,只有本機加入swarm集群
7、添加集群節點
在swaram02機器上執行以下命令
docker swarm join \
--token SWMTKN-1-0mp5blsez01rkhdngyx7qnwapwfaugexq0llasg5t4mlr0rpdj-2i3qqd7ejsl73ga5fqncmeroe \
192.168.80.100:2377
docker node list //在swarm01上查看
8、升級或降級節點(只能在主節點上)
docker node promote swarm02 //將swarm02升級為主節點
docker node demote swarm01 //將swarm02降級為工作節點
docker node list //在swarm02上查看
9、創建swarm集群網絡(swarm02上)
docker network create --driver overlay skynet
docker network ls //查看網絡
10、swarm部署http(在主節點swarm02上)docker service create -p 80:80 --name webserver --replicas 4 httpd
--name:服務名稱
--replicas:服務副本集個數
-p:端口映射docker service ls //查看服務列表
docker service ps webserver | grep Running //查看具體服務開啟情況
web分別訪問192.168.80.100和192.168.80.110
注意:swarm02上并沒有部署httpd但是可以訪問網頁,說明swarm01節點接收了主節點的任務部署。
11、swarm圖像化管理(swar02上)
docker pull portainer/portainer //拉取圖像化管理鏡像
docker run -d -p 9000:9000 --restart=always --name prtainer-test portainer/portainer //啟動鏡像
Web瀏覽器訪問192.168.80.110:9000
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。