Docker-compose容器编排工具

1.Docker-compose简介

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

1.1compose的使用步骤

  1. 使用 Dockerfile 定义应用程序的环境。
  2. 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  3. 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

1.2docker-compose常用命令

build 重新构建服务
ps 列出容器
up 创建和启动容器
exec 在容器里面执行命令
scale 指定一个服务容器启动数量
top 显示容器进程
logs 查看容器输出
down 删除容器、网络、数据卷和镜像
stop/start/restart 停止/启动/重启服务

1.3docker-compose的yaml文件常用字段

version: 	#指定compose版本
services:	#部署的容器服务
  web:		#服务名
    build: .		#镜像由Dockerfile构建,指定文件位置,.文件位于当前上下文路径
      dockerfile:	#默认为Dockerfile,可不指定,除非dockerfile文件名是其他
      context:		#指定dockerfile文件目录
    container_name:	#容器名称
    ports:		#暴露容器端口与宿主机映射,与-p相同,但端口不能低于60
    - "80:80"
    volumes:	#挂载宿主机路径或命令卷
    - /www
    - logvolume01:/var/log
    links:		#连接容器
    - redis
    networks:	#加入网络
    restart:	#重启策略,默认no,还有always,no-failure,unless-stoped   
    hostname:	#容器主机名
    environment:	#添加环境变量
    deploy:	#指定部署和运行服务相关配置,只能在Swarm模式使用
  redis:
    image: redis		#指容器由镜像构建,指定镜像
volumes:
  logvolume01: {}

2.Docker-compose实战

2.1配置docker-compose工具

下载docker-compose
github的下载连接总是出错,这里采用国内的下载地址

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m`  > /usr/local/bin/docker-compose

该工具文件被下载到/usr/local/bin下,并命名为docker-compose
需要给该文件提供执行权限

chmod +x /usr/local/bin/docker-compose

此时就可以使用docker-compose命令

docker-compose [options] [CMD] [ARGS...]
##options##
--version:打印版本并退出
--verbose:输出更多调试信息
-f,--file 适用特定的compose模板
-p,--project-name :指定项目名

一般使用
docker-compose -f 文件名(路径) up -d	#-d在后台运行

2.2利用docker-compose部署nginx负载均衡集群

创建工作目录

mkdir -p /root/new/nginx

在nginx目录内

在这里插入图片描述

编写Dockerfile,用于搭建nginx镜像

vi Dockerfile

FROM centos:7
MAINTAINER Q
RUN yum -y install gcc gcc-c++ make pcre-devel zlib-devel
RUN useradd -M -s /sbin/nologin nginx
WORKDIR /usr/local/src
ADD nginx-1.12.2.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.12.2
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
RUN make && make install
WORKDIR /usr/local/nginx/conf
RUN mv nginx.conf nginx.conf.bak
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
COPY run.sh /run.sh
RUN chmod +x /run.sh
CMD ["/run.sh"]

编写run.sh脚本,用于启动该容器时启动nginx服务

vi run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

编写nginx配置文件,用于覆盖容器内nginx的配置文件

#以下为反向代理配置
http{
upstream http_server {
                server 192.168.58.30:81 weight=1;
                server 192.168.58.30:82 weight=1;
        }
}
	server {
              location / {
            	root   html;
            	index  index.html index.htm;
            	proxy_pass http://http_server;
                    }
}

在new目录内

在这里插入图片描述
编写docker-compose.yaml,用于自动编排容器

vi docker-compose.yaml

version: '3'
services:
  nginx:
    build:
      dockerfile: Dockerfile
      context: ./nginx
    ports:
     - "80:80"
    volumes:
     - /www/nginx:/usr/local/nginx/html
    container_name: nginx1
  http1:
    image: httpd
    volumes:
     - /www/http1:/usr/local/apache2/htdocs
    ports:
     - "81:80"
    container_name: http1
  http2:
    image: httpd
    volumes:
     - /www/http2:/usr/local/apache2/htdocs
    ports:
     - "82:80"
    container_name: http2

创建web网页目录并写入网页

mkdir -p /www/{nginx,http1,http2}
#用于测试反向代理是否失败,nginx站点网页
echo "<h1>Error!,this is nginx</h1>" > /www/nginx/index.html
#用于测试反向代理负载均衡策略,web1
echo "<h1>THIS IS WEB111</h1>" > /www/http1/index.html
##用于测试反向代理负载均衡策略,web2
echo "<h1>THIS IS WEB222</h1>" > /www/http1/index.html

执行docker-compose

#在/root/new目录内
docker-compose -f docker-compose.yaml up -d

2.2.3 测试

在网页中打开该主机地址且端口为80,192.168.58.30:80

第一次打开
在这里插入图片描述

第二次打开
在这里插入图片描述

成功~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值