赞
踩
Manager端:server1
worker端:server2,server3
docker swarm init
:初始化集群docker swarm join --token SWMTKN-1-4eu8c3onspcfhxjhlmq71b4kyz7gt51qppoojed9s69t4l12lp-05lvm7a115xvnk4uy5gxgtb40 172.25.2.1:2377
docker node ls
以镜像 myapp:v1 为例,拉取镜像
所有节点拉取镜像,改名为myapp:v1
docker pull ikubernetes/myapp:v1
docker tag ikubernetes/myapp:v1 myapp:v1
创建服务:docker service create
docker service create --name my_cluster --replicas 2 -p 80:80 myapp:v1
–name:服务名称
–replicas:部署服务的节点个数
-p:映射端口
测试服务
docker pull dockersamples/visualizer
docker service create \
--name=viz \
--publish=8080:8080/tcp \ #端口不能冲突
--constraint=node.role==manager \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
dockersamples/visualizer
访问:http://172.25.2.1:8080/ 可以看到监控页面
增加服务调度数量,发现6个不相同
docker service scale my_cluster=6
停掉一个worker端,会从其他节点调度,重新开启这个,也不会再调度这个worker端,除非增加调度节点,会优先调度空闲worker
systemctl stop docker
systemctl start docker
docker service scale my_cluster=9
私有仓库端:server1
Manager端:server2
worker端:server3,server4
节点升级(将server2升级为Manager)
docker node promote server2
节点降级(将server1降级为worker)
docker node demote server1
删除worker(server1),先离开,后删除
docker swarm leave
:server1离开swarm集群(server1上)
docker node rm server1
:在manager端删除已经离开的节点(server2上)
开启server4 安装部署docker,将server4加入集群
docker swarm join --token SWMTKN-1-4eu8c3onspcfhxjhlmq71b4kyz7gt51qppoojed9s69t4l12lp-05lvm7a115xvnk4uy5gxgtb40 172.25.2.2:2377
仓库端server1:./install.sh --with-chartmuseum
server2、3、4:vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://reg.westos.org"]
}
server2拷贝证书:
scp -r certs.d/ server3:/etc/docker/
scp -r certs.d/ server4:/etc/docker/
server1、2、3、4解析:
重载server2、3、4的docker服务
systemctl reload docker.service
测试:
server1:
docker login reg.westos.org
用户:admin
密码:westos
docker push reg.westos.org/library/myapp:v1
server4:
docker login reg.westos.org
用户:admin
密码:westos
docker pull myapp:v1
server2:docker service create --name my_web --replicas 3 -p 80:80 myapp:v1
当1234都没有myapp镜像,0速度也很快!
docker pull ikubernetes/myapp:v2
docker tag ikubernetes/myapp:v2 reg.westos.org/library/myapp:v2
docker push reg.westos.org/library/myapp:v2
docker service update --image myapp:v2 --update-parallelism 2 --update-delay 5s my_web
docker stack与docker-compose的区别:
Docker stack不支持“build”指令,它是需要镜像是预先已经构建好的, 所以docker-compose更适合于开发场景;
Docker Compose是一个Python项目,使用Docker API规范来操作容器。
Docker Stack功能包含在Docker引擎中,是swarm mode的一部分。
Docker stack不支持基于第2版写的docker-compose.yml ,也就是version版本至少为3。然而Docker
Compose对版本为2和3的 文件仍然可以处理;
docker stack把docker compose的所有工作都做完了,因此docker stack将占主导地位。
上传镜像到私有仓库
1.myapp镜像(已上传)
2.监控镜像
docker tag dockersamples/visualizer:latest zy.westos.org/library/visualizer:latest
docker push zy.westos.org/library/visualizer:latest
编写Dockerfile
mkdir compose
:创建目录
vim compose/docker-compose.yml
version: "3.9" services: web: image: myapp:v1 networks: - mynet deploy: replicas: 2 #控制调度数量,直接修改文件,重新执行命令即可部署 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure visualizer: image: visualizer:latest ports: - "8080:8080" stop_grace_period: 1m30s volumes: - "/var/run/docker.sock:/var/run/docker.sock" deploy: placement: constraints: - "node.role==manager" networks: mynet:
删除原有服务
docker service rm viz
docker service rm my_web
部署服务
docker stack deploy -c compose/docker-compose.yml my_cluster
:部署
查看服务
docker stack ps my_cluster
:查看
docker stack services my_cluster
:查看
修改调度数量
1.直接修改Dockerfile中的replicas值:
replicas: 6
2.执行部署命令
docker stack deploy -c compose/docker-compose.yml my_cluster
mkdir portainer
cd portainer/
docker load -i portainer-agent.tar
docker load -i portainer.tar
docker tag portainer/agent:latest reg.westos.org/library/agent:latest
docker push reg.westos.org/library/agent:latest
vim portainer-agent-stack.yml
docker service rm my_cluster_web
docker service rm my_cluster_visualizer
docker stack deploy -c portainer-agent-stack.yml portainer
查看服务
docker stack ps portainer
docker service ls
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。