Docker swarm搭建总结
安装
1 | #查看可安装版本 |
docker-ce | 17.12.0~ce-0~ubuntu
安装gitlab出现Failed to find a load balance…
错误解决降级版本17.09.1解决
挂载卷Volume与Bind
Volume 数据卷
会把container的一个目录映射到一个数据卷,一个目录只能映射一个数据卷,不需要新建目录
graph LR A[containner目录] --> |映射| B[数据卷]
Bind 绑定本地目录
container的一个目录会加载本地目录,因此需要在本地提前新建该目录,不然启动会找不到目录
graph LR A[本地目录] --> |指向| B[containner目录]
方案选型与测试
方案有
Flannel
Open vSwitch
Weave
pipework
libnetwork
动态路由
启动顺序
[[vishnubob]/**wait-for-it
entrypoint vs cmd
entrypoint 必须执行服务话
cmd 命令型,可执行
总结:
- 如果用wait-for支持alpine,使用sh,wait-for-it使用bash
- dockercompose会覆盖dockerfile里面的cmd命令
- 通过挂载形式把脚本放进去执行,或者通过dockerfile 构建时构建进去
- 在容器内进行测试时,发现不能跟/actuator/health,会连接超时,
- 直接执行时,如果服务没启动也会超时,但是可以跟可以跟参数
-t
设置为0不超时,会一直等待
1 | #不能加/actuator/health,请求超时,不能用wait-for-it.sh ,不支持alpine ,经测试感觉怪,还使用 depends_on |
镜像升级
portainer升级命令
docker service update --image portainer/portainer:latest portainer_portainer
然后重启portainer服务
docker service upadte
命令参数详解
--force
强制更新重启服务,无论是否配置或镜像改变都更新--image <image:tag>
制定更新的镜像--with-registry-auth
私有仓库需要携带该参数,否则提示1
2
3image 192.168.1.230:14005/manage/test/ygl/app:latest could not be accessed on a registry to record
its digest. Each node will access 192.168.1.230:14005/manage/test/ygl/app:latest independently,
possibly leading to different nodes running different
1 | # 登陆仓库 |
节点升级
docker node update --role manager node
该命令只会更改角色,部分权限并没有立即更新,因此执行服务操作时有可能提示该错误Error response from daemon: rpc error: code = DeadlineExceeded desc = context deadline exceeded
立即生效更新节点为manger 执行docker node promote node