如何利用Docker Compose開(kāi)啟nginx?相信大部分人都還沒(méi)學(xué)會(huì)這個(gè)技能,為了讓大家學(xué)會(huì),給大家總結(jié)了以下內(nèi)容,話不多說(shuō),一起往下看吧。
創(chuàng)新互聯(lián)專(zhuān)注于資陽(yáng)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供資陽(yáng)營(yíng)銷(xiāo)型網(wǎng)站建設(shè),資陽(yáng)網(wǎng)站制作、資陽(yáng)網(wǎng)頁(yè)設(shè)計(jì)、資陽(yáng)網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造資陽(yáng)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供資陽(yáng)網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
build dockerfile context 指定Dockerfile文件名構(gòu)建鏡像上下文路徑
image 指定鏡像
command 執(zhí)行命令,覆蓋默認(rèn)命令
container name 指定容器名稱(chēng),由于容器名稱(chēng)是唯一的,如果指定自定義名稱(chēng),則無(wú)法scale
deploy 指定部署和運(yùn)行服務(wù)相關(guān)配置,只能在swarm模式使用
environment 添加環(huán)境變量
networks 加入網(wǎng)絡(luò)
ports 暴露容器端口,但端口不能低于60
volumes 掛載宿主機(jī)或命令卷,像數(shù)據(jù)卷一樣
restart 重啟策略
hostname 容器主機(jī)名
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ù)
docker-compose選項(xiàng)
--verbose 輸出更多調(diào)試信息
--version 打印版本并退出
-f,--file 使用特定的compose模板文件,默認(rèn)為docker-compose.yml
-p,指定項(xiàng)目名稱(chēng),默認(rèn)使用目錄名稱(chēng)
Consul是HashCorp公司推出得到開(kāi)源工具,用于實(shí)現(xiàn)分布式系統(tǒng)的服務(wù)與配置
Consul的特性
Consul支持健康檢查,允許存儲(chǔ)鍵值對(duì)
一致性協(xié)議采用Raft算法,用來(lái)保證服務(wù)的高可用
成員管理和消息廣播采用GOSSIP協(xié)議,支持ACL訪問(wèn)控制列表,與docker無(wú)縫配合
每個(gè)提供服務(wù)的節(jié)點(diǎn)上都要部署Consul的agent
Consul agent有兩種運(yùn)行模式
Server
Client
Server和Client只是Conusl集群層面的區(qū)分,與搭建在Cluster之上的應(yīng)用服務(wù)無(wú)關(guān)
consul群集架構(gòu),發(fā)現(xiàn)注冊(cè)nginx中的docker容器,監(jiān)控節(jié)點(diǎn)服務(wù)器的狀態(tài)。
consul server服務(wù)器中的nginx做反向代理去輪詢?cè)L問(wèn)服務(wù)器池中的一個(gè)個(gè)容器。用戶訪問(wèn)代理端口,就能訪問(wèn)到后面的多個(gè)容器,我們的端口做了兩次映射。consul服務(wù)器上可以統(tǒng)一修改配置文件
-----------------------------------------------------docker-compose容器編排----------------------------------------------------------------
#宿主機(jī)的共享目錄有nginx軟件包,我們掛載到/opt/目錄下
mount.cifs //192.168.100.25/LNMP /opt/
#創(chuàng)建容器編排目錄
mkdir /root/compose_ngin
#創(chuàng)建nginx容器鏡像
cd compose_nginx/
mkdir nginx
cd nginx/
cd /opt/
cp nginx-1.12.0.tar.gz /root/compose_nginx/nginx/
cd /root/compose_nginx/nginx/
#加上nginx啟動(dòng)腳本
vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx
[root@localhost nginx]# vim Dockerfile
FROM centos:7
MAINTAINER this is nginx
RUN yum -y update
RUN yum -y install wget pcre-devel zlib-devel make zlib gcc gcc-c++ openssl-devel net-tools
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src
WORKDIR /usr/local/src
WORKDIR nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
WORKDIR /root/nginx
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
[root@localhost compose_nginx]# vim docker-compose.yml
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- 1216:80
- 1217:443
networks:
- chen
volumes:
- ./wwwroot:/usr/local/nginx/html
networks:
chen:
[root@localhost compose_nginx]# mount.cifs //192.168.100.25/compose /mnt/
Password for root@//192.168.100.25/compose:
[root@localhost compose_nginx]# cd /mnt/
[root@localhost mnt]# ls
consul_0.9.2_linux_amd64.zip consul-template_0.19.3_linux_amd64.zip docker-compose
[root@localhost mnt]# cp -p docker-compose /usr/local/bin/
[root@localhost mnt]# chmod +x /usr/local/bin/docker-compose
#開(kāi)啟路由轉(zhuǎn)發(fā)
[root@localhost compose_nginx]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1[root@localhost compose_nginx]# sysctl -p
net.ipv4.ip_forward = 1
[root@localhost compose_nginx]# docker-compose -f docker-compose.yml up -d
[root@localhost compose_nginx]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
66d7cee5692d compose_nginx_nginx "/run.sh" 11 seconds ago Up 9 seconds 0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp compose_nginx_nginx_1
[root@localhost compose_nginx]# ls
docker-compose.yml nginx wwwroot
[root@localhost compose_nginx]# cd wwwroot/
[root@localhost wwwroot]# vim index.html
this is chen web ! ! !
-------------------------------------------------------------------consul部署----------------------------------------------------------------------
[root@localhost ~]# mkdir consul
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
consul_0.9.2_linux_amd64.zip consul-template_0.19.3_linux_amd64.zip docker-compose
[root@localhost mnt]# cp consul_0.9.2_linux_amd64.zip /root/consul/
[root@localhost mnt]# cd /root/consul/
[root@localhost consul]# ls
consul_0.9.2_linux_amd64.zip
[root@localhost consul]# unzip consul_0.9.2_linux_amd64.zip
Archive: consul_0.9.2_linux_amd64.zip
inflating: consul
[root@localhost consul]# mv consul /usr/bin/
#使用conusl agent代理功能
[root@localhost consul]# consul agent \
#指定server功能
#參與領(lǐng)袖
#ui界面
#參數(shù)指定位置
#綁定本地地址
#面對(duì)所有節(jié)點(diǎn)
#本地節(jié)點(diǎn)名稱(chēng)混合輸出到日志中,放在后臺(tái)運(yùn)行
> -server \
> -bootstrap \
> -ui \
> -data-dir=/var/lib/consul-data \
> -bind=192.168.136.142 \
> -client=0.0.0.0 \
> -node=consul-server01 &> /var/log/consul.log &
[1] 37957
#查看群集信息
[root@localhost consul]# consul members
Node Address Status Type Build Protocol DC
consul-server01 192.168.136.142:8301 alive server 0.9.2 2 dc1
#現(xiàn)在只有一臺(tái),它就是老大
[root@localhost consul]# consul info | grep leader
leader = true
leader_addr = 192.168.136.142:8300
[root@localhost ~]# docker run -d \
> --name=registrator \ #指定容器名稱(chēng)
> --net=host \ #指定主機(jī)
> -v /var/run/docker.sock:/tmp/docker.sock \ #指定數(shù)據(jù)卷宿主機(jī)目錄,容器目錄
> --restart=always \ #重啟
> gliderlabs/registrator:latest \ #指定本地的鏡像
> -ip=192.168.136.167 \ #指定你本地的地址
> consul://192.168.136.142:8500 #指定consul的地址
#兩個(gè)nginx服務(wù)容器
[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
#兩個(gè)apache服務(wù)5容器
[root@localhost ~]# docker run -itd -p:88:80 --name test-03 -h test02 httpd
[root@localhost ~]# docker run -itd -p:89:80 --name test-04 -h test04 httpd
#查看所有容器
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
00a94fe6fd0c httpd "httpd-foreground" 6 seconds ago Up 5 seconds 0.0.0.0:89->80/tcp test-04
b47b89287e43 httpd "httpd-foreground" 38 seconds ago Up 37 seconds 0.0.0.0:88->80/tcp test-03
9b695e1d8660 nginx "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:84->80/tcp test-02
3cbf17118dab nginx "nginx -g 'daemon of…" 2 minutes ago Up 2 minutes 0.0.0.0:83->80/tcp test-01
055caf398060 gliderlabs/registrator:latest "/bin/registrator -i…" 3 minutes ago Up 3 minutes registrator
Consul-Templatee 是一個(gè)守護(hù)進(jìn)程,用于實(shí)時(shí)查詢Consul集群信息,并更新文件系統(tǒng)上
任意數(shù)量的指定模板,生成配置文件。更新完成以后,可以選擇運(yùn)行shell命令執(zhí)行更新操作,重新加載nginx,Consul-template
可以查詢Consul中的服務(wù)目錄,key,key-values等
這種強(qiáng)大的抽象功能和查詢語(yǔ)言模板可以使Consul-template特別適合動(dòng)態(tài)的創(chuàng)建配置文件
[root@localhost ~]# cd /root/
[root@localhost ~]# ls
anaconda-ks.cfg compose_nginx initial-setup-ks.cfg 公共 文檔 模板 音樂(lè)
chen consul 下載 圖片 桌面 視頻
[root@localhost ~]# cd consul/
[root@localhost consul]# ls
consul_0.9.2_linux_amd64.zip
[root@localhost consul]#
#準(zhǔn)備temlate nginx 模板文件
[root@localhost consul]# vim nginx.ctmpl
upstream http_backend {
{{range service "nginx"}}
server {{.Address}}:{{.port}};
{{end}}
}
server {
listen 1216;
server_name localhost 192.168.136.167;
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
[root@localhost nginx-1.12.0]# yum install gcc gcc-c++ pcre-devel zlib-devel -y
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx
[root@localhost nginx-1.12.0]# make && make install
[root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf
#nginx中有events,http,if,location,字段
19 include vhost/*.conf;
[root@localhost nginx-1.12.0]# cd /usr/local/nginx/conf/
[root@localhost conf]# mkdir vhost
[root@localhost consul]# cd /var/log/
[root@localhost log]# mkdir /var/log/nginx
[root@localhost log]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost log]# nginx
[root@localhost log]# netstat -ntap | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 107612/nginx: ma
[root@localhost opt]# cd /mnt/
[root@localhost mnt]# cp consul-template_0.19.3_linux_amd64.zip /root/
[root@localhost mnt]# cd /root/
[root@localhost ~]# unzip consul-template_0.19.3_linux_amd64.zip
[root@localhost ~]# mv consul-template /usr/bin/
#啟用模板
[root@localhost ~]# consul-template -consul-addr 192.168.136.142:8500 \
> -template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \
> --log-level=info
#coul服務(wù)器處于監(jiān)控狀態(tài),我們?cè)匍_(kāi)一臺(tái)終端同一臺(tái)服務(wù)器的
#驗(yàn)證
#增加一個(gè)nginx容器節(jié)點(diǎn)
增加一個(gè)nginx容器節(jié)點(diǎn),測(cè)試服務(wù)發(fā)現(xiàn)及配置更新功能
//在registrator服務(wù)端注冊(cè)
dockers run -itd -p:85:80 --name test-05 -h test05 nginx
docker logs -f test-01
docker logs -f test-02
docker logs -f test-05
以上就是用Docker Compose開(kāi)啟nginx的方法介紹,詳細(xì)使用情況還得要大家自己使用過(guò)才能知道具體要領(lǐng)。如果想閱讀更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!