溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Docker高級(jí)管理(實(shí)例演示!!!)

發(fā)布時(shí)間:2020-02-25 07:00:54 來源:網(wǎng)絡(luò) 閱讀:514 作者:caozhengtao1213 欄目:云計(jì)算

Docker網(wǎng)絡(luò)通信

Docker單機(jī)網(wǎng)絡(luò)拓?fù)鋱D:

Docker高級(jí)管理(實(shí)例演示!!!)

端口映射:

  • 端口映射機(jī)制將容器內(nèi)的服務(wù)提供給外部網(wǎng)絡(luò)訪問
  • 可隨機(jī)或指定映射端口范圍
docker run -d -P httpd:centos
docker run -d -p 49888:80 httpd:centos

容器互聯(lián)

  • 在源容器和接收容器間建立一條網(wǎng)絡(luò)通信隧道
  • 使用docker run命令–link選項(xiàng)實(shí)現(xiàn)容器間互聯(lián)通信

實(shí)現(xiàn)容器互聯(lián)

docker run -d -P --name web1 httpd:centos
docker run -d -P --name web2 --link web1:web1
httpd:centos
docker exec -it web2 /bin/bash
ping web1

Docker Compose容器編排

  • Docker Compose的前身是Fig,它是一個(gè)定義及運(yùn)行多個(gè)Docker容器的工具
  • 使用Docker Compose不再需要使用shell腳本來啟動(dòng)容器
  • Docker Compose非常適合組合使用多個(gè)容器進(jìn)行開發(fā)的場景

Docker Compose環(huán)境安裝

[root@localhost ~]# curl -Lhttps://github.com/docker/compose/releases/download/1.21.1 /docker-compose-`uname -s`-`uname -m`-o /usr/local/bin/docker-compose
[root@localhost ~ ]# chmod +x /usr/local/bin/docker-compose
[root@localhost ~ ]# docker-compose -v

Docker Compose文件結(jié)構(gòu)

[root@localhost compose_ Inmp]# vim docker-compose.yml
  • YAML是一種標(biāo)記語言很直觀的數(shù)據(jù)序列化格式
  • 文件格式及編寫注意事項(xiàng)
    1.不支持制表符tab鍵縮進(jìn),需要使用空格縮進(jìn)
    2.通常開頭縮進(jìn)2個(gè)空格
    3.字符后縮進(jìn)1個(gè)空格,如冒號(hào)、逗號(hào)、橫杠
    4.用井號(hào)注釋
    5.如果包含特殊字符用單引號(hào)引起來
    6.布爾值必須用引號(hào)括起來

Docker Compse配置常用字段:

字段 描述
build dockerfile context 指定Dockerfile文件名構(gòu)建鏡像上下文路徑
image 指定鏡像
command 執(zhí)行命令,覆蓋默認(rèn)命令
container name 指定容器名稱,由于容器名稱時(shí)唯一的,如果指定自定義名稱,則無法scale
deploy 指定部署和運(yùn)行服務(wù)相關(guān)配置,只能在Swarm模式使用
environment 添加環(huán)境變量
networks 加入網(wǎng)絡(luò)
ports 暴露容器端口,與-p相同,但端口不能低于60
volumes 掛載宿主機(jī)路徑或命令卷
restart 重啟策略,默認(rèn)no,always,no -failure,unless-stoped
hostname 容器主機(jī)名

Docker Compse常用命令:

字段 描述
build 重新構(gòu)建服務(wù)
ps 列出容器
up 創(chuàng)建和啟動(dòng)容器
exec 在容器里面執(zhí)行命令
scale 指定一個(gè)服務(wù)容器啟動(dòng)數(shù)量
top 顯示容器進(jìn)程
logs 查看容器輸出
down 刪除容器/網(wǎng)絡(luò)/數(shù)據(jù)卷和鏡像
stop/start/restart 停止/啟動(dòng)/重啟服務(wù)

Compose命令說明

  • 基本的使用格式
docker-compose [options] [COMMAND] [ARGS...]
  • docker-compose選項(xiàng)
    --verbose輸出更多調(diào)試信息
    --version打印版本并退出
    -f, --file FILE使用特定的compose模板文件,默認(rèn)為docker-compose.yml
    -p, --project-name NAME指定項(xiàng)目名稱,默認(rèn)使用目錄名稱

Docker consul容器服務(wù)更新與發(fā)現(xiàn)

  • 容器服務(wù)更新與發(fā)現(xiàn)拓?fù)鋱D
    Docker高級(jí)管理(實(shí)例演示!!!)

Consul

  • Consul是HashiCorp公司推出的開源工具,用于實(shí)現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置
  • Consul的特性
    1.Consul支持健康檢查,允許存儲(chǔ)鍵值對(duì)
    2.一致性協(xié)議采用Raft算法,用來保證服務(wù)的高可用
    3.成員管理和消息廣播采用GOSSIP協(xié)議,支持ACL訪問控制
  • 方便部署,與Docker等輕量級(jí)容器可無縫配合
  • 構(gòu)建自動(dòng)發(fā)現(xiàn)的Docker服務(wù)架構(gòu)
  • 建立Consul服務(wù)

    1.每個(gè)提供服務(wù)的節(jié)點(diǎn)上都要部署和運(yùn)行Consul的agent
    2.Consul agent有兩種運(yùn)行模式
    Server
    Client
    3.Server和Client只是Consul集群層面的區(qū)分,與搭建在Cluster之上的應(yīng)用服務(wù)無關(guān)
  • Consul常用的命令
    -v 數(shù)據(jù)卷
    -d 放在后臺(tái)執(zhí)行
    -i 標(biāo)準(zhǔn)性輸入
    -t 分配偽終端
  • Consul的作用
    1.做編排時(shí)需要修改配置文件,實(shí)現(xiàn)多配置文件同時(shí)修改
    2.擴(kuò)展性的文件放在vhost中,節(jié)偶的方式

一、安裝Docker-ce引擎

#安裝依賴包
yum install yum-utils device-mapper-persistent-data lvm2 -y

#設(shè)置阿里云鏡像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安裝Docker-ce
yum install -y docker-ce

#關(guān)閉防火墻及增強(qiáng)型安全功能
systemctl stop firewalld.service
setenforce 0

#啟動(dòng)Docker并設(shè)置為開機(jī)自啟動(dòng)
systemctl start docker.service
systemctl enable docker.service

#檢查相關(guān)進(jìn)程開啟情況
ps aux | grep docker

#重載守護(hù)進(jìn)程
systemctl daemon-reload

#重啟服務(wù)
systemctl restart docker

二、部署docker-compose

#下載安裝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

#提權(quán)方便調(diào)用
chmod +x /usr/local/bin/docker-compose

#建立compose站點(diǎn)
mkdir /root/docker_compose

三、部署nginx+Tomcat

#建立compose文件
vim /root/docker-compose/docker-compose.yml
#compose版本號(hào),有1、2、3
version: '3.3'
#服務(wù)名稱
services:
  nginx:
#主機(jī)名
    hostname: nginx
#建立鏡像需要的目錄、dockerfile腳本名
    build:
      context: ./nginx
      dockerfile: Dockerfile
#映射宿主機(jī)端口
    ports:
     - 1216:80
     - 1200:443
#工作組:同一集群一個(gè)名字
    networks:
     - test
#建立數(shù)據(jù)集的目錄
    volumes:
     - ./wwwroot:/usr/local/nginx/html
  tomcat:
    hostname: tomcat
    build:
      context: ./tomcat
      dockerfile: Dockerfile
    ports:
     - 888:8080
    networks:
     - test
networks:
  test:

#需要建立新鏡像的服務(wù)需要放在compose工作站點(diǎn)中
[root@localhost docker_compose]# ls
docker-compose.yml  nginx  tomcat

#建立容器
“-f”  指定compose文件
docker-compose -f docker-compose.yml up -d

四、docker-consul+template

實(shí)驗(yàn)環(huán)境

名稱 角色 IP地址 所需環(huán)境包
centos7-1 master 192.168.142.128 Docker-ce、Compose 、Consul、Consul-template
centos7-2 slave1 192.168.142.129 Docker-ce、registrator
centos7-min slave2 192.168.142.130 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

#移動(dòng)文件,方便識(shí)別
[root@localhost consul]# mv consul /usr/bin/

#設(shè)定代理并后臺(tái)啟動(dòng)
[root@localhost consul]# consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.142.128 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &

#查看后臺(tái)進(jìn)程
[root@localhost consul]# jobs
[1]+ 運(yùn)行中 consul agent -server -bootstrap -ui -data-dir=/var/lib/consul-data -bind=192.168.142.128 -client=0.0.0.0 -node=consul-server01 &>/var/log/consul.log &

“agent” 使用agent代理功能

“-server” 提供server功能

“-bootstrap” 參與選舉為領(lǐng)袖

“-ui” 提供用戶界面

“-data-dir” 參數(shù)存儲(chǔ)位置

“-bind” 綁定地址

“-node” 定義節(jié)點(diǎn)名稱

- 檢查群集狀態(tài)
```shell
#查看群集信息
[root@localhost consul]# consul members
Node             Address              Status  Type    Build  Protocol  DC
consul-server01  192.168.142.128:8301  alive   server  0.9.2  2         dc1

#過濾leader信息
[root@localhost consul]# consul info | grep leader
        leader = true
        leader_addr = 192.168.142.128: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 #注冊(cè)的所有服務(wù)。

curl 127.0.0.1:8500/v1/catalog/nginx #查看nginx服務(wù)信息

curl 127.0.0.1:8500/v1/catalog/nodes #集群節(jié)點(diǎn)詳細(xì)信息
#安裝registrator(注冊(cè)器)
#該工具可檢查容器運(yùn)行狀態(tài)自動(dòng) 進(jìn)行注冊(cè),還可注銷docker容器的服務(wù)
[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.129 \
consul:#192.168.142.128: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
  • 驗(yàn)證群集是否建立成功
    瀏覽器中輸入http:#192.168.142.128:8500,單擊“NODES”,然后點(diǎn)擊“consurl-seerver01”,即可看到五個(gè)服務(wù)(圖形化界面)

    Docker高級(jí)管理(實(shí)例演示!!!)
    五、建立template進(jìn)行代理

  • 手工編譯安裝nginx1.12.0
    (前面博客有詳細(xì)的)

  • 安裝consul-template
    template屬于守護(hù)進(jìn)程,用于實(shí)時(shí)查詢consul集群信息,并實(shí)時(shí)使用模板進(jìn)行配置文件的生成。
    [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 {         #服務(wù)器池的名稱
    {{range service "nginx"}}
    server {{.Address}:{{.Port}};     #調(diào)用變量:服務(wù)器節(jié)點(diǎn)的地址和端口
    {{end}}
    }

server {
listen 110;
server_name localhost 192.168.142.128; #master端地址
access_log /var/log/nginx/kgc.cn-access.log;
index index.html index.php;
location / { #請(qǐng)求頭部信息的設(shè)定
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr; #后端服務(wù)器IP
proxy_set_header Client-IP $remote_addr; #client的IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #forward跳轉(zhuǎn)地址
proxy_pass http:#http_backend; #請(qǐng)求跳轉(zhuǎn)給http_backend服務(wù)器池
}
}


- 修改配置文件

```shell
#更改nginx配置文件
[root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf
#在18行下插入以下內(nèi)容
include     vhost/\*.conf;                    #添加include方便nginx識(shí)別模板生成的配置文件

#此時(shí)還沒有這個(gè)文件,需要去創(chuàng)建
[root@localhost nginx-1.12.0]# cd /usr/local/nginx/conf/
[root@localhost conf]# mkdir vhost      #創(chuàng)建虛擬機(jī)目錄

#啟用template模板(啟用后會(huì)進(jìn)入監(jiān)控模式)
[root@localhost ~]# consul-template -consul-addr 192.168.142.128: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” #寫入日志的等級(jí)

謝謝閱讀!!!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI