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.下载
[[email protected] ~]# ls
docker-compose-Linux-x86_64-1.22.0
#2.拷贝二进制文件
[[email protected] ~]# mv docker-compose-Linux-x86_64-1.22.0 /usr/local/bin/docker-compose
#3.添加权限
[[email protected] ~]# chmod +x /usr/local/bin/docker-compose
1
2
3
4
5
6
7
2.创建目录
[[email protected] ~]# cd /tmp/
[[email protected] tmp]# mkdir docker
[[email protected] tmp]# ls
docker
[[email protected] tmp]# cd docker/
[[email protected] docker]# pwd
/tmp/docker
[[email protected] docker]# mkdir compose
[[email protected] docker]# cd compose/
[[email protected] compose]# ls
1
2
3
4
5
6
7
8
9
10
3.编写compose文件
[[email protected] 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.编写发布文件
[[email protected] compose]# mkdir web1
[[email protected] compose]# mkdir web2
[[email protected] compose]# echo web1 > web1/index.html
[[email protected] compose]# echo web2 > web2/index.html
1
2
3
4
5.编写haproxy文件
haproy:提供负载均衡
1
[[email protected] compose]# mkdir haproxy
[[email protected] compose]# cd haproxy/
[[email protected] haproxy]# ls
[[email protected] 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
[[email protected] haproxy]# ls
haproxy.cfg
[[email protected] haproxy]# cd ..
[[email protected] compose]# ls
docker-compose.yml haproxy web1 web2
1
2
3
4
5
6.下载并导入镜像
镜像:
nginx.tar
ubuntu.tar
1
2
#1.下载镜像
[[email protected] ~]# ls
nginx.tar ubuntu.tar
#2.导入镜像
[[email protected] ~]# docker load -i nginx.tar
[[email protected] ~]# docker load -i haproxy.tar
#3.查看年镜像
[[email protected] ~]# 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
[[email protected] ~]# cd /tmp/docker/compose
#启动;注意必须在此路径下才能执行
[[email protected] compose]# docker-compose up -d
1
2
3
#查看日志
[[email protected] 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:
#必须先关闭才能删除
[[email protected] haproxy]# docker-compose stop
[[email protected] haproxy]# docker-compose rm
1
2
3
#下次想再使用,只需再开启即可
[[email protected] haproxy]# docker-compose up -d
1
2
————————————————
版权声明:本文为CSDN博主「奋斗吧,青年!」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lilygg/article/details/88760613
原文地址:https://www.cnblogs.com/ExMan/p/12019411.html