Docker Compose 部署Nginx服務實現負載均衡


Compose簡介:

Compose是Docker容器進行編排的工具,定義和運行多容器的應用,可以一條命令啟動多個容器,使用Docker Compose,不再需要使用shell腳本來啟動容器。
Compose通過一個配置文件來管理多個Docker容器,在配置文件中,所有的容器通過services來定義,然后使用docker-compose腳本來啟動,停止和重啟應用。
docker-compose默認的模板文件是 docker-compose.yml,其中定義的每個服務都必須通過image 指令指定鏡像或 build指令(需要Dockerfile)來自動構建鏡像。
1
2
3
1.下載並安裝docker-compose

安裝包:(二進制文件)

docker-compose-Linux-x86_64-1.22.0
1
#1.下載
[root@server1 ~]# ls
docker-compose-Linux-x86_64-1.22.0
#2.拷貝二進制文件
[root@server1 ~]# mv docker-compose-Linux-x86_64-1.22.0 /usr/local/bin/docker-compose
#3.添加權限
[root@server1 ~]# chmod +x /usr/local/bin/docker-compose
1
2
3
4
5
6
7
2.創建目錄

[root@server1 ~]# cd /tmp/
[root@server1 tmp]# mkdir docker
[root@server1 tmp]# ls
docker
[root@server1 tmp]# cd docker/
[root@server1 docker]# pwd
/tmp/docker
[root@server1 docker]# mkdir compose
[root@server1 docker]# cd compose/
[root@server1 compose]# ls
1
2
3
4
5
6
7
8
9
10
3.編寫compose文件

[root@server1 compose]# vim docker-compose.yml
#######################
web1: #容器名稱
image: nginx #鏡像名稱
expose: #對外暴露端口
- 80
volumes: #掛載卷
- ./web1:/usr/share/nginx/html #將當前目錄下的web1掛載到容器的/usr/share/nginx/html 目錄下
web2:
image: nginx
expose:
- 80
volumes:
- ./web2:/usr/share/nginx/html

haproxy:
image: haproxy
volumes:
- ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro #只讀掛載
links: #容器鏈接
- web1
- web2
ports: #端口映射
- "80:80"
expose:
- "80"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

4.編寫發布文件

[root@server1 compose]# mkdir web1
[root@server1 compose]# mkdir web2
[root@server1 compose]# echo web1 > web1/index.html
[root@server1 compose]# echo web2 > web2/index.html
1
2
3
4
5.編寫haproxy文件

haproy:提供負載均衡
1
[root@server1 compose]# mkdir haproxy
[root@server1 compose]# cd haproxy/
[root@server1 haproxy]# ls
[root@server1 haproxy]# vim haproxy.cfg
#######################
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice

defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
stats uri /status

frontend balancer
bind 0.0.0.0:80
default_backend web_backends

backend web_backends
balance roundrobin #輪詢算法;check表示健康檢查
server server1 web1:80 check
server server2 web2:80 check
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27


[root@server1 haproxy]# ls
haproxy.cfg
[root@server1 haproxy]# cd ..
[root@server1 compose]# ls
docker-compose.yml haproxy web1 web2
1
2
3
4
5
6.下載並導入鏡像

鏡像:

nginx.tar
ubuntu.tar
1
2
#1.下載鏡像
[root@server1 ~]# ls
nginx.tar ubuntu.tar
#2.導入鏡像
[root@server1 ~]# docker load -i nginx.tar
[root@server1 ~]# docker load -i haproxy.tar
#3.查看年鏡像
[root@server1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 881bd08c0b08 2 weeks ago 109MB
haproxy latest fbd1f55f79b3 3 years ago 139MB
1
2
3
4
5
6
7
8
9
10
11
7.啟動compose

[root@server1 ~]# cd /tmp/docker/compose
#啟動;注意必須在此路徑下才能執行
[root@server1 compose]# docker-compose up -d
1
2
3


#查看日志
[root@server1 compose]# docker-compose logs
Attaching to compose_haproxy_1, compose_web1_1, compose_web2_1
haproxy_1 | <7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -f /usr/local/etc/haproxy/haproxy.cfg -Ds
1
2
3
4
測試:

輸入: http://172.25.66.1/status 發現可以實現健康檢查
1


輸入:http://172.25.66.1/ 刷新網頁,發現可以實現輪詢
1


管理compose:

#必須先關閉才能刪除
[root@server1 haproxy]# docker-compose stop
[root@server1 haproxy]# docker-compose rm
1
2
3


#下次想再使用,只需再開啟即可
[root@server1 haproxy]# docker-compose up -d
1
2

————————————————
版權聲明:本文為CSDN博主「奮斗吧,青年!」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lilygg/article/details/88760613


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM