Portainer
是一款免费、开源的Docker
的图形化管理工具,其能够提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。
Portainer具有以下优点:
1、支持容器管理、镜像管理。
2、轻量级,消耗资源少。
3、基于docker api,安全性高,可指定docker api端口,支持TLS证书认证。
4、支持权限分配、集群。
如果是针对中大型企业规模的业务需求,则可能需要对其进行2次开发,以满足实际的维护需求。
以下为其安装部署相关操作:
查看Portainer相关镜像源,当然,我们也可以基于源码进行编译制作。
[administrator@JavaLangOutOfMemory luga ]% docker search portainer
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
portainer/portainer This Repo is now deprecated, use portainer/p… 2010
portainer/portainer-ce Portainer CE - Making Docker and Kubernetes … 284
portainer/agent An agent used to manage all the resources in… 87
portainer/templates App Templates for Portainer http://portainer… 20
lihaixin/portainer docker ui 15 [OK]
greenled/portainer-stack-utils Bash scripts to deploy/undeploy stacks in a … 6 [OK]
portainer/portainer-k8s-beta Portainer for Kubernetes BETA 4
portainer/golang-builder Utility to build Golang binaries. 4 [OK]
portainerci/portainer Portainer images automatically created via P… 4
hassioaddons/portainer 2
portainer/base Multi-stage build image to create the Portai… 2 [OK]
hassioaddons/portainer-armv7 1
softonic/portainer-endpoint Allows auto register all the swarm nodes in … 1 [OK]
thibaudlabat/portainer_32 Portainer built for 32bit Linux [ OUTDATED ]… 1
iconviet/portainer 0
helloysd/portainer 0
11384eb/portainer 0
hassioaddons/portainer-amd64 0
portainerci/agent Portainer agent images automatically created… 0
nenadilic84/portainer 0
rancher/portainer-agent 0
agiper/portainer 0
portainer/agent-k8s-beta Portainer for Kubernetes BETA (agent) 0
portainer/portainer-ee Portainer EE - Making Docker and Kubernetes … 0
johnvmt/portainer-ecr-credentials Periodically updates the credentials Portain… 0 [OK]
编写docker-compose.yaml文件,当然,也可以直接用Docker直接启动。
[administrator@JavaLangOutOfMemory luga ]% vi docker-compose-portainer.yaml
version: '3'
services:
portainer:
image: portainer/portainer:latest # 镜像名称
container_name: portainer # 容器名为'portainer'
restart: always # 指定容器退出后的重启策略为:始终重启
volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录
- "/var/run/docker.sock:/var/run/docker.sock"
- "./portainer/data:/data"
- "./portainer/Portainer-CN:/public" # 汉化
environment: # 设置环境变量,相当于docker run命令中的-e
TZ: Asia/Shanghai
LANG: en_US.UTF-8
ports: # 映射端口
- "9000:9000"
执行启动命令,然后进行镜像的拉取,容器的运行。
[administrator@JavaLangOutOfMemory luga ]% docker-compose -f docker-compose-portainer.yaml up -d
WARNING: Found orphan containers (luga_kafdrop_1, luga_kafka_1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Pulling portainer (portainer/portainer:latest)...
latest: Pulling from portainer/portainer
d1e017099d17: Pull complete
717377b83d5c: Pull complete
Digest: sha256:f8c2b0a9ca640edf508a8a0830cf1963a1e0d2fd9936a64104b3f658e120b868
Status: Downloaded newer image for portainer/portainer:latest
creating 3193e4c29d16_portainer ... done
[administrator@JavaLangOutOfMemory luga ]% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7131347b2e5c portainer/portainer:latest "/portainer" About a minute ago Up About a minute 0.0.0.0:9000->9000/tcp portainer
通过上述命令返回,发现已经成功启动,在此进行验证:
[administrator@JavaLangOutOfMemory luga ]% curl -i 192.168.1.12:9000
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: max-age=31536000
Content-Length: 23203
Content-Type: text/html; charset=utf-8
Last-Modified: Wed, 22 Jul 2020 22:47:36 GMT
X-Content-Type-Options: nosniff
X-Xss-Protection: 1; mode=block
Date: Sat, 16 Jan 2021 03:20:35 GMT
<!DOCTYPE html
><html lang="en" ng-app="portainer">
<head>
<meta charset="utf-8" />
<title>Portainer</title>
<meta name="description" content="" />
<meta name="author" content="Portainer.io" />
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- Fav and touch icons -->
<link rel="apple-touch-icon" sizes="180x180" href="dc4d092847be46242d8c013d1bc7c494.png" />
<link rel="icon" type="image/png" sizes="32x32" href="5ba13dcb526292ae707310a54e103cd1.png" />
<link rel="icon" type="image/png" sizes="16x16" href="f9508a64a1beb81be174e194573f7450.png" />
<link rel="mask-icon" href="07745d55b001c85826eedd479285cdbb.svg" color="#5bbad5" />
... ...
然后通过浏览器访问:http://192.168.1.12:9000
至此,Portainer.io已部署成功,接下来对其进行各种配置操作。此窗体主要显示连接的类型,此处为本地容器管理。平台支持远程、
首页包含Portainer管理平台所涉及的功能菜单,以及当前运行在此平台的容器、镜像、卷、网络总体以及资源概况。
容器列表显示当前平台所有容器的运行状态以及针对容器可执行的操作命令等。包含容器的启、停,新增,监控,日志查看,容器控制台等功能。
镜像窗体主要包含镜像详细查看、删除、导入、导出等功能。
除此之外,我们可以基于平台进行各种自定义的配置,以方便对资源集群的管理与维护。
其实,此平台挺不错的,针对一般的公司,容器规模不够完全庞大,无论是从技术的难易程度还是从可维护、可管理性角度来说,都是一个不错的选择,毕竟,可以对其进行定制开发。