portainer 集群环境_Portainer实战

portainer 集群环境_Portainer实战Portainer 是一个轻量级的 Docker 环境管理 UI 可以管理 dockerhost 和 dockerswarm 我主要看中了能管理 swarm 这个 毕竟市面上能管理 swarm 的平台不多 之所以说是轻量级的 是因为部署只有一个 container 也可以使用二进制程序直接部署 不像 rancher 的部署 部署了一大堆 container 而且 portainer 是跨平台的 windows 和 linux 都可

Portainer是一个轻量级的Docker环境管理UI,可以管理docker host和docker swarm(我主要看中了能管理swarm这个,毕竟市面上能管理swarm的平台不多)。之所以说是轻量级的,是因为部署只有一个container,也可以使用二进制程序直接部署,不像rancher的部署,部署了一大堆container,而且portainer是跨平台的,windows和linux都可以部署,废话不多说,直接开干….

环境

ubuntu16.04-1

swarm manager

portainer

ubuntu16.04-2

swarm works

portainer agent

ubuntu16.04-3

swarm works

portainer agent

ps:环境还是之前文章的swarm集群环境

部署

独立容器启动

docker run -d -p 9000:9000 –name portainer –restart always -v /var/run/docker.sock:/var/run/docker.sock -v /path/on/host/data:/data portainer/portainer

ps:portainer的数据存储在容器内部的/data目录,这样容器重启的时候数据会丢失,所以要确保数据持久化

docker run -d -p 9000:9000 –name portainer –restart always -v portainer_data:/data portainer/portainer -H tcp://:

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

stack方式启动

下载启动stack文件

curl -L https://portainer.io/download/portainer-agent-stack.yml -o portainer-agent-stack.yml

以stack方式启动

docker stack deploy –compose-file=portainer-agent-stack.yml portainer

swarm service启动

docker service create \

–name portainer \

–publish 9000:9000 \

–replicas=1 \

–constraint ‘node.role == manager’ \

–mount type=bind,src=//path/on/host/data,dst=/data \

portainer/portainer

二进制启动

wget https://github.com/portainer/portainer/releases/download/1.19.2/portainer-1.19.2-linux-amd64.tar.gz

tar xvpfz portainer-1.19.2-linux-amd64.tar.gz

cd /opt/portainer

./portainer –template-file “${PWD}/templates.json”

ps:模板文件的内容下面会详细解释

[

{

“type”: 1,

“title”: “Registry”,

“description”: “Docker image registry”,

“categories”: [“docker”],

“platform”: “linux”,

“logo”: “https://portainer.io/images/logos/registry.png”,

“image”: “registry:latest”,

“ports”: [

“5000/tcp”

],

“volumes”: [{ “container”: “/var/lib/registry”}]

},

]

portainer 集群环境_Portainer实战

验证

访问

http://172.31.68.241:9000/

登录

portainer 集群环境_Portainer实战

查看

portainer 集群环境_Portainer实战

容器信息

portainer 集群环境_Portainer实战

配置

之前说过portainer可以以二进制程序直接部署,也可以在启动容器的时候直接在CLI设置参数,来修改portainer的默认行为,可使用的参数主要有如下:

–help 帮助

–version 查看版本信息

-p, –bind=”:9000″ 指定portainer监听的地址和端口

-a, –assets=”./” Path to the assets

-d, –data=”/data” 指定data数据目录

-H, –host=HOST Endpoint URL

–external-endpoints=EXTERNAL-ENDPOINTS

定义外部的endpoints

–no-auth 禁止portainer的认证

–no-analytics Disable Analytics in app

–tlsverify TLS support

–tlsskipverify Disable TLS server verification

–tlscacert=”/certs/ca.pem”

Path to the CA

–tlscert=”/certs/cert.pem”

Path to the TLS certificate file

–tlskey=”/certs/key.pem” Path to the TLS key

–ssl Secure Portainer instance using SSL

–sslcert=”/certs/portainer.crt”

Path to the SSL certificate used to secure the Portainer instance

–sslkey=”/certs/portainer.key”

Path to the SSL key used to secure the Portainer instance

–sync-interval=”60s” Duration between each synchronization via the external endpoints source

–snapshot Start a background job to create endpoint snapshots

–snapshot-interval=”5m” Duration between each endpoint snapshot job

–admin-password=ADMIN-PASSWORD

指定admin的password,是加密过后的,可以由htpasswd产生

–admin-password-file=ADMIN-PASSWORD-FILE

如果怕泄密,可以把密码写在一个文件中,这个里面是原始密码

-l, –hide-label=HIDE-LABEL …

隐藏具有某些标签的容器,-l可以多次使用

–logo=LOGO 使用你自己的logo

-t, –templates=TEMPLATES 或者直接指定一个url

–template-file=”/templates.json”

使用你自己的模板文件,默认的莫办文件位置在/templates.json

ps:关于admin密码,有的同学觉得cli和文件都不保险,则可以把密码设置在docker的secret中,如下:

$ echo -n mypassword | docker secret create portainer-pass –

$ docker service create \

–name portainer \

–secret portainer-pass \

–publish 9000:9000 \

–replicas=1 \

–constraint ‘node.role == manager’ \

–mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \

portainer/portainer \

–admin-password-file ‘/run/secrets/portainer-pass’ \

-H unix:///var/run/docker.sock

模板

portainer中可以自定义一些模板,然后在portainer中创建容器的时候使用这些模块快速的创建,模板是json格式的,包含一些必选项和可选项。

Container template definition format

样例

{

“type”: 1,

“title”: “Nginx”,

“description”: “High performance web server”,

“logo”: “https://cloudinovasi.id/assets/img/logos/nginx.png”,

“image”: “nginx:latest”,

“ports”: [

“8080:80/tcp”,

“443/tcp”

]

}

解释

type必选项,1表示container,2表示swarm stack,3表示compose stack

title 必选项

description必选项

image必选项,该应用使用的docker镜像

administrator_only可选项,是否只有管理员可用模板

name可选项,该模板在管理界面中显示的名称

log可选项,自定义的logo

registry可选项,docker镜像的仓库,默认是Dockerhub

command可选项,容器里面运行的命令,如果没有指定,则默认运行dockerfile的command

network可选项,模板使用的网络

volumes可选项,模板使用的volume

ports 可选项,模板exposed的端口

labels 可选项,模板上定义的labels

privileged 可选项,容器是否能在超级权限启动

interactive 可选项,容器启动时是否是交互模式,即添加-i -t

restart_policy 可选项,容器的重启策略

hostname 可选项,容器的主机名

note 可选项,关于模板的信息

platform 可选项,支持的平台,一般是linux或者windows

categories 可选项,模板的类别,可以在UI上通过category来过滤

Stack template definition format

样例

{

“type”: 2,

“title”: “CockroachDB”,

“description”: “CockroachDB cluster”,

“note”: “Deploys an insecure CockroachDB cluster, please refer to CockroachDB documentation for production deployments.”,

“categories”: [“database”],

“platform”: “linux”,

“logo”: “https://cloudinovasi.id/assets/img/logos/cockroachdb.png”,

“repository”: {

“url”: “https://github.com/portainer/templates”,

“stackfile”: “stacks/cockroachdb/docker-stack.yml”

}

}

解释

type必选项,1表示container,2表示swarm stack,3表示compose stack

title 必选项

description必选项

registry可选项,docker镜像的仓库,默认是Dockerhub

administrator_only可选项,是否只有管理员可用模板

name可选项,该模板在管理界面中显示的名称

logo可选项,自定义的logo

env 可选项,定义模板的变量

note 可选项,关于模板的信息

platform 可选项,支持的平台,一般是linux或者windows

categories 可选项,模板的类别,可以在UI上通过category来过滤

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/205949.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午4:49
下一篇 2026年3月19日 下午4:49


相关推荐

  • linux扩容文件系统resize2fs,linux resize2fs命令设置方法

    linux扩容文件系统resize2fs,linux resize2fs命令设置方法相信很多人不太了解 resize2fs 命令的用法 下面由学习啦小编为大家整理了 linuxresize2 命令 希望大家喜欢 linuxresize2 命令 resize2fs 命令被用来增大或者收缩未加载的 ext2 ext3 文件系统的大小 如果文件系统是处于 mount 状态下 那么它只能做到扩容 前提条件是内核支持在线 resize linuxkernel2 6 支持在 mount 状态下扩容但

    2026年3月26日
    2
  • 陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯

    陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯题目思路程序如下总结题目谢尔宾斯基地毯是形如上图的正方形分形图案,每个地毯可分为等大小的9份,其中中央挖空,其余均由更小的地毯组成。现给定地毯大小(行数)与组成地毯的字符元素,请打印相应的地毯图形。注:空腔以半角空格表示;当给定字符元素长度不为1时空格数须与字符长度对应输入格式:输入为两行,分别为地毯大小正…

    2022年7月13日
    21
  • Jenkins学习三:介绍一些Jenkins的常用功能

    Jenkins学习三:介绍一些Jenkins的常用功能Jenkins一些常用的功能,如:备份和恢复jenkins、移动,删除或修改jobs、Jenkins启动时的命令行参数、修改jenkins的timezone、通过脚本启动jenkins、查看jenk

    2022年8月1日
    11
  • creo每次都要配置config_config配置中心

    creo每次都要配置config_config配置中心前言每个测试用例都应该有config部分,可以配置用例级别。比如name、base_url、variables、verify、export等等案例演示fromhttprunnerimport

    2022年7月30日
    7
  • stream.filter不会空指针,stream.map会出现空指针

    stream.filter不会空指针,stream.map会出现空指针stream.filter不会空指针,stream.map会出现空指针

    2022年4月24日
    296
  • bwapp详细教程_bwapp之sql注入

    bwapp详细教程_bwapp之sql注入**HTMLInjection-Reflected(GET)**low:低级漏洞中,输入数据没有做校验Firstname:<script>alert(‘xss’)</script>Lastname:<script>alert(‘xss’)</script>出现xss即为成功。medium和low一样,但发现被全部显示抓包,会发现符号<>均被编码0,1,2分别对应三个等级找见对应的/bWAPP/bw

    2026年2月25日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号