docker-compose
docker单独只能run一次创建一个容器,而docker-compose可以对多个容器进行编排。
这里我用docker-compose用haproxy做负载均衡,一键配置多个容器
先导入需要的镜像.haproxy,nginx,apache
因为apche,nginx,的镜像我这里前面导入过了
所以,我这只导了haproxy
[root@foundation3 ~]# docker load -i haproxy.tar
917c0fc99b35: Loading layer 130.9 MB/130.9 MB
5f70bf18a086: Loading layer 1.024 kB/1.024 kB
c205bb11f213: Loading layer 4.684 MB/4.684 MB
ffef890bdf7b: Loading layer 9.549 MB/9.549 MB
3ec368642ee3: Loading layer 2.048 kB/2.048 kB
Loaded image: haproxy:latest
在/tmp/docker目录下建立compose目录,并编写.yml文件
[root@foundation3 .docker]# cd /tmp/docker/
[root@foundation3 docker]# ls
auth certs Dockerfile dvd.repo ssh supervisord.conf test web
[root@foundation3 docker]# mkdir compose
[root@foundation3 docker]# cd compose/
[root@foundation3 compose]# ls
[root@foundation3 compose]# pwd
/tmp/docker/compose
[root@foundation3 compose]# vim docker-compose.yml
docker-compose.yml 文件内容为:
apache:
image: rhel7:v1
expose:
- 80
volumes:
- ./web:/var/www/html
nginx:
image: nginx
expose:
- 80
haproxy:
image: haproxy
volumes:
- ./haproxy:/usr/local/etc/haproxy
links:
- apache
- nginx
ports:
- "8080:80"
expose:
- 80
编辑haproxy的配置文件,指定web1和web2实现apache和nginx负载均衡
[root@foundation3 compose]# cd ..
[root@foundation3 docker]# cp -r web/ compose/
###为了看到之前写好的apache页面,直接将之前的web拷贝到compose目录里
[root@foundation3 docker]# cd compose/
[root@foundation3 compose]# ls
docker-compose.yml web
[root@foundation3 compose]# mkdir haproxy
[root@foundation3 compose]# cd haproxy/
[root@foundation3 haproxy]# ls
[root@foundation3 haproxy]# vim haproxy.cfg
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
server web1 apache:80 check
server web2 nginx:80 check
在网上下载docker-compose-Linux-x86_64-1.22.0
将其放在/usr/local/bin下,不然没有docker-compose命令
[root@foundation3 compose]# cd /usr/local/bin/
[root@foundation3 bin]# chmod +x docker-compose-Linux-x86_64-1.22.0
[root@foundation3 bin]# ln -s docker-compose-Linux-x86_64-1.22.0 docker-compose
以上完成后,就可以启用了
##up推送,crtl+c退出
[root@foundation3 compose]# docker-compose up
Starting compose_apache_1 ... done
Starting compose_nginx_1 ... done
Starting compose_haproxy_1 ... done
Attaching to compose_apache_1, compose_nginx_1, compose_haproxy_1
apache_1 | AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
haproxy_1 | <7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -f /usr/local/etc/haproxy/haproxy.cfg -Ds
^CGracefully stopping... (press Ctrl+C again to force)
Stopping compose_haproxy_1 ... done
Stopping compose_apache_1 ... done
Stopping compose_nginx_1 ... done
在网页测试会实现论询:
查看状态监控:
###crtl + c退出后
[root@foundation3 compose]# docker-compose start ###直接打开
Starting apache ... done
Starting nginx ... done
Starting haproxy ... done
[root@foundation3 compose]# docker ps -a ##查看容器情况
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
33595ac4a76e haproxy "/docker-entrypoin..." 9 minutes ago Up 16 seconds 0.0.0.0:8080->80/tcp compose_haproxy_1
fbe24843f3c4 rhel7:v1 "/usr/sbin/httpd -..." 9 minutes ago Up 17 seconds 80/tcp compose_apache_1
96f4c5491008 nginx "nginx -g 'daemon ..." 9 minutes ago Up 17 seconds 80/tcp compose_nginx_1
[root@foundation3 compose]# docker stop compose_apache_1
compose_apache_1
####关闭apache
当apache被关闭后,查看监控状态,会显示down,当然论询也会失败