您好,登錄后才能下訂單哦!
本文以Docker-compose和Docker-consu為例,為大家分析Docker原生編排工具的安裝配置方法,閱讀完整文相信大家對原生編排工具的安裝配置方法有了一定的認識。
Compose默認管理對象是項目,通過子命令對項目中的一組容器進行生命周期的管理。
Compose項目由Python實現,實現上調用了Docker服務提供的API來對容器進行管理。
比較簡單不在贅述,直接上shell腳本
#!/bin/bash
#Docker引擎部署
#安裝依賴包
yum install yum-utils device-mapper-persistent-data lvm2 -y
#設置阿里云鏡像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安裝Docker-ce
yum install -y docker-ce
#關閉防火墻及增強型安全功能
systemctl stop firewalld.service
setenforce 0
#啟動Docker并設置為開機自啟動
systemctl start docker.service
systemctl enable docker.service
#網絡優化
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
service network restart
systemctl restart docker
#下載安裝compose
curl -L https://github.com/docker/compose/releases/download/1.25.1-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#提權方便調用
chmod +x /usr/local/bin/docker-compose
#建立compose站點
mkdir /root/docker_compose
Docker Compose配置常用字段
字段 | 描述 |
---|---|
build dockerfile context | 指定Dockerfile文件名構建鏡像上下文路徑 |
image | 指定鏡像 |
command | 執行命令,覆蓋默認命令 |
container name | 指定容器名稱,由于容器名稱是唯一的 |
deploy | 指定部署和運行服務相關配置,只能在Swarm模式使用 |
environment | 添加環境變量 |
networks | 加入網絡 |
ports | 暴露容器端口,與-p相同,但端口不能低于60 |
volumes | 掛載宿主機路徑或命令卷 |
restart | 重啟策略,默認no,always, no-failure,unless-stoped |
hostname | 容器主機名 |
Docker Compose常用命令
字段 | 描述 |
---|---|
build | 重新構建服務 |
ps | 列出容器 |
up | 創建和啟動容器 |
exec | 在容器里面執行命令 |
scale | 指定一個服務容器啟動數量 |
top | 顯示容器進程 |
logs | 查看容器輸出的日志文件 |
down | 刪除容器、網絡、數據卷和鏡像 |
stop/start/restart | 停止/啟動/重啟服務 |
集合部署nginx+Tomcat
#建立compose文件
vim /root/docker-compose/docker-compose.yml
#compose版本號,有1、2、3
version: '3.3'
#服務名稱
services:
nginx:
#主機名
hostname: nginx
#建立鏡像需要的目錄、dockerfile腳本名
build:
context: ./nginx
dockerfile: Dockerfile
#映射宿主機端口
ports:
- 1216:80
- 1200:443
#工作組:同一集群一個名字
networks:
- test
#建立數據集的目錄
volumes:
- ./wwwroot:/usr/local/nginx/html
tomcat:
hostname: tomcat
build:
context: ./tomcat
dockerfile: Dockerfile
ports:
- 888:8080
networks:
- test
networks:
test:
#需要建立新鏡像的服務需要放在compose工作站點中
[root@localhost docker_compose]# ls
docker-compose.yml nginx tomcat
#建立容器
“-f” 指定compose文件
docker-compose -f docker-compose.yml up -d
名稱 | 角色 | IP地址 | 預裝環境 |
---|---|---|---|
centos7-1 | master | 192.168.142.66 | Docker-ce、Compose 3、Consul、Consul-template |
centos7-2 | slave1 | 192.168.142.77 | Docker-ce、registrator |
centos7-min | slave2 | 192.168.142.136 | Docker-ce、registrator |
master端
//安裝Consul
[root@localhost ~]# mkdir consul
[root@localhost ~]# cd consul/
[root@localhost consul]# unzip consul_0.9.2_linux_amd64.zip
[root@localhost consul]# ls
consul consul_0.9.2_linux_amd64.zip
后臺啟動
//移動文件,方便識別
[root@localhost consul]# mv consul /usr/bin/
[root@localhost consul]# consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.142.66 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &
[root@localhost consul]# jobs
[1]+ 運行中 consul agent -server -bootstrap -ui -data-dir=/var/lib/consul-data -bind=192.168.142.66 -client=0.0.0.0 -node=consul-server01 &>/var/log/consul.log &
"agent" 使用agent代理功能
"-server" 提供server功能
"-bootstrap" 參與選舉為領袖
"-ui" 提供用戶界面
"-data-dir" 參數存儲位置
"-bind" 綁定地址
"-node" 定義節點名稱
檢查群集
//查看群集信息
[root@localhost consul]# consul members
Node Address Status Type Build Protocol DC
consul-server01 192.168.142.66:8301 alive server 0.9.2 2 dc1
//過濾leader信息
[root@localhost consul]# consul info | grep leader
leader = true
leader_addr = 192.168.142.66:8300
通過httpd api 獲取集群信息
curl 127.0.0.1:8500/v1/status/peers //查看集群server成員
curl 127.0.0.1:8500/v1/status/leader //集群Raf leader
curl 127.0.0.1:8500/v1/catalog/services //注冊的所有服務。
curl 127.0.0.1:8500/v1/catalog/nginx //查看nginx服務信息
curl 127.0.0.1:8500/v1/catalog/nodes //集群節點詳細信息
使節點服務器中的容器自動加入
//安裝registrator(注冊器)
//該工具可檢查容器運行狀態自動 進行注冊,還可注銷docker容器的服務
[root@localhost ~]# docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
-ip=192.168.142.77 \
consul://192.168.142.66:8500
測試功能是否正常
[root@localhost ~]# docker run -itd -p:83:80 --name test-01 -h test01 nginx
[root@localhost ~]# docker run -itd -p:84:80 --name test-02 -h test02 nginx
[root@localhost ~]# docker run -itd -p:85:80 --name test-03 -h test03 httpd
[root@localhost ~]# docker run -itd -p:86:80 --name test-04 -h test04 httpd
驗證群集是否建立成功
瀏覽器中輸入http://192.168.142.66:8500
,單擊“NODES”,然后點擊“consurl-seerver01”,即可看到五個服務(圖形化界面)
手工編譯安裝nginx
沒啥說的,裝唄。版本:nginx1.12.0
安裝consul-template
template屬于守護進程,用于實時查詢consul集群信息,并實時使用模板進行配置文件的生成。
[root@localhost ~]# unzip consul-template_0.19.3_linux_amd64.zip
//啟用template命令
[root@localhost ~]# mv consul-template /usr/bin/
編寫nginx配置文件模板
[root@localhost consul]# vim nginx.ctmpl //nginx配置文件的模板
upstream http_backend { //服務器池的名稱
{{range service "nginx"}}
server {{.Address}:{{.Port}}; //調用變量:服務器節點的地址和端口
{{end}}
}
server {
listen 110;
server_name localhost 192.168.142.66; //master端地址
access_log /var/log/nginx/kgc.cn-access.log;
index index.html index.php;
location / { //請求頭部信息的設定
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr; //后端服務器IP
proxy_set_header Client-IP $remote_addr; //client的IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; //forward跳轉地址
proxy_pass http://http_backend; //請求跳轉給http_backend服務器池
}
}
進行配置
//更改nginx配置文件
[root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf
//在18行下插入以下內容
include vhost/\*.conf; //添加include方便nginx識別模板生成的配置文件
//此時還沒有這個文件,需要去創建
[root@localhost nginx-1.12.0]# cd /usr/local/nginx/conf/
[root@localhost conf]# mkdir vhost //創建虛擬機目錄
//啟用template模板(啟用后會進入監控模式)
[root@localhost ~]# consul-template -consul-addr 192.168.142.66:8500 \
-template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \
--log-level=info
“-consul-addr” #指定consul端地址
“-template” #后方從左到右分別為:模板文件路徑、生成的配置文件名稱、重載nginx
“--log-level” #寫入日志的等級
因為template是在consul集群的基礎上進行搭建的,因此在啟動template后就能直接識別slave中的nginx容器
后續進行新的nginx容器的添加時,直接run一個新的容器后便會自動添加進配置文件中
看完上述內容,你們掌握Docker-compose和Docker-consul的配置部署了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。