PHP笔记网

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2024-01-14 21:17:26  修改时间:2024-12-30 19:27:07  分类:Docker/K8s  编辑

对于初学docker的小白,一款好的可视化工具有助于快速掌握docker基本形态和概念。

一、Portainer简介

https://www.portainer.io/installation/ 是一款Docker可视化管理工具,可让您轻松构建和管理 Docker、Docker Swarm、Kubernetes 和 Azure ACI 中的容器。

Portainer 将管理容器的复杂性隐藏在易于使用的 UI 后面。通过消除使用 CLI、编写 YAML 或理解清单的需要,Portainer 使部署应用程序和解决问题变得如此简单,任何人都可以做到。

Portainer 比较适合团队使用,因为他有访问控制。

二、Portainer架构

Portainer 由两个元素组成:Portainer 服务器和 Portainer 代理。两者都在您现有的容器化基础设施上作为轻量级容器运行。Portainer 代理应该部署到集群中的每个节点,并配置为向 Portainer 服务器容器报告。 单个 Portainer 服务器将接受来自任意数量的 Portainer 代理的连接,从而提供从一个集中式界面管理多个集群的能力。为此,Portainer Server 容器需要数据持久性。Portainer 代理是无状态的,数据被传送回 Portainer 服务器容器。

 

三、Portainer安装

运行下面两条命令即可。这些命令会创建一个Portainer专用的卷,然后在8000和9000端口创建容器并运行。

1.基于本地容器的部署

如果使用Portainer管理本地Docker主机的话,需要绑定/var/run/docker.sock 【这里是个知识点,涉及docker之间通信的问题,以及docker 里运行docker】

注意:portainer/portainer 是 Portainer v1.24.x 的镜像名,现在已弃用;从 2022 年 1 月开始,Portainer 2.0 的所有新版本都将在 portainer/portainer-ce 中发布

#安装Portainer的Docker镜像
docker pull portainer/portainer-ce

#创建数据卷
#【注意】在docker数据目录下,如:/var/lib/docker/volumes/portainer_data
docker volume create portainer_data

#创建并运行容器
docker run  --name portainer -d -p 8000:8000 -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

小插曲:我的测试服务器,端口9000被php-fpm占用了,那就改用端口 8001 吧 !

docker run  --name portainer -d -p 8000:8000 -p 8001:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

在Docker中启动Portainer CE服务,解释:

docker run:运行容器的命令

  1. --name portainer:为容器指定一个名称
  2. -d:表示以守护进程模式运行容器
  3. -p 8000:8000:将本地主机的8000端口映射到容器内的8000端口,用于Portainer与Docker守护进程通信
  4. -p 9000:9000:将本地主机的9000端口映射到容器内的9000端口,用于访问Portainer Web界面
  5. --restart=always:设置容器自动重启
  6. -v /var/run/docker.sock:/var/run/docker.sock:将本地主机的Docker守护进程socket文件挂载到容器内,以便与Docker守护进程进行通信
  7. -v portainer_data:/data:将容器内的/data目录挂载到本地主机上的portainer_data卷中,用于保存Portainer的数据和配置信息
  8. portainer/portainer-ce:latest:指定要运行的Portainer CE镜像及其版本

然后在浏览器打开对应地址,就会发现成功运行了。第一次运行的时候需要设置账号,然后选择要管理的Docker主机。

2.连接到远程容器的部署

docker run --name portainer -d -p 9000:9000 --restart always -v portainer_data:/data portainer/portainer -H tcp://<REMOTE_HOST>:<REMOTE_PORT>

PS:-H 后面的remote是你想用portainert管理的docker。

四、添加新的容器集群环境

1. 本机连接方式

只能在创建 Portainer Server 容器时添加本地环境。部署 Portainer 后,您无法添加本地环境。

第一次登录会让选择管理的容器环境,这里可以选择本机,通过挂载/var/run/docker.sock 和docker 守护进程通信(如图所示)

之后就可以看到本机上运行的Docker容器了,点击它们还可以进行容器的管理。

左边的条目可以管理卷、创建容器、查看主机信息等等。基本上该有的功能都有了。

2. Remote连接方式

通过该方式,可以将远程机器添加到Portainer服务端,统一管理远程机器上的容器环境。

将 Docker Standalone 主机连接到 Portainer 时,可以使用两种方法。您可以通过 TCP 直接连接到 Docker API,也可以在 Docker Standalone 主机上安装 Portainer 代理并通过代理连接。

相关链接:https://docs.portainer.io/v/ce-2.11/admin/environments/add/docker

1)通过远程访问TCP:2375端口绑定环境

使用Remote要求被管理的主机开启docker守护线程监听端口 可以在/etc/docker/daemon.json中添加如下配置:

{
    "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
}

2)通过Portainer Agent方式管理docker环境

使用Agent需要在要监控的主机上创建一个Portainer Agent容器

相关链接: https://docs.portainer.io/v/ce-2.11/start/install/agent/docker/linux

#安装Portainer Agent的Docker镜像
docker pull portainer/agent

#常见Agent容器
docker run --name portainer_agent -d -p 9001:9001 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent:latest

3)通过Portainer Agent方式管理k8s集群环境

在k8s集群上执行以下命令

curl -L https://downloads.portainer.io/portainer-agent-ce211-k8s-nodeport.yaml -o portainer-agent-k8s.yaml; kubectl apply -f portainer-agent-k8s.yaml

在远程k8s集群上部署agent后,在Portainer server 上通过nodeport 或者 targetport 进行服务配置,完成k8s集群的连接配置。

 

 

参考:

  1. Docker-可视化管理工具总结-推荐使用Portainer
  2. Docker管理面板系列——Portainer(简单、美观、强大)
  3. Docker进阶:Docker轻量级可视化工具Portainer与容器监控3剑客CAdvisor+InfluxDB+Granfana
  4. Portainer堪称最优秀的容器化管理平台
  5. Portainer最全避坑指南