Docker三剑客之Docker-Compose

一、Docker Compose简介

(1) 微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知。
(2) Docker Compose是一种编排服务,基于pyhton语言实现,是一个用于在 Docker
上定义并运行复杂应用的工具,可以让用户在集群中部署分布式应用。
(3) 用户可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。
(4) 解决了容器与容器之间如何管理编排的问题。

Docker Compose 中有两个重要的概念:

服务 (service) : 一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
项目 (project) : 由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
在这里插入图片描述

二、Docker Compose实践

1.docker compose安装
方式1:(官方推荐,但是慢)

curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

官网下载地址:https://docs.docker.com/compose/install/

方式二:

https://mirrors.aliyun.com/docker-toolbox/linux/compose/
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

注:安装好docker-compose重启docker,否则docker-compose不生效
在这里插入图片描述

2.编辑docker-compose

(1)创建docker-compose.yml文件

[root@server4 ~]cd /root/compose
[root@server4 ~/compose]#vim docker-compose.yml
[root@server4 ~/compose]#cat 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:latest
        volumes:
                - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
        links:
                - web1
                - web2
        ports:
                - "80:80"
        expose:
                - "80"
[root@server4 ~/compose]#mkdir web1
[root@server4 ~/compose]#mkdir web2
[root@server4 ~/compose]#cd web1
[root@server4 ~/compose/web1]#vim index.html
[root@server4 ~/compose/web1]#cd ../web2
[root@server4 ~/compose/web2]#vim index.html

Image: 指定为镜像名称或镜像 ID,如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。
Build: 指定 Dockerfile 所在文件夹的路径。 Compose 将会利用它自动构建这个镜像,然后使用这个镜像。
Command: 覆盖容器启动后默认执行的命令。
Links: 链接到其它服务中的容器。
Ports: 端口映射。
Expose: 暴露端口信息
Volumes: 卷挂载路径设置

(2)编辑haproxy配置文件

[root@server4 ~/compose]#mkdir haproxy
[root@server4 ~/compose]#cd haproxy/
[root@server4 ~/compose/haproxy]#ls
[root@server4 ~/compose/haproxy]#vim haproxy.cfg
[root@server4 ~/compose/haproxy]#cat 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 balanceer
	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

(3)在配置主机上需要有nginx与haproxy镜像

[root@server4 ~]#docker images haproxy
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
haproxy             latest              fbd1f55f79b3        3 years ago         139MB
[root@server4 ~]#docker images nginx
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              ac44715da54a        8 weeks ago         109MB

3.运行docker-compose
(1)docker-compose命令必须在项目下运行,以下是项目目录结构:
在这里插入图片描述
(2)docker-compose up 创建并启动容器

[root@server4 ~/compose]#docker-compose up -d
Creating compose_web1_1 ... done
Creating compose_web2_1 ... done
Creating compose_haproxy_1 ... done

(3)列出所有容器

[root@server4 ~/compose]#docker-compose ps
      Name                     Command               State    Ports 

compose_haproxy_1   /docker-entrypoint.sh hapr ...   Exit 0         
compose_web1_1      nginx -g daemon off;             Up       80/tcp
compose_web2_1      nginx -g daemon off;             Up       80/tcp

测试: curl 172.25.60.4
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值