docker-compose

之前在博客里面写过dockerfile、镜像的创建。今天写的docker-compose是容器的创建。两者有很类似的地方,也有不同的地方。相同地方都是由文件结构来创建的,都是逐条执行命令,不同地方就是文件内容的组件不同。用户在定义一个*.yml模板来定义一个相关联的容器。利用docker-compose创建镜像可以根据环境的不同来定制不同的容器,接下来以一个负载均衡环境来部署

拓扑环境:一个haproxy负载均衡器,3台web服务器

整体思路:

安装docker-compose、部署好文件环境并构建docker-compose.yml文件、启动docker-compose

一、安装docker-compose

1.先安装pip,类似yum安装,安装Python包非常方便

wget https://bootstrap.pypa.io/get-pip.py          //下载pip

python get-pip.py          //安装pip

2.安装docker-compose

pip install docker-compose

ln -s /usr/bin/docker-compose /usr/local/bin/      //链接到系统目录下,方便使用

docker-compose -h          //如果不会命令查看-h

二、在宿主机上创建好共享给容器的文件,如网页文件、配置文件等

mkdir -p /root/docker-haproxy/{haproxy,web}

cd /root/docker-haproxy/web
vim index.html           //给web服务器创建一个网页文件

cd /root/docker-haproxy/haproxy
vim haproxy.cfg          //给haproxy创建一个配置文件

以下是haproxy配置文件的内容:

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

listen stats     //监听状态,给任何地址一个70端口,可以通过70端口对haproxy的情况做检查
    bind 0.0.0.0:70
    stats enable
    stats uri /

frontend balancer   //全段均衡器,haproxy绑定端口,客户端可以通过这个端口访问负载均衡器
    bind 0.0.0.0:80
    mode http
    default_backend web_backends

backend web_backends        //后端配置项,主要写入与后端容器连接地址
    mode http
    option forwardfor
    balance roundrobin
    server weba weba:80 check
    server webb webb:80 check
    server webc webc:80 check
    option httpchk GET /
    http-check expect status 200

三、编写docker-compose.yml文件

web1:
  image: centos:http                 
// 用哪个镜像启动容器(可用镜像ID号),可以是本地也可以是HUB仓库里的。如果有dockerfile文件可以用build命令制定dockerfile文件路径,如build:/root/docker
  volumes:
    - /root/docker-haproxy/web/:/var/www/html/
//与宿主机挂载的位置,格式为 - 宿主机目录:容器路径。当前是把宿主机做好的网页文件映射到容器里的/var/www/html
  expose:
    - 80
//不向宿主机暴露端口号,而是在内部被发布

web2:
  image: centos:http
  volumes:
    - /root/docker-haproxy/web/:/var/www/html/
  expose:
    - 80

web3:
  image: centos:http
  volumes:
    - /root/docker-haproxy/web/:/var/www/html/
  expose:
    - 80

haproxy:
  image: 047d39960eb2
  volumes:
    - /root/docker-haproxy/haproxy/:/etc/haproxy/:ro
//把宿主机/root/docker-haproxy/haproxy/路径映射到容器中/etc/haproxy/,并且文件类型为只读
  command: /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
//在容器中运行的命令使用command
  links:
    - web1
    - web2
    - web3
//通过容器名连接到其他容器,连接成功会在容器中的/etc/hots文件中添加一条容器本地IP地址与容器名的映射
  ports:
    - "80:80"
    - "70:70"
//把端口号暴露在宿主机中,这里haproxy需要通过客户机的访问做负载均衡,所以要把端口暴露在宿主机中

四、在docker-compose.yml文件的当前路径下运行 docker-compose up -d 启动

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值