记录 Docker 的学习过程 (单机编排)
容器的编排
什么是容器的编排?
就是让容器有序的启动并在启动的过程加以控制
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 的学习过程 (单机编排)的更多相关文章
- 记录 Docker 的学习过程 (网络篇)
打开2个会话,分别运行以下命令 # docker run -it -P --name nginx2 nginx #-P 端口随机映射 再打开一个会话查看 运行中的容器 # docker ps -aCO ...
- 记录 Docker 的学习过程 (自建私有仓库)
私有仓库的创建 node1#wget http://harbor.orientsoft.cn/harbor-v1.4.0/harbor-offline-installer-v1.4.0.tgz nod ...
- 记录 Docker 的学习过程 (dockerfile自动制作镜像)
自动制作镜像 通过编写dockerfile来自动创建镜像 #vi Dockerfile #编辑dockerfile文件,一定要以这个名字命名 #cat Dockerfile #导入哪个基础镜像FROM ...
- 记录 Docker 的学习过程 (数据挂载)
docker 存储篇 容器中的存储是分层的, 在容器中,如果我们要创建一个文件,会在文件的最上层(可写层)创建 容器中内置的文件,默认来讲是只读的,只有自己创建的文件才是可写状态 比如说 /etc/p ...
- 记录 Docker 的学习过程 (日志篇)
日志收集 elk 在node3上操作 docker pull sebp/elk:5610 node3# sysctl vm.max_map_count=262144 node3# docker run ...
- 记录 Docker 的学习过程 (网络篇之跨主机互通)
下面从node3上操作node3# docker run -d -p 8500:8500 --name consul progrium/consul -server -bootstrap node3# ...
- 记录 Docker 的学习过程 (安装基础篇)
docker 通过内核来实现 特点是效率高 1. centos7 三台(推荐2c 4g 最低 1c1g)2. 关闭防火墙 selinux3. 做好主机名解析,三台能互相ping通主机名host参考文件 ...
- 单机编排之Docker Compose
当在宿主机启动较多的容器时候,如果都是手动操作会觉得比较麻烦而且容器出错,这个时候推荐使用docker 单机编排工具docker compose,Docker Compose 是docker容器的一种 ...
- Docker入门篇(三)之docker-compose单机编排
1.docker-compose的简介 docker-compose作为dokcer的官方编排工具,它可以让用户通过编写一个简单的模板文件,快速地创建和管理基于docker容器的应用集群.实现对doc ...
随机推荐
- git基础教程(三)
3.github与git同步 3.1 配置公私钥 3.2 github上建立个人仓库 3.3 本地仓库同步到github #将本地仓库与远端仓库建立连接 #用简写名代替后面的远端连接 git remo ...
- Centos7内核版安装nginx环境问题及解决方法
错误信息:./configure: error: C compiler cc is not found解决方案:yum -y install gcc gcc-c++ autoconf automake ...
- CSGO控制台命令
转帖: 按下“~”即可开启 使用时先输入参数名 然后按下SPACE空出一格 再输入设定值即可 一般玩家进入游戏都只能用到Client(玩家用参数) 不过...如果你是开LAN GAME的人 就能进阶到 ...
- 【python基础语法】OS模块处理文件绝对路径,内置的异常类型、捕获、处理(第9天课堂笔记)
import os """ 通过文件的路径去打开文件 相对路径:相对当前的工作路径去定位文件位置 .:代表当前路径 ..:代表上一级路径(父级路径) 绝对路径:相对于电脑 ...
- 批量unzip一大堆压缩文件进行文件查询的办法.
1. 公司里面开发提交的补丁存在问题. 需要找出来 哪些文件有问题 最简单的办法, 想将一对文件 转移到一个目录里面去 然后创建一个 shell 脚本执行解压缩的操作 for i in `ls *.g ...
- 全文检索以及Lucene的应用
全文检索 一.什么是全文检索? 就是在检索数据,数据的分类: 在计算机当中,比如说存在磁盘的文本文档,HTML页面,Word文档等等...... 1.结构化数据 格式固定,长度固定,数据类型固定等等, ...
- 在本地搭建git服务器
GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用. 搭建Gi ...
- notepad中运行python, --kali安装后出现乱码
notepad中运行python cmd /k python "$(FULL_CURRENT_PATH)" & ECHO. & PAUSE & EXIT - ...
- Git分支的管理
(一)查看分支 1.查看本地分支:git branch 2.查看远程分支:git branch -r 3.查看所有分支:git branch -a (二)创建分支 1.创建本地分支:git branc ...
- Electron – 项目报错整理(打包~2): electron-packager踩坑