一、背景
最近在应用 rancher2.5.5 部署 Redis 主从复制的时候,发现 rancher 会产生很多 iptables 的规定,这些规定导致咱们在部署了 rancher 的机器上无奈应用 Redis 的主从复制性能,因为我对 rancher 和 k8s 的理解也仅限于理解网络架构和应用,对底层并不深刻,短期内无奈解决这个网络抵触的问题;
因而我将 rancher 治理 docker 的模式换成应用 protainer 的形式,这个 portainer 相对来说更加轻量级,在搭建过程中也应用了几个小时学习,当初讲整个过程尽量还原给大家一些参考。
二、操作步骤
- 装置 Portiner
- 治理节点
- 部署容器
三、装置 Portiner
装置 Portiner 的形式有很多种,但我一贯喜爱应用最简略的办法来实现所须要做的事件,因而这里我将应用 docker 的形式来搭建它。
3.1 docker 部署
docker 部署的形式非常简单,只须要执行简略的运行容器命令即可,命令如下所示。
docker run -d \
-p 9000:9000 \
-p 8000:8000 \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /opt/docker/portainer-ce/data:/data \
--name portainer-ce portainer/portainer-ce
命令中映射了物理机的 8000 端口和 9000 端口到容器中的 8000 端口以及 9000 端口,同时将宿主机的 docker 通信文件 /var/run/docker.sock
也映射到了容器中,另外为了长久化部署,还将目录 /opt/docker/portainer-ce/data
映射到了容器的 /data
目录下,命令执行实现之后,返回后果信息如下图所示
在上图中能够看到曾经胜利运行了一个 docker 容器,接下来我须要验证服务是否失常运行,应用浏览器拜访 URLhttp://127.0.0.1:9000/
地址,后果如下所示
在上图中能够看到 Portainer 零碎曾经可能拜访,阐明胜利零碎装置胜利了。
3.2 节点初始化
当初我须要设置管理员的账号密码,这里我简略填写明码和确认明码之后,点击 Create user
按钮即可创立管理员账户。
管理员账户设置实现之后,须要进行初始化,如下图所示
在上图中有三个选项,我抉择应用 Portainer 治理本地 docker 程序,点击 Connect
按钮,即可实现初始化操作。
3.3 性能初探
实现初始化操作之后,就能够进入 Portainer 的工作界面,如下图所示
在上图找那个能够看到 Portainer 零碎中曾经有一个 local
的本地节点,咱们能够点击它进入节点的治理,如下图所示
在上图中能够看到 Portainer 零碎列出了 local
节点的 Stack、容器信息、镜像信息、磁盘信息、网络信息等等,这里我随便点击 Containers
区块,就能够看到容器列表,如下图所示
在上图中能够看到容器列表中存在两个容器,以及容器的运行状态,也能够对这些容器进行管制。
四、治理节点
当初曾经对本地 docker 能够进行管制,然而我并不满足于此,我须要对其余机器也进行管制。
4.1 开始增加节点
在 Portainer 零碎中,有一个 endpoints
的菜单,在这个菜单当中能够增加多个节点,如下图所示
在上图中能够看到,曾经有一个 local
的节点,在列表上方有一个 Add endpoint
按钮,点击按钮后就能够来到增加节点的详情页,如下图所示
在上图中能够看到有 5 个选项,这里我抉择最简略的一种形式,应用 Docker API
进行管制。
4.2 凋谢 API 管制
这种办法须要在节点的 docker 启动程序中增加参数,因而我须要先登录到节点服务器中去,ssh 登登录服务器的命令如下所示
ssh root@xxx.xxx.xxx.xxx
命令执行结束之后,返回如下图所示
在上图中能够看到曾经进入节点所在的服务器,接着须要编辑 docker 启动的配置文件,命令如下所示
vim /usr/lib/systemd/system/docker.service
命令执行之后,就能够在 vim 编辑界面批改配置,如下图所示
将开启近程拜访代码退出到 docker 的启动命令行中,代码如下所示
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
将代码复制到 /usr/bin/dockerd
程序前面,如下图所示
保留配置文件之后,须要重启 docker 服务,重启 docker 的命令如下所示
systemctl daemon-reload && systemctl restart docker
重启 docker 之后,一切正常的话就实现了
4.3 验证端口状态
查看 docker 的配置信息,命令如下所示
docker info
命令执行之后,返回的信息如下图所示
在上图中能够看到 docker 给了一个 warning 的正告提醒,告知我开启近程拜访会存在平安危险,这里临时不理睬它,不过呈现这个提醒阐明的确是开启了近程拜访的性能
另外能够查看通过凋谢端口,来验证开启是否胜利,命令如下所示
netstat -ntl
命令执行结束之后,会返回以后主机的端口凋谢状况,如下图所示
在上图中能够看到 2375
端口曾经被开启胜利,阐明节点自身开启 docker 是 OK 了;
然而 Portainer 通过 ip 拜访此节点的时候,要思考网络中的防火墙是否会屏蔽此端口,这里能够应用 nmap
工具来探测节点的端口是否能够被拜访,当初我回到 Portainer 零碎的命令终端,并应用 nmap 工具进行探测,命令如下所示
nmap -p 2375 xxx.xxx.xxx.xxx
命令执行之后,会返回 2375 是否处于开启的状况,执行后果如下图所示
在上图中能够看到节点的 2375
端口是开启的,并且能够进行连贯。
4.4 实现增加节点
接下来回到浏览器窗口,如下图所示
在上图所示的网页中,将节点的 IP 地址和端口通过 URL 模式填写进去,而后点击 Add endpodint
按钮,即可将节点减少进去,增加胜利会有相应的提醒,如下图所示
在上图中能够看到 Portainer 零碎提醒增加节点曾经胜利,并且节点列表能够看到此节点了。
五、部署容器
增加节点实现之后,我筹备在近程节点中部署我的容器;
5.1 部署单个容器
回到 Portainer 主页,在主页能够看到方才增加的节点信息,如下图所示
在上图中抉择方才增加的节点,而后进入容器菜单选项,能够看到此节点的容器列表,,如下图所示
在上图所示页面的列表上方有一个 Add container
按钮,点击此按钮后就会调整到增加容器详情页
在上图所示的页面中,须要将 docker 镜像地址填写进去,这里我随便选举了一个 nginx 镜像,并且将主机的 8888 端口映射到了容器的 80 端口,提交这些信息之后,Portainer 零碎会告知你容器运行是否胜利,如下图所示
在上图中能够看到容器曾经运行胜利,并且跳转到了容器列表中,接下来咱们能够拜访此节点对应的 8888 端口,来验证服务是否可用.
关上浏览器,而后在地址栏中填入 URLhttp://xxx.xxx.xxx.xxx:8888/
,拜访之后返回的后果如下图所示
在上图中能够看到 nginx
服务曾经胜利运行了;
5.2 部署 docker-compose
除了在容器列表页部署容器之外,Portainer 零碎还反对应用 docker-compose 的形式进行部署,在 Portainer 零碎中叫做stacks
, 在菜单栏中抉择此项,能够进入 docker-compose 服务的列表,如下图所示
在列表的上方有一个 Add stack
按钮,点击此按钮,就能够增加 docker-compose
服务,如下图所示
在上图所示的页面中,会要求我填写 docker-compose 的信息,这里我筹备了一个 Redis 服务的 docker-compose
的配置,配置代码如下所示
version: '3.5'
services:
redis:
image: "redis:latest"
container_name: redis_test
command: redis-server
ports:
- "16379:16379"
降配置填到页面的后,进行提交 Portainer 就会在对应节点部署方才的 docker-compose
服务,如下图所示
部署胜利之后,能够在 stacks 列表中看到方才部署的服务,你还能够点击列表中的服务名称,进入详情页进行查看和批改,如下图所示
在上图中能够看到此服务具体运行了什么容器,也能够终止或删除该容器。
本文对 Portainer 也是一个初探,更加细节的还须要各位手不释卷的进行摸索。
对于作者
作者:汤青松
微信:songboy8888
日期:2021-04-10