容器的编排

什么是容器的编排?
就是让容器有序的启动并在启动的过程加以控制

docker-compose -f bainpaiwenjian.yul up 如果编排文件为默认名称docker-compose.yul则无需加参数 -f 以及 编排文件即
docker-compose up 因为它会自动寻找 docker-compose.yul文件,一般都会加-d 放在后台启动

下面在/opt 目录下创建以下4个文件

docker-compose.yml haproxy.cfg index1.html index2.html

[root@linux-node1 opt]# cat index1.html
web1
[root@linux-node1 opt]# cat index2.html
web2

[root@linux-node1 opt]# 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

listen stats
bind 0.0.0.0:1080
mode http
stats enable
stats hide-version
stats uri /stats
stats auth admin:admin

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

[root@linux-node1 opt]# cat docker-compose.yml
web1:
image: nginx #定义镜像
expose: #容器内部开放的端口
- 80
volumes:
- /opt/index1.html:/usr/share/nginx/html/index.html #挂载 将/opt/index1.html 挂载给给容器

web2:
image: nginx
expose:
- 80
volumes:
- /opt/index2.html:/usr/share/nginx/html/index.html
haproxy:
image: haproxy
volumes:
- /opt/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg

links: #依赖,haproxy必须依赖于web1还有web2,如果web1 web2起不来,haproxy也不会工作
- web1
- web2
ports:
- "80:80"
- "7777:1080" 将haproxy中设置的1080端口映射到宿主机的7777端口

现在就可以运行编排工具了,生产环境要加上-d参数,使其在后台运行
node1 # docker-compose up
Starting 14ee8e7d111e_opt_web2_1 ... done
Starting 2ee1b18634d1_opt_web1_1 ... done
Recreating opt_haproxy_1 ... done
Attaching to 2ee1b18634d1_opt_web1_1, 14ee8e7d111e_opt_web2_1, opt_haproxy_1
14ee8e7d111e_opt_web2_1 | WARNING: no logs are available with the 'fluentd' log driver
2ee1b18634d1_opt_web1_1 | WARNING: no logs are available with the 'fluentd' log driver
haproxy_1 | WARNING: no logs are available with the 'fluentd' log driver

此时就可以访问192.168.56.11了,可以发现不停的刷新 可以看到haproxy开始起作用了,web1和web2会交替的显示,
然后再打开http://192.168.56.11:7777/stats 可以看到haproxy的状态,另外可以打开kibana查看日志

node1# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS

NAMES
844626e0de4d haproxy "/docker-entrypoint.…" 12 minutes ago Up 12 minutes

0.0.0.0:80->80/tcp, 0.0.0.0:7777->1080/tcp opt_haproxy_1
14ee8e7d111e nginx "nginx -g 'daemon of…" 2 hours ago Up 12 minutes 80/tcp

14ee8e7d111e_opt_web2_1
2ee1b18634d1 nginx "nginx -g 'daemon of…" 2 hours ago Up 12 minutes 80/tcp

2ee1b18634d1_opt_web1_1
此时我们停掉一台nginx主机
node1 # docker stop 2ee1b18634d1_opt_web1_1
再次刷新浏览器发现,只有web2了,说明haproxy工作没有问题,再进入haproxy的管理页面,发现其中的一台nginx已经挂了,
然后我们再把刚才停掉的主机启动

node1 # docker start 2ee1b18634d1_opt_web1_1
2ee1b18634d1_opt_web1_1
此时刷新浏览器又正常了

https://www.cnblogs.com/52fhy/p/5991344.html

记录 Docker 的学习过程 (单机编排)的更多相关文章

  1. 记录 Docker 的学习过程 (网络篇)

    打开2个会话,分别运行以下命令 # docker run -it -P --name nginx2 nginx #-P 端口随机映射 再打开一个会话查看 运行中的容器 # docker ps -aCO ...

  2. 记录 Docker 的学习过程 (自建私有仓库)

    私有仓库的创建 node1#wget http://harbor.orientsoft.cn/harbor-v1.4.0/harbor-offline-installer-v1.4.0.tgz nod ...

  3. 记录 Docker 的学习过程 (dockerfile自动制作镜像)

    自动制作镜像 通过编写dockerfile来自动创建镜像 #vi Dockerfile #编辑dockerfile文件,一定要以这个名字命名 #cat Dockerfile #导入哪个基础镜像FROM ...

  4. 记录 Docker 的学习过程 (数据挂载)

    docker 存储篇 容器中的存储是分层的, 在容器中,如果我们要创建一个文件,会在文件的最上层(可写层)创建 容器中内置的文件,默认来讲是只读的,只有自己创建的文件才是可写状态 比如说 /etc/p ...

  5. 记录 Docker 的学习过程 (日志篇)

    日志收集 elk 在node3上操作 docker pull sebp/elk:5610 node3# sysctl vm.max_map_count=262144 node3# docker run ...

  6. 记录 Docker 的学习过程 (网络篇之跨主机互通)

    下面从node3上操作node3# docker run -d -p 8500:8500 --name consul progrium/consul -server -bootstrap node3# ...

  7. 记录 Docker 的学习过程 (安装基础篇)

    docker 通过内核来实现 特点是效率高 1. centos7 三台(推荐2c 4g 最低 1c1g)2. 关闭防火墙 selinux3. 做好主机名解析,三台能互相ping通主机名host参考文件 ...

  8. 单机编排之Docker Compose

    当在宿主机启动较多的容器时候,如果都是手动操作会觉得比较麻烦而且容器出错,这个时候推荐使用docker 单机编排工具docker compose,Docker Compose 是docker容器的一种 ...

  9. Docker入门篇(三)之docker-compose单机编排

    1.docker-compose的简介 docker-compose作为dokcer的官方编排工具,它可以让用户通过编写一个简单的模板文件,快速地创建和管理基于docker容器的应用集群.实现对doc ...

随机推荐

  1. C# protobuf自动更新cs文件

    网上的教程大都是手动通过protoc编译, 比较难用 给当前工程添加"Google.Protobuf"和"Grpc.Tools"的引用(通过nuget), 然后 ...

  2. vuex学习详细解(主页目录

    学习vuex过程中,通过 vue-cli命令来配置和使用vuex笔记整理 vue-cli中配置vuex流程和注意事项 vuex目录配置 vuex的states.js vuex的getters.js v ...

  3. luogu P3384 【模板】重链剖分

    参考https://www.cnblogs.com/wushengyang/p/10808505.html,感谢 #include<iostream> #include<algori ...

  4. luogu P3834 【模板】可持久化线段树 1(主席树) 查询区间 [l, r] 内的第 k 小/大值

    ————————————————版权声明:本文为CSDN博主「ModestCoder_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https:// ...

  5. 一起学Vue之条件判断

    在Vue进行前端开发中,条件判断主要用于根据不同的条件来决定显示或隐藏,或者进行视图之间的切换,本文以一个简单的小例子简述v-if的常见用法,仅供学习分享使用,如有不足之处,还请指正. v-if 指令 ...

  6. Python之一、#!/usr/bin/python到底是什么意思

    引用https://www.cnblogs.com/furuihua/p/11213486.html 关于脚本第一行的 #!/usr/bin/python 的解释,相信很多不熟悉 Linux 系统的同 ...

  7. Android(安卓)全套开发资料视频+源码

    最近看到这么一张图,我觉得对于IT界的人来说应该很有感触. 也许这意味着今年是996的元年吧,但是那又怎么样?即便它虐我们千百遍,我们还是得微笑着面对它.So,今天分享一些整理的Android开发相关 ...

  8. cf1184E1

    题意简述:给出n个点m条边的无向图,你可以修改第一条边的权值,使得他可能会处于一棵最小生成树中,问你第一条的权值最大(不超过1e9)可以改为多少 题解:不去使用第一条边去跑最小生成树,然后在跑的过程中 ...

  9. 无人机通信协议MAVLink简介

    MAVLink MAVLink(Micro Air Vehicle Link,微型空中飞行器链路通讯协议)是无人飞行器与地面站(Ground Control Station ,GCS)之间通讯,以及无 ...

  10. 吴裕雄--天生自然 R数据分析:2014年美国人时间使用调查(ATUS)饮食与健康模块文件分析

    # libraries we'll need library(car) # for avplots library(tidyverse) # for general utility functions ...