您好,登錄后才能下訂單哦!
如何利用Docker Compose開啟nginx?相信大部分人都還沒學會這個技能,為了讓大家學會,給大家總結了以下內容,話不多說,一起往下看吧。
build dockerfile context 指定Dockerfile文件名構建鏡像上下文路徑
image 指定鏡像
command 執行命令,覆蓋默認命令
container name 指定容器名稱,由于容器名稱是唯一的,如果指定自定義名稱,則無法scale
deploy 指定部署和運行服務相關配置,只能在swarm模式使用
environment 添加環境變量
networks 加入網絡
ports 暴露容器端口,但端口不能低于60
volumes 掛載宿主機或命令卷,像數據卷一樣
restart 重啟策略
hostname 容器主機名
build 重新構建服務
ps 列出容器
up 創建和啟動容器
exec 在容器里面執行命令
scale 指定一個服務容器啟動數量
top 顯示容器進程
logs 查看容器輸出
down 刪除容器,網絡,數據卷和鏡像
stop/start/restart 停止/啟動/重啟服務
docker-compose選項
--verbose 輸出更多調試信息
--version 打印版本并退出
-f,--file 使用特定的compose模板文件,默認為docker-compose.yml
-p,指定項目名稱,默認使用目錄名稱
Consul是HashCorp公司推出得到開源工具,用于實現分布式系統的服務與配置
Consul的特性
Consul支持健康檢查,允許存儲鍵值對
一致性協議采用Raft算法,用來保證服務的高可用
成員管理和消息廣播采用GOSSIP協議,支持ACL訪問控制列表,與docker無縫配合
每個提供服務的節點上都要部署Consul的agent
Consul agent有兩種運行模式
Server
Client
Server和Client只是Conusl集群層面的區分,與搭建在Cluster之上的應用服務無關
consul群集架構,發現注冊nginx中的docker容器,監控節點服務器的狀態。
consul server服務器中的nginx做反向代理去輪詢訪問服務器池中的一個個容器。用戶訪問代理端口,就能訪問到后面的多個容器,我們的端口做了兩次映射。consul服務器上可以統一修改配置文件
-----------------------------------------------------docker-compose容器編排----------------------------------------------------------------
#宿主機的共享目錄有nginx軟件包,我們掛載到/opt/目錄下
mount.cifs //192.168.100.25/LNMP /opt/
#創建容器編排目錄
mkdir /root/compose_ngin
#創建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啟動腳本
vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx
[root@localhost nginx]# vim Dockerfile
FROM centos:7
MAINTAINER this is nginx <chen>
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
#開啟路由轉發
[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
<h2>this is chen web ! ! !</h2>
-------------------------------------------------------------------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功能
#參與領袖
#ui界面
#參數指定位置
#綁定本地地址
#面對所有節點
#本地節點名稱混合輸出到日志中,放在后臺運行
> -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
#現在只有一臺,它就是老大
[root@localhost consul]# consul info | grep leader
leader = true
leader_addr = 192.168.136.142:8300
[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.136.167 \ #指定你本地的地址
> consul://192.168.136.142:8500 #指定consul的地址
#兩個nginx服務容器
[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
#兩個apache服務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 是一個守護進程,用于實時查詢Consul集群信息,并更新文件系統上
任意數量的指定模板,生成配置文件。更新完成以后,可以選擇運行shell命令執行更新操作,重新加載nginx,Consul-template
可以查詢Consul中的服務目錄,key,key-values等
這種強大的抽象功能和查詢語言模板可以使Consul-template特別適合動態的創建配置文件
[root@localhost ~]# cd /root/
[root@localhost ~]# ls
anaconda-ks.cfg compose_nginx initial-setup-ks.cfg 公共 文檔 模板 音樂
chen consul 下載 圖片 桌面 視頻
[root@localhost ~]# cd consul/
[root@localhost consul]# ls
consul_0.9.2_linux_amd64.zip
[root@localhost consul]#
#準備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服務器處于監控狀態,我們再開一臺終端同一臺服務器的
#驗證
#增加一個nginx容器節點
增加一個nginx容器節點,測試服務發現及配置更新功能
//在registrator服務端注冊
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開啟nginx的方法介紹,詳細使用情況還得要大家自己使用過才能知道具體要領。如果想閱讀更多相關內容的文章,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。