






















结构:主从集群机构,一个主节点leader,多个worker节点
好处:防止docker单点故障
目的:保障高可用,及应用的高并发
Docker-Swarm
要求:多个linux服务器版本要一致
开始搭建
1、搭建leader点:docker swarm init 创建完成后,会产生加入命令:docker swarm join --token SWMTKN-1-0nzhefc1l4joaexccqkbqbm5yds39ycxvt3fpkfcxagcgncbqd-4vlxwagonftqtcgjryj2sb2v3 192.168.40.168:2377
2、搭建worker节点:使用上边的加入命令
Docker node
操作Docker集群
Docker Service
在docker集群上部署项目
leader:分配任务和执行
worker:执行
开始部署:
1、所有节点都创建nginx镜像
下载nginx:
wget http://nginx.org/download/nginx-1.15.2.tar.gz
创建Dockerfile
FROM quay.io/centos/centos:stream9 RUN yum -y install gcc make pcre-devel zlib-devel tar zlib WORKDIR /nginx COPY nginx-1.15.2.tar.gz /nginx RUN tar -zxvf nginx-1.15.2.tar.gz RUN cd nginx-1.15.2 && ./configure && make && make install EXPOSE 80 COPY nginx.sh /nginx.sh RUN chmod 755 /nginx.sh CMD ["/nginx.sh"]
Nginx脚本文件nginx.sh
#!/bin/sh /usr/local/nginx/sbin/nginx /bin/bash -c 'while true; do sleep 200; done'
构建镜像:docker build -t xzpnginx .
使用docker service部署
docker service create --name xzpnginx --publish 8090:80 xzpngin
service 和 容器的映射关系
http://192.168.40.169:8090/ --->docker service leader 内网ip(10.0.0.4:80) ----负载均衡--> nginx容器 ------> nginx项目 --index.html
技术:overlay网络【集群】
Docker Stack 集群服务编排
应用:一次性的部署整个项目
1、基本使用
docker stack deploy -c docker-compose.yaml xzp_system_312
docker stack deploy -c docker-compose.yaml xzp_system_312
#查看
docker service ls
docker-compose.yaml
version: '3.7'
services:
nginx:
image: xzpnginx
ports:
- 8001:80
deploy:
mode:
replicated
replicas: 2
webapi:
image: dockertest
ports:
- 8002:80
deploy:
mode:
replicated
replicas: 2
2、service之间的通信
目标:使用nginx反向代理webapi
本质:使用service名称 访问 :nginx和webapi
1、方法一(太过麻烦状态容易丢失):修改容器内部配置
2、方法二:使用config挂载
version: '3.7'
services:
nginx:
image: xzpnginx
ports:
- 8001:80
deploy:
mode:
replicated
replicas: 2
configs:
- source: xzpnginx_config
target: /usr/local/nginx/conf/nginx.conf
webapi:
image: dockertest
ports:
- 8002:80
deploy:
mode:
replicated
replicas: 2
configs:
xzpnginx_config:
file: /root/docker-stack/nginx.conf
linux 对 nginx代理端口 不太稳定,需手动添加信任端口
sudo firewall-cmd --zone=public --add-port=8001/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8002/tcp --permanent
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
再不行,关闭防火墙
sudo systemctl stop firewalld
sudo systemctl start firewalld
Docker 运维
删除未使用的容器 docker container prune
删除指定镜像:1、 docker images 2、docker rmi a7d31c48bea0
创建镜像:docker build -t docker1 .
运行镜像:docker run -p5001:80 docker1 (每运行一次就会产生一个容器,通过docker ps -a查看)
查看当前集群:docker service ls 集群删除:
查看当前运行的容器:docker ps
删除容器:1、docker stop 3c11476e79d2 2、 docker container rm 3c11476e79d2
进入容器:docker exec -it 7573f63da9e7 /bin/bash 修改nignx.config的反向代理为service名称(webapi) 然后到(/usr/local/nginx/sbin 执行: ./nginx -s reload)重启网络
遗留问题
nginx反向代理webapi的时候,偶尔会访问不了,可能原因是:两台主机使用http://webapi:80的访问异常 或者未设置network
An error occurred. Sorry, the page you are looking for is currently unavailable. Please try again later. If you are the system administrator of this resource then you should check the error log for details. Faithfully yours, nginx.
五、 镜像仓库
1、私有仓库Harbor
含义:管理Docker中所有镜像,作用:提升镜像管理效率
1、安装Harbor ,前提独立主机
过程:下载和安装Docker、Docker-Compose,下载Harbor压缩包,然后安装install.sh >创建配置文件(修改Ip、端口、密码)> 创建 data文件夹 >继续安装install.sh > 完成:浏览器可访问端口即可
下载地址:wget https://github.com/goharbor/harbor/releases/download/v2.14.0/harbor-offline-installer-v2.14.0.tgz
教程:https://blog.csdn.net/weixin_45049740/article/details/157512203
创建配置文件:cp harbor.yml{.tmpl,}
配置文件调整:
hostname: 192.168.40.168调整为本机Ip或域名
账号密码:
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: Harbor12345
database:
password: root123使用Harbor:
上传镜像:
打开harbor网页 > 项目:新建 一个私有项目 > 进入项目复制推送命令:192.168.40.168:8050/harborzhrj/harborwebpi:latest修改本机Host的/etc/docker/daemon.json 》 添加
"insecure-registries":["192.168.40.168:8050"]
之后本机上执行如下命令
[root@localhost data]# systemctl daemon-reload
[root@localhost data]# systemctl restart docker
问题:重启了docker后 harbor网页版就登录不了了,原因: harbor默认的配置依赖项未加入到Docker-compose.ymal的volume中,所有harbor容器启动会失败 https://blog.51cto.com/u_16213317/11718648
下载镜像:
在harbor仓库中复制镜像地址:
docker pull 192.168.40.168:8050/harborzhrj/harborwebpi@sha256:d626de4fc674621ab16f5c4b8165520a4f7305de6edf0b67495570a7f68dc0a8 > 修改为
docker pull 192.168.40.168:8050/harborzhrj/harborwebpi:latest
运行镜像:
docker run --name harborwebapi -p8051:80 192.168.40.168:8050/harborzhrj/harborwebpi:latest
2、可视化portainer.io
下载:docker pull portainer/portainer-ce:latest
运行:
docker service create \ --name portainer \ --publish 9000:9000 \ --constraint 'node.role == manager' \ --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \ --mount type=volume,src=portainer_data,dst=/data \ portainer/portainer-ce:latest
打开网站:192.168.40.168:9000 >账号密码:admin admin1234567
1、配置私有harbor仓库:Registries > add
2、可通过container运行运行项目
3、构建镜像、运行Service等
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。