docker compose

微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例
docker compose是一种编排服务,基于python语言实现,是一个用于docker上定义并运行复杂应用的工具,可以让用户在集群中部署分布式应用。
用户可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。
解决了容器与容器之间如何管理编排的问题。

docker

stack官方可能就是用stack替代compose的,compose可以做构建,开发人员用的比较多点
compose重点是编排。这里注重编排文件就可以。
docker-compose.yml
服务(service)一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
项目(project)由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件定义。
在这里插入图片描述

server1
mkdir compose/
cd compose/
ls
vim docker-compose.yml

高可用负载均衡。haproxy keepalived+lvs
在这里插入图片描述

netstat -antlp|grep :80 #确定本机有没有80,如果没有问题的话就没问题

用自定义网络 web_net提供解析
把配置通过卷挂接到容器内,让它生效。

server2
docker images
docker run --rm -it nginx bash
ls
cd /etc/nginx/
ls -l
cd conf.d/
ls
 default.conf#怎么样使这个配置文件生效
cd ..
cat nginx.conf
cd conf.d/
cat default.conf #其中就是一些server的监听
cd ..
cat nginx.conf
将其中的内容复制下来

server1
mkdir proxy
cd prixy/
ls
\vi nginx.conf #先反向转义复制进去,否则会缩进的。
vim nginx.conf

在这里插入图片描述
访问域名www.westos.org直接定义到负载均衡器westos上
在这里插入图片描述

cd compose/
vim docker-compose.yml

在这里插入图片描述

在这里插入图片描述
使用一个web_net自定义网络,然后每个网络使用卷

server1
mkdir web1
mkdir web2
cd web1
echo web1 > index.html
cd ..
cd web2/
echo web2 > index.html
cd ..
ls
docker-compose up
刚才的语法有问题,需要在最后一行web-net加冒号
宿主机
cd /etc/hosts/
ping www.westos.org #访问域名的时候,要访问的通
server1
docker-compose ps
docker-compose start
docker-compose ps
curl 172.25.0.1
curl www.westos.org

检测

server1
docker ps
docker stop compose-web1-1
docker ps
宿主机
curl www.westos.org只能显示web2
server1
docker-compose start 会将没有启动的,自动启动起来
tree . #会显示文件的结构
server1
docker-compose down #删除之前做的实验
docker ps -a
cd 
cd harbor/
./install.sh --with-chartmuseum #这个脚本可以自动拉集群
docker-compose ps
server2
cd #新建docker集群,只需要两条命令
docker swarm init #初始化
docker node ls
server3

在这里插入图片描述

server2
docker node ls

需要建一个内有仓库,外部仓库比较慢,会影响到部署效率

server1
cd /etc/docker/
ls
cat daemon.json
ls

server2
cd /etc/docker/
ls
scp -r daemon.json certs.d/ server3:/etc/docker/
scp -r daemon.json certs.d/ server4:/etc/docker/
server3/4
systemctl daemon-reload
systemctl reload docker
docker info
vim /etc/hosts

在这里插入图片描述
最后一行删除

server4
docker images
docker pull busybox

server3
cd /etc/sysctl.d/
ls
scp docker.conf server4:/etc/sysctl.d/
server4
systemctl --system
docker info
docker pull busybox #这里若出现仓库问题

server1
cd harbor/
docker-compose down
ls
./prepare #把这个脚本清理一下
ls
df -h /
去掉扫描功能不让磁盘增加过快。
vim docker-compose.yml
rm -f docker-compose.yml #删除这个文件
ls
docker volume ls
docker volume prune
docker volume ls
ls
cd /data
ls
cp -r certs/ ~#证书不能被清理
rm -fr *
ls
cp -r ~/certs/ . #将之前的证书拷过来
ls
cd
cd harbor/
ls
./install.sh --with-chartmuseum
docker push reg.westos.org/library/busybox:latest
docker push reg.westos.org/library/nginx:latest
server4
docker pull reg.westos.org/library/busybox#也可以不必打全键,docker pull busybox
#删除镜像 docker rmi reg.westos.org/library/busybox
cd
docker images
server3
docker pull busybox
server2
docker pull busybox
docker node ls #检测节点状态
docker service ls
在集群当中部署服务,以下是命令行方式
docker service create --name webservice -p 80:80 --replicas 3 nginx
docker service ls
server3
docker ps

server1做仓库,任何访问节点都可以做集群。

宿主机
curl 172.25.0.2
server2
docker service rm webservice
docker service ls
server1
docker search myapp
docker search ikubernetes
docker pull ikubernetes/myapp:v1
docker pull ikubernetes/myapp:v2
docker tag ikubernetes/myapp:v1 reg.westos.org/library/myapp:v1 #把镜像全扔到仓库中
docker tag ikubernetes/myapp:v2 reg.westos.org/library/myapp:v2 #让所有集群下载镜像时全到仓库中
docker push reg.westos.org/library/myapp:v1
docker push reg.westos.org/library/myapp:v2
server2
docker service create --name webservice -p 80:80 --replicas 3 myapp:v1
宿主机
curl 172.25.0.2/hostname.html #访问集群中任何一个节点都是负载均衡的

并且副本数可以随时增加或减少

server2
docker service scale webservice=6
docker service ls
docker service ps webservice
不要的时候就可以把webservice回收掉
docker service rm webservice
docker service ps webservice

问题:对于集群配置目录

宿主机
cd docker/
ls
cd supervisor/
cd ..
cd pub/images/
ls
ll visualizer.tar#对于docker集群配置图形化

代码在github.com,搜索visualizer.tar

server1
cd
docker node ls#这个指令只能在管理端上运行,其他节点不可以
宿主机
docker pull dockersamples/visualizer #先把镜像拉下来,再长传到私有仓库
docker tag dockersamples/visualizer:latest reg.westos.org/library/visualizer:latest
docker push reg.westos.org/library/visualizer:latest

在这里插入图片描述

server2
docker service ls
docker service create --name webservice -p 80:80 --replicas 3 myapp:v1
docker service scale webservice=20

在网页上搜172.25.0.2,出现以下则为成功
在这里插入图片描述
在这里插入图片描述
viz是监控

server2
docker service updata --image myapp:v2 --updata-parallelism 2 --updata-delay 2s webservice 
#--updata-parallelism 每次更新多少个。--updata-delay每隔多长时间更新。
宿主机
curl 172.25.0.2
server2
docker service rollback webservice #回滚,回到之前的镜像
server3假设docker引擎出问题了,若3出问题了,便会均分到其他两个节点上
systemctl stop docker
docker ps
恢复的话
systemctl start docker
docker ps
isosize

写成文件的形式

server2
docker service rm webservice
docker service rm viz
docker service ls
cd
vim docker-compose.yml

在这里插入图片描述
在这里插入图片描述

server3
docker network ls #网络,如果不定义网络,就用节点自带的
server2
docker stack deploy -c docker-compose.yml mycluster #在集群当中,用docker stack把docker-compose替换掉了
docker service ls
docker service ps mycluster_webservice
docker service ps mycluster_visualizer
当不用的时候
docker stack rm mycluster
docker node ls
docker node promote server3升级
#docker node demote server2降级

在除开leader所有节点上执行离开集群
docker swarm leave
在leader上
docker node rm server2
docker node ls
在管理端,整个集群就废了
docker swarm leave --force

体量越大,调度越慢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值