docker swarm 集群部署.netcore项目
docker swarm 集群部署.netcore项目
使用docker swarm搭建集群,成功部署.net core 3.1项目。
(本文安装的是docker 20.10.2)
安装docker
- 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 - 设置docker源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - 查看dockers版本
yum list docker-ce --showduplicates | sort -r - 安装docker
yum install docker-ce-20.10.2 docker-ce-cli-20.10.2 containerd.io -y - 启动docker并设置开机启动
systemctl start docker && systemctl enable docker - 添加阿里云加速镜像
阿里云加速镜像地址可登录阿里云–>容器镜像服务–>镜像中心中获得
tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://v4avll60.mirror.aliyuncs.com”]
}
EOF - 补充bash包
yum install bash*
source /usr/share/bash-completion/bash_completion - docker加载ip_vs模块
modprobe ip_vs
service docker restart 重启docker
配置docker swarm集群
- 修改docker的启动参数(两个节点均操作)
vi /lib/systemd/system/docker.service
加入以下参数
ExecReload=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
加载docker配置信息
systemctl daemon-reload
重启docker
systemctl restart docker - 创建Swarm集群
Pull swarm的镜像(两个节点都做)
docker pull swarm
初始化集群
docker swarm init - 把节点加入集群(只需要在节点上运行)
第二部初始化成功后控制台会输出以下语句
docker swarm join --token SWMTKN-1-2unv21kzou0yt24e6xj4cm6e71bbjqlszy6an40elgnsy5sp8g-4a3ij83tarcwy9kkeg9srevg6 : - 查看集群节点
docker node list
docker swarm可视化面板Portainer 部署
- 搜索protainer镜像和下载镜像
docker search portainer
docker pull portainer/portainer - **单机版运行Portainer **
如果仅有一个docker宿主机,则可使用单机版运行,运行以下命令就可以启动了:
docker run -d -p 9000:9000
–restart=always
-v /var/run/docker.sock:/var/run/docker.sock
–name prtainer-test
portainer/portainer
该语句用宿主机9000端口关联容器中的9000端口,并给容器起名为portainer-test。启动成功后,使用该机器IP:PORT即可访问Portainer
打开防火墙
firewall-cmd --zone=public --add-port=9000/tcp --permanent # 开放9000端口
firewall-cmd --reload 重启防火墙
firewall-cmd --zone=public --list-ports #查看防火墙所有开放的端口
创建overlay跨主机网络
创建docker network
docker network create -d overlay --attachable --subnet=172.19.0.0/28 nginxnet
强调文本 强调文本
部署.net core项目
- 创建服务
创建的服务手动添加到之前创建的网络中–network
本文pod的数据为3 --replicas 3
docker service create --replicas 3 --network nginxnet --name testapi(服务名) testapi(项目镜像) - 使用nginx代理
拉取nginx镜像
docker pull nginx
创建配置文件nginx.conf
server {
listen 80 ;
listen [::]:80;
listen 443 ssl ;
listen [::]:443 ssl ;
server_name 外网访问的域名;
ssl_certificate 本文用到https访问域名证书;
ssl_certificate_key 域名证书密钥;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://testapi(之前创建的服务名);
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
}
} - 发布nginx
docker run -itd -p 80:80 -p 443:443 --network nginxnet -vpwd
/nginx.conf:/etc/nginx/conf.d/defaul t.conf -vpwd
/cert:/etc/nginx/cert --name nginxksyapi nginx
到这里项目就发布完成,可以使用域名访问了。