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

Docker網(wǎng)絡(luò)通信Docker單機(jī)網(wǎng)絡(luò)拓?fù)鋱D:?
端口映射:端口映射機(jī)制將容器內(nèi)的服務(wù)提供給外部網(wǎng)絡(luò)訪問可隨機(jī)或指定映射端口范圍docker run -d -P httpd:centosdocker 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:centosdocker run -d -P --name web2 --link web1:web1httpd:centosdocker exec -it web2 /bin/bashping web1Docker Compose容器編排Docker Compose的前身是Fig,它是一個定義及運(yùn)行多個Docker容器的工具使用Docker Compose不再需要使用shell腳本來啟動容器Docker Compose非常適合組合使用多個容器進(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 -vDocker Compose文件結(jié)構(gòu)[root@localhost compose_ Inmp]# vim docker-compose.ymlYAML是一種標(biāo)記語言很直觀的數(shù)據(jù)序列化格式文件格式及編寫注意事項(xiàng)1.不支持制表符tab鍵縮進(jìn),需要使用空格縮進(jìn)2.通常開頭縮進(jìn)2個空格3.字符后縮進(jìn)1個空格,如冒號、逗號、橫杠4.用井號注釋5.如果包含特殊字符用單引號引起來6.布爾值必須用引號括起來Docker Compse配置常用字段:字段描述build dockerfile context指定Dockerfile文件名構(gòu)建鏡像上下文路徑image指定鏡像command執(zhí)行命令,覆蓋默認(rèn)命令container name指定容器名稱,由于容器名稱時唯一的,如果指定自定義名稱,則無法scaledeploy指定部署和運(yùn)行服務(wù)相關(guān)配置,只能在Swarm模式使用environment添加環(huán)境變量networks加入網(wǎng)絡(luò)ports暴露容器端口,與-p相同,但端口不能低于60volumes掛載宿主機(jī)路徑或命令卷restart重啟策略,默認(rèn)no,always,no -failure,unless-stopedhostname容器主機(jī)名Docker Compse常用命令:字段描述build重新構(gòu)建服務(wù)ps列出容器up創(chuàng)建和啟動容器exec在容器里面執(zhí)行命令scale指定一個服務(wù)容器啟動數(shù)量top顯示容器進(jìn)程logs查看容器輸出down刪除容器/網(wǎng)絡(luò)/數(shù)據(jù)卷和鏡像stop/start/restart停止/啟動/重啟服務(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?
ConsulConsul是HashiCorp公司推出的開源工具,用于實(shí)現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置Consul的特性1.Consul支持健康檢查,允許存儲鍵值對2.一致性協(xié)議采用Raft算法,用來保證服務(wù)的高可用3.成員管理和消息廣播采用GOSSIP協(xié)議,支持ACL訪問控制方便部署,與Docker等輕量級容器可無縫配合構(gòu)建自動發(fā)現(xiàn)的Docker服務(wù)架構(gòu)建立Consul服務(wù)?
1.每個提供服務(wù)的節(jié)點(diǎn)上都要部署和運(yùn)行Consul的agent2.Consul agent有兩種運(yùn)行模式ServerClient3.Server和Client只是Consul集群層面的區(qū)分,與搭建在Cluster之上的應(yīng)用服務(wù)無關(guān)Consul常用的命令-v?數(shù)據(jù)卷-d?放在后臺執(zhí)行-i?標(biāo)準(zhǔn)性輸入-t?分配偽終端Consul的作用1.做編排時需要修改配置文件,實(shí)現(xiàn)多配置文件同時修改2.擴(kuò)展性的文件放在vhost中,節(jié)偶的方式一、安裝Docker-ce引擎#安裝依賴包yum install yum-utils device-mapper-persistent-data lvm2 -y#設(shè)置阿里云鏡像源yum-config-manager --add-repo docker-ce.repo install -y docker-ce#關(guān)閉防火墻及增強(qiáng)型安全功能systemctl stop firewalld.servicesetenforce 0#啟動Docker并設(shè)置為開機(jī)自啟動systemctl start docker.servicesystemctl enable docker.service#檢查相關(guān)進(jìn)程開啟情況ps aux | grep docker#重載守護(hù)進(jìn)程systemctl daemon-reload#重啟服務(wù)systemctl restart docker二、部署docker-compose#下載安裝composecurl -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版本號,有1、2、3version: '3.3'#服務(wù)名稱services: ?nginx:#主機(jī)名 ???hostname: nginx#建立鏡像需要的目錄、dockerfile腳本名 ???build: ?????context: ./nginx ?????dockerfile: Dockerfile#映射宿主機(jī)端口 ???ports: ????- 1216:80 ????- 1200:443#工作組:同一集群一個名字 ???networks: ????- test#建立數(shù)據(jù)集的目錄 ???volumes: ????- ./wwwroot:/usr/local/nginx/html ?tomcat: ???hostname: tomcat ???build: ?????context: ./tomcat ?????dockerfile: Dockerfile ???ports: ????- 888:8080 ???networks: ????- testnetworks: ?test:#需要建立新鏡像的服務(wù)需要放在compose工作站點(diǎn)中[root@localhost docker_compose]# lsdocker-compose.yml ?nginx ?tomcat#建立容器“-f” ?指定compose文件docker-compose -f docker-compose.yml up -d四、docker-consul+template實(shí)驗(yàn)環(huán)境?
名稱角色I(xiàn)P地址所需環(huán)境包c(diǎn)entos7-1master192.168.142.128Docker-ce、Compose?、Consul、Consul-templatecentos7-2slave1192.168.142.129Docker-ce、registratorcentos7-minslave2192.168.142.130Docker-ce、registratormaster端操作#安裝Consul[root@localhost ~]# mkdir consul[root@localhost ~]# cd consul/[root@localhost consul]# unzip consul_0.9.2_linux_amd64.zip[root@localhost consul]# lsconsul ?consul_0.9.2_linux_amd64.zip#移動文件,方便識別?
[root@localhost consul]# mv consul /usr/bin/?
#設(shè)定代理并后臺啟動?
[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 &?
#查看后臺進(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ù)存儲位置?
“-bind”?綁定地址?
“-node”?定義節(jié)點(diǎn)名稱?
-?檢查群集狀態(tài)```shell#查看群集信息[root@localhost consul]# consul membersNode ????????????Address ?????????????Status ?Type ???Build ?Protocol ?DCconsul-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 leadercurl 127.0.0.1:8500/v1/catalog/services #注冊的所有服務(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ì)信息使節(jié)點(diǎn)服務(wù)器中的容器自動加入#安裝registrator(注冊器)#該工具可檢查容器運(yùn)行狀態(tài)自動 進(jìn)行注冊,還可注銷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”,即可看到五個服務(wù)(圖形化界面)?
五、建立template進(jìn)行代理手工編譯安裝nginx1.12.0?
(前面博客有詳細(xì)的)?
安裝consul-templatetemplate屬于守護(hù)進(jìn)程,用于實(shí)時查詢consul集群信息,并實(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 / { ?????????#請求頭部信息的設(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; ?????????#請求跳轉(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識別模板生成的配置文件#此時還沒有這個文件,需要去創(chuàng)建[root@localhost nginx-1.12.0]# cd /usr/local/nginx/conf/[root@localhost conf]# mkdir vhost ?????#創(chuàng)建虛擬機(jī)目錄#啟用template模板(啟用后會進(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” #寫入日志的等級謝謝閱讀!!!?
了解更多相關(guān)內(nèi)容歡迎關(guān)注http://www.vecloud.com/