Docker高級管理——網絡通信、compose容器編排、consul、consul-template

Docker單機網絡拓補圖

在這裏插入圖片描述

Docker的網絡通信

端口映射機制將內容的服務提供給外都網絡訪問
可隨機或指定映射端口範圍
docker run -d httpd:centos
docker run -d -p 49888:80 httpd:centos

Docker Compose容器編排

Docker Compose的前身是Fig,他是一個定義及運行多個Docker容器的工具
Docker Compose非常合適組合使用多個容器進行開發的場景

Dcoker Compose配置常用字段

在這裏插入圖片描述

Compose常用命令

在這裏插入圖片描述

Compose命令說明
  • docker-compose選項

–version 打印版本並退出

–verbose 輸出更多調試信息

-f ,–file FILE 使用特定的compose模板文件,默認爲docker-compose.yml

-p , --project-name NAME 指定項目名稱,默認使用目錄名稱

--------------------------compose部署----------------------------
1、在線安裝compose(大約20分鐘)

curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

1.1、安裝包將安裝吧放在usr/local/bin目錄下
在這裏插入圖片描述

根目錄創建compose_nginx
mkdir /compose_nginx
cd /compose_nginx
mkdir nginx
cd nginx/
vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

在這裏插入圖片描述
將nginx源碼包上傳至nginx目錄
在這裏插入圖片描述

vim Dockerfile
FROM centos:7
MAINTAINER This is Nginx test
RUN yum -y update
RUN yum -y install make gcc gcc-c++ pcre-devel zlib-devel tar
RUN useradd -M -s /sbin/nologin nginx
COPY nginx-1.12.2.tar.gz /opt/
RUN tar zxvf /opt/nginx-1.12.2.tar.gz -C /opt
WORKDIR /opt/nginx-1.12.2/
RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
RUN make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
ADD index.html /usr/local/nginx/html/
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
在compose_nginx創建站點目錄
mkdir wwwroot
cd wwwroot
echo "<h1>this is nginx test web</h1>" >> index.html
編寫編排腳本
vim docker-compose.yml
version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
     - 1234:80
     - 1235:443
    networks:
     - aaa
    volumes:
     - ./wwwroot:/usr/local/nginx/html
networks:
  aaa:

在這裏插入圖片描述
在compose_nginx輸入
docker-compose -f docker-compose.yml up -d
在這裏插入圖片描述
-----------------------------------consul部署------------------------------
服務器:192.168.49.129 Docker-ce Compose Consul Consul-template
服務器:192.168.49.200 Docker-ce registrator

consul服務器部署
根目錄創建
mkdir consul
掛載
cp /opt/consul_0.9.2_linux_amd64.zip /root/consul/
cd /root/consul/
unzip consul_0.9.2_linux_amd64.zip

在這裏插入圖片描述

mv consul /usr/bin/

consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.49.129 \                               (需要改本地地址)
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &

解釋
consul agent \	//使用代理功能
-server \	//提供server功能
-bootstrap \	//參與選舉爲領袖
-ui \		//提供web訪問界面
-data-dir=/var/lib/consul-data \	//參數存儲位置
-bind=192.168.7.168 \		//綁定地址
-client=0.0.0.0 \		//面對所有節點終端
-node=consul-server01 &> /var/log/consul.log &	//指定本地節點名稱,指定日誌文件目錄,放在後臺運行

#查看羣集信息
consul members
在這裏插入圖片描述

需要關閉防火牆或者開放8500端口,關閉核心防護
firewall-cmd --get-active-zones
firewall-cmd --zone=public --add-port=8500/tcp
setenforce 0

-------------容器服務自動添加到nginx集羣(192.168.49.200)------

docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
-ip=192.168.49.200 \
consul://192.168.49.129:8500

#解釋
[root@docker2 ~]# docker run -d \
--name=registrator \	//指定名稱
--net=host \		//指定網絡
-v /var/run/docker.sock:/tmp/docker.sock \    //指定數據卷
--restart=always \	//restart功能
gliderlabs/registrator:latest \
-ip=192.168.7.129 \	//指定本地IP地址
consul://192.168.7.168:8500  //指consul 地址
測試服務發現功能是否正常
docker run -itd -p:83:80 --name test-01 -h test01 nginx
docker run -itd -p:84:80 --name test-02 -h test02 nginx
docker run -itd -p:88:80 --name test-03 -h test03 httpd
docker run -itd -p:89:80 --name test-04 -h test04 httpd

驗證http和nginx服務是否註冊到consul
瀏覽器輸入"http://192.168.7.168:8500",單擊"NODES",然後單擊"consul-server01",會出現5個服務
在這裏插入圖片描述
在這裏插入圖片描述

在consul服務騎上查看服務

curl 127.0.0.1:8500/v1/catalog/services
{"consul":[],"nginx":[]}

在這裏插入圖片描述

準備template nginx模板文件在192.168.49.129

vim /root/consul/nginx.ctmpl 

upstream http_backend {
  {{range service "nginx"}}
   server {{.Address}}:{{.Port}};
   {{end}}
}

server {
  listen 83;
  server_name localhost 192.168.49.129;
  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;
    proxy_set_header Client-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://http_backend;
  }
}

編譯安裝並配置nginx(在192.168.49.129)

yum install gcc pcre-devel zlib-devel -y
tar zxvf nginx-1.12.2.tar.gz -C /opt
./configure --prefix=/usr/local/nginx
make && make install
vim /usr/local/nginx/conf/nginx.conf
http {
      include		mime.types;
      include		vhost/*.conf;	
      default_type	application/octet-stream;

在這裏插入圖片描述
創建虛擬主機目錄
mkdir /usr/local/nginx/conf/vhost
創建日誌文件目錄
mkdir /var/log/nginx
啓動nginx
/usr/local/nginx/sbin/nginx

配置並啓動template

上傳consul-template_0.19.3_linux_amd64.zip到/root/consul目錄下
unzip consul-template_0.19.3_linux_amd64.zip
mv consul-template /usr/bin

consul-template -consul-addr 192.168.49.129:8500 \
-template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/aaa.conf:/usr/local/nginx/sbin/nginx -s reload" \
--log-level=info

#啓動後,會在vhost目錄下自動生成aaa.conf配置文件
ls /usr/local/nginx/conf/vhost/
aaa.conf

使用瀏覽器訪問http://192.168.49.129:83,查看容器nginx的訪問日誌

增加一個nginx容器節點,測試服務發現及配置更新功能(在registrator服務端增加)

docker run -itd -p:85:80 --name test-03 -h test03 nginx

consul服務器監控會有提示自動更新在這裏插入圖片描述
如果關閉一個容器節點,會在consul服務端註銷此容器節點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章