Docker学习之旅(二)
Docker学习之旅(二)
好好好,回来更Docker了
Docker确实很重要,目前的主流平台一般都采用容器化技术,来实现不同的功能或页面
前情提要
为什么爬虫(一)中说差点坏事呢?
就是因为当时不清楚Docker Swarm 和 Docker compose 的不同作用
当时是由于博主想尝试一下feapder的内置管理平台,所以跟着feapder的教程一点点去部署docker服务
翻了很多记录,还是找不到当时的报错了emmmmmm,早知道当时记录一下了,好像是啥node来着
不过借助GPT反推回去还是可以的
总之就是,我在单个服务器上,同时使用了Docker compose 和 Docker Swarm 导致容器部署的时候有些问题
值得注意的是:
- Docker compose 旨在实现同时部署多个微服务(容器),或者一个命令启动整个应用,还是和上一篇说的一样,主要是打包
- Docker Swarm 可以实现在分布式系统(多台服务器)的基础上,创建Docker容器集群,并进行相应的编排和管理
其实两者一般是不会冲突的,这就相当于一个是打包,一个是装箱,如果有多份水果捞,每份都可以打包(多个),打包结束后可以将多份同时装箱
这里的错误大概率是我装箱用了你打包的东西,导致两边都出现问题
(没看懂水果捞这个梗的可以看一下Docker学习之旅(一))
(ꈍ﹃ ꈍ)
气氛都到这了,不学一下Docker Swarm 说不过去吧
(*˘︶˘ *)
Docker Swarm
基础概念
-
Task
Swarm 中的最小的调度单位,目前一个Task就是一个容器。
-
Service
Service一般是由一组相同的Task组成,Service是这组Task要完成的任务的一个抽象。按照其包含的Task的布署方式分为两种:
- replicated services 按照一定规则在各个工作节点上运行指定个数的任务。
- global services 每个工作节点上运行一个任务。
-
Node
节点分为两种,一种是负责管理的Manager另一种是具体干活的Worker。
其中的Manager中有一个leader节点,是通过RAFT协议生成的(选举)
优点
(这就是贫民博主感受不到的了)
- 内置容器编排: Docker Swarm 是 Docker 官方提供的容器编排工具,与 Docker 引擎紧密集成。这意味着您可以使用熟悉的 Docker 命令和工作流程来管理分布式应用程序,无需额外的学习成本。
- 内置高可用性: Docker Swarm 提供领导者选举、日志复制和状态同步等机制,以确保集群的高可用性。它能够自动处理节点故障和网络分区等情况,从而保持应用程序的可用性。
- 动态扩展: 通过 Docker Swarm,您可以轻松地扩展服务的副本数,以适应负载变化。Swarm 会自动管理容器的分布和负载均衡,无需手动干预。
- 动态更新: Docker Swarm 支持动态更新服务,使您可以逐步引入新版本的应用程序,同时监控其稳定性。这有助于降低风险并实现持续交付。
- 跨主机通信: Docker Swarm 提供内置的 Overlay 网络,允许容器在不同的主机之间通信,从而实现分布式应用程序的跨主机部署
示例
由于博主缺乏财力,因此只能使用单个服务器进行仿真
其实各位可以用VMware或者virtualbox安装虚拟机进行模拟(博主比较懒
( ˘ω˘ )
环境:Ubuntu 22.04
# 初始化
docker swarm init
#建项
docker service create --replicas 3 --name nginx-service -p 80:80 nginx
# 扩容
docker service scale nginx-service=5
#停止服务
docker service rm $ID
# 移除节点
docker swarm leave --force
可以通过图片中的命令
docker swarm join --token SWMTKN-1-4********6w7qd06y1e33yrgko64sk 192.168.99.**:50
来实现工作节点的添加
同时可以通过docker info
查看Swarm参数来确定是否配置成功
今天先暂时这样,博主今天工作有点累
下期docker更新k8s,和docker 镜像仓库的相关内容
(唉,又出现了,用完docker swarm后,原来docker-compose配好的服务和容器都会在线但不能继续工作)
四处搜了点资料,感觉好像是网络桥接配置受影响还是资源受影响来着
使用docker-compose down + docker-compose up -d 可以重新上线对应服务
重新了解了一下nginx反向代理绑定端口的问题,修改一下GPT那篇博客的相关内容