一.什么是Docker compose?

可以一条命令启动多个容器,使用Docker Compose不再需要使用shell脚本来启动容器。 

非常适合组合使用多个容器进行开发的场景。

  docker-compose默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建。

其它大部分指令都跟 docker run 中的类似。

  如果使用 build 指令,在 Dockerfile 中设置的选项(例如:CMD, EXPOSE, VOLUME, ENV 等) 将会自动被获取,无需在 docker-compose.yml 中再次设置。
使用Compose 基本上分为三步:1.Dockerfile 定义应用的运行环境  2.docker-compose.yml 定义组成应用的各服务  3.docker-compose up 启动整个应用

 

二.Docker compose 的搭建

1.将下载的二进制文件移到 /usr/local/bin/,并赋予执行权限

  

mv  docker-compose-Linux-x86_64-1.22.0  /usr/local/bin/docker-compose
  chmod +x /usr/local/bin/docker-compose

2.编写模板文件 docker-compose.yml

 

mkdir -p /tmp/docker/compose
  cd /tmp/docker/compose
  vim docker-compose.yml
    web1:
              image: nginx
              expose:
                        - 80
              volumes:
                        - ./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"

 

3.编写测试用的测试页面

pwd
    /tmp/docker/compose
  mkdir web1/web2
  echo web1 > web1/index.html      
  echo web2 > web2/index.html

 

4.用haproxy实现负载均衡

 

pwd
    /tmp/docker/compose
  mkdir haproxy 
  cd 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  ##实现的是:轮训的效果
              server server1 web1:80 check
              server server2 web2:80 check

 

5.导入镜像,并运行compose

 

docker load -i nginx.tar 
  docker load -i haproxy.tar   cd -
    /tmp/docker/compose/haproxy
  docker-compose up -d
    Creating compose_web1_1 ... done
    Creating compose_web2_1 ... done
    Creating compose_haproxy_1 ... done
  docker-compose logs      ##可以查看日志记录
    Attaching to compose_haproxy_1, compose_web2_1, compose_web1_1
    haproxy_1  | <7>haproxy-systemd-wrapper: executing /us

r/local/sbin/haproxy -p /run/haproxy.pid -f /usr/local/etc/haproxy/haproxy.cfg -Ds

 

6.进入浏览器进行测试  刷新会出现轮训的效果,而且会记录到log日志文件中

      

Docker-compose编写搭建LAMP docker-compose --build_Docker

 

7.想要删除相应的创建好的容器,需要先关闭,再删除

      

Docker-compose编写搭建LAMP docker-compose --build_nginx_02