一、docker安裝
這里我們安裝docker-ce 的18.03版本
yum??? -y remove docker? 刪除原有版本
#安裝依賴包
[root@Docker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
#添加docker的CE版本的yum源配置文件
[root@Docker ~]# curl?? https://download.docker.com/linux/centos/docker-ce.repo??? -o????? /etc/yum.repos.d/docker-ce.repo
安裝CE版本的docker
#yum -y install docker-ce
#啟動docker
# systemctl start docker
# systemctl enable docker?? #添加開機啟動
# docker version #查看docker版本
二、鏡像操作
我們查看鏡像公有倉庫中的鏡像,
docker? search? --filter-stars=50? tomcat??? #查看鏡像倉庫中星級在50 以上的tomcat鏡像
因為本項目,要用到tomcat鏡像,我們下載鏡像
docker? pull?? tomcat?? #tomcat? 為鏡像地址及倉庫和標簽
下載后查看一下,docker?? images
三、創建容器集群
SwarmKit 將節點分為兩類:
工作節點(Worker ):負責通過執行容器運行任務。SwarmKit 的默認執行器為 Docker 容器執行器(Docker Container Executor)。
(1)內建分布式存儲,不要額外的數據庫
(2)支持 Rolling update
(3 容器高可用
(4)通過 TLS 保證了節點之間通訊的安全
管理節點(Manager ):負責接收和響應用戶請求,將集群狀態調節到最終狀態。在 SwarmKit
中,用戶可以動態調整節點的角色,即在 Manager 和 Worker 之間轉換。
實驗環境:
這里選擇三臺主機運行 Swarm,依次為:
node1 192.168.1.23
node2 192.168.1.27
node3 192.168.1.28
基本環境配置
3 臺主機確保時間一致 ntp
3 臺主機均關閉 selinux,開啟路由轉發。
3 臺主機根據上面的實驗環境描述修改主機名和 ip 地址
系統環境準備
準備系統環境, 配置 host 列表
3 臺主機均修改/etc/hosts 文件,添加所有主機的 ip 地址和主機名的映射記錄
以?master 為例子,其他節點同
vim? /etc/hosts
192.168.1.23? master
192.168.1.27? slave1
192.168.1.28? slave2
主要使用三個新的命令行工具創建一個 swarm 集群:
docker swarm 開啟 swarm 模式; 加入 Swarm 集群; 配置集群參數
docker node 查詢集群節點信息; 提升/移除一個管理節點; 管理 swarm 節點主機
docker service 創建管理 service
在?master 上初始化 swram 集群:
注意:你只需要在一個 master 上初始化 swarm 集群,其他 node 加入這個集群就行了, 所以運行.docker?? swarm? init? --advertise-addr? 192.168.1.23:2377
根據命令的提示:
以manager服務器角色加入 swarm 集群需要運行如下命令:
先docker? swarm join-token? manager? 獲取manager的token,再執行以下命令:
docker swarm? join 加入到 master創建的集群
我們以其他節點服務器,以 worker 角色加入 swarm 集群需要運行如下命令:
先docker? swarm join-token? worker? 獲取worker的token,再執行以下命令:
docker swarm? join 加入到 master創建的集群
查看 swarm 集群 node 列表
我們一共要加入兩臺,然后我們再看節點情況
docker?? node? ls
一共是三個,一個master, 兩個從節點
集群創建完畢
四、在 swarm 集群上運行 docker 應用
概念解釋:service
Docker swarm 引入了服務的概念,一個服務由多個任務組成,一個任務即一個運行的容器。
下面我們可以使用之前 pull的 tomcat 鏡像啟動服務,
docker service create --replicas 2 --name judge_swarm -p 8080:8080 --network=swarm_test?? tomcat
docker service create 命令創建一個 service.
--name 標簽命名 service 為 judge_swarm
--replicas 標簽來聲明?2 個運行實體(即容器副本數)
?使用 docker service ls 查看服務
?我們到各個節點上去看,docker? ps -a
可以看到
?每個節點上啟動了一個容器實例,我們更改容器內 tomcat 服務的主頁
docker? exec? -it? 21b?? /bin/bash
docker?cp? ? index.jsp?? 21b:/usr/local/tomcat/webapps/web
docker? cp? server.xml?? 21b:/usr/local/tomcat/conf/
讓每個tomcat容器實例顯示不同的網頁,在瀏覽器上輸入 http://master? ip:8080/web
?刷新界面可以看到服務是輪詢顯示頁面的,也就是該集群實現了負載均衡。
同時,如果負載過大,我們還可以拓展該服務上的容器實例,本例拓展為4個,
docker? service? scale?? judge_swarm=4
管理器會根據節點情況,在不同節點另外啟動兩個實例
本案例是在master 上啟動了兩個容器實例
?
?docker?? swarm? 的應用,器群部署完畢。
?
?