Docker Compose容器编排

一、Docker Compose概念

1.介绍

  • Docker Compose的前身是Fig,它是一个定义及运行多个Docker容器的工具
  • 使用Docker Compose不再需要使用shell脚本来启动容器
  • Docker Compose非常适合组合使用多个容器进行开发的场景

2.YAML

  • YAML是一种标记语言很直观的数据序列化格式
  • 文件格式及编写注意事项
    1.不支持制表符tab健缩进
    2.通常开头缩进2个空格
    3.字符后缩进1个空格,如冒号、逗号、横杆
    4.用#号注释
    5.如果包含特殊字符用单引号引起来
    6.布尔值必须用引号括起来

3.docker compose配置常用字段

字段描述
build dockerfile context指定Dockerfile文件名构建镜像上下文路径
image指定镜像
command执行命令,覆盖默认命令
container name指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale
deploy指定部署和运行服务相关配置,只能在Swarm模式使用
environment添加环境变量
networks加入网络
ports暴露容器端口,与-p相同,但端口不能低于60
volumes挂载宿主机路径或命令卷
restart重启策略,默认no,always,no-failure,unless-stoped
hostname容器主机名

4.docker compose常用命令

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

5.compose命令说明

基本的使用格式

docker-compose [options] [COMMAND] [ARGS...]

docker-compose选项

  • –verbose输出更多调试信息
  • –version打印版本并退出
  • -f,–file FILE使用特定的compose模板文件 ,默认为docker-compose.yml
  • -p,–project-name NAME指定项目名称,默认使用目录名称

二、compose部署

  • 环境部署所有主机安装docker环境(内容为docker基础)
//下载compose(上传docker-compose)
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
cp -p docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose

[root@consul compose_nginx]# tree ./
./
├── docker-compose.yml        //创建模板脚本
├── nginx
│?? ├── Dockerfile        //创建容器脚本
│?? ├── nginx-1.12.0.tar.gz    //复制源码包
│?? └── run.sh           //启动服务脚本
└── wwwroot
    └── index.html        //站点

vim /root/compose_nginx/docker-compose.yml

version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1216:80
      - 1217:443
    networks:
      - cluster
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:
  cluster:
  
[root@consul compose_nginx]# docker-compose -f docker-compose.yml up -d

三、docker-compose实战

1.配置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
  • 提高docker-compose权限权限
chmod +x /usr/local/bin/docker-compose

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

1.创建工作目录

mkdir -p /root/new/nginx

2.nginx目录下准备的文件

[]ls
Dockerfile nginx-1.12.2.tar.gz nginx.conf run.sh

3.编写Dcokerfile,用于搭建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"]

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

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

5.编写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;
                    }
}

6.new目录内

[]ls
docker-compose.yaml nginx

7.编写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

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

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

9.执行docker-compose

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值