目录
3、配置集群manager节点 (在manger服务器执行)
1、服务器实体
服务器 | 角色(主机名称) | 需要安装插件 |
192.168.1.213 | manager(主节点) | Portainer ,dokcer, harbor ,dokcer-compose |
192.168.1.198 | worker1 (节点1) | dokcer |
192.168.1.201 | worker2 (节点2) | dokcer |
192.168.1.202 | worker2 (节点3) | dokcer |
2、安装docker
操作系统:CentOS
docker 版本: docker-20.10.11
解压:
tar -xvf docker-20.10.11.tgz
将解压文件复制到 /usr/bin 目录
cp docker/* /usr/bin/
docker 注册成系统服务
vim /etc/systemd/system/docker.service
docker.service 文件
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
这里特别注意: 这里指定swarm 端口
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
配置文件赋权
chmod +x /etc/systemd/system/docker.service
刷新配置文件
systemctl daemon-reload
启动
systemctl start docker
开机启动
systemctl enable docker.service
查看是否启动成功
systemctl status docker
这里 docker就安装完毕。
3、dokcer swarm 集群
1、设置主机名称
设置: manager 主机名称 (这里便于 Portainer 找到节点)
hostnamectl set-hostname manager
设置: woker1 节点1
hostnamectl set-hostname worker1
设置: woker2 节点2
hostnamectl set-hostname worker2
设置: woker3 节点3
hostnamectl set-hostname worker3
2、设置hosts
设置 hosts: 进入 /etc/hosts 编码hosts (备注: 所有主节点,子节点都要配置)
192.168.1.213 manager
192.168.1.198 worker1
192.168.1.201 worker2
192.168.1.202 worker3
3、配置集群manager节点 (在manger服务器执行)
docker swarm init --advertise-addr 192.168.1.213
如果出现 Error response from daemon: --live-restore daemon configuration is incompatible with swarm mode 错误 修改 /etc/sysconfig/docker 在参数中添加–live-restore=false
--live-restore=false
执行之后会有 输出 token 特别注意将此token 拷贝备用
如果忘记了在manger主机 执行一下代码也可以获取 token
docker swarm join-token manager
4、配置worker 节点
在所有子节点服务器执行
docker swarm join --token SWMTKN-1-3ztp0edq764nxcgvcl3f424wtlblxukn0lrrdzsr6h6w7eangl-0xhpzfxrekczxxcl9h2eadili 192.168.1.213:2377
在manager节点查看所有加入的子节点
docker node ls
这样warm集群就配置好了
5、特别注意
端口不通,请关闭防火墙或者开放所有使用端口。开端端口需要关闭防火墙 然后重启才生效。
安装完毕建议重启 docker
####开放端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent
### 关闭防火墙
systemctl stop firewalld
#### 重启防火墙
systemctl start firewalld
4、部署Portainer
部署portainer在主节点(manager)
1、拉取镜像
docker pull portainer/portainer
2、 启动服务
docker run -d -p 9000:9000 -v /root/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name dev-portainer portainer/portainer
3、访问 9000端口打开页面 设计账户账户密码 进入界面
查看swarm节点
将docker 节点加入
加入之后效果
点击Home 查看docker 容器 这样就可以愉快的管理docke容器了。
注意 Portainer 也支持集群 需要的小伙伴可以自己试一试。
至此 portainer 整合 docker swarm 集群完毕。接下来就是 集成harbor 统计镜像管理。
5、harbor安装
1、docker配置
cd /etc/docker
目录 找到 daemon.json文件(没有就创建)
vi daemon.json
添加 子节点的ip 加入认证 (manger)
{
"insecure-registries":["192.168.1.213","192.168.1.198","192.168.1.201","192.168.1.202"]
}
注意: 这里主节点(manager)需要将 所有的子节点ip 加入。
子节点服务(worker) 只需要将主节点的加入(如下图)
添加城管之后 刷新 重启docker
systemctl daemon-reload
systemctl restart docker
重启docker 之后 Portainer 可能没有启动 需要自己重启下Portainer容器
2、harbor 安装 (manager)
自己去官网下载,安装之前 确保 Docker-compose 已安装
导入 /usr/local/harbor/harbor (可以自己定义目录) 解压
到解压目录
进入 harbor.yml 修改 地址为本主机地址:
默认端口 这里设置80(可自定义) 配置admin 登录 密码
当前目录执行 初始化
./install.sh
然后访问manager 80端口 这样 harbor 就按照好了。
3、harbor 创建并推送到镜像库
新建项目 cg 设置为公开(这个自定义)
进入 manager 随便创建一个镜像(这里以jar 为例子)
创建一个 sys-user 的镜像 版本 v0.0.1
docker build -t sys-user:v0.0.1 .
备注 这里如果 需要登录 harbor 输入账户密码
docker login 192.168.1.213
新建tag 镜像:版本 IP(manger的) 项目 映射的之后的镜像
docker tag sys-user:v0.0.1 192.168.1.213/cg/sys-user:v0.0.1
推送到harbor
docker push 192.168.1.213/cg/sys-user:v0.0.1
查看推送的镜像
这里 推送到harbor完毕
4、 子节点使用harbor镜像
登录:
docker login 192.168.1.213
拉取镜像 点击这个命令 复制拉取命令
如下 子节点执行:
docker pull 192.168.1.213/cg/sys-user@sha256:0aa5d26d9c912cfc0513186d60177775d741ef06f85968501fa7867eb15d6e1d
查看镜像
docker images 查看镜像
接下来我们就可以愉快的在子节点 使用镜像了, 到此结束。