文档章节

Portainer实战

China_OS
 China_OS
发布于 2018/09/27 19:47
字数 1451
阅读 3787
收藏 4

    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://<REMOTE_HOST>:<REMOTE_PORT>

        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"}]
  },
]

验证

    访问

http://172.31.68.241:9000/

    登录

    查看

    容器信息

配置

    之前说过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 <a href=\"https://www.cockroachlabs.com/docs/stable/orchestrate-cockroachdb-with-docker-swarm.html\" target=\"_blank\">CockroachDB documentation</a> 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来过滤

 

© 著作权归作者所有

共有 人打赏支持
上一篇: Burrow 1.1.0实战
下一篇: Traefik 详解
China_OS
粉丝 421
博文 460
码字总数 513906
作品 0
静安
技术主管
私信 提问
可持续自动化构建微服务(8)搭建 Portainer 可视化界面

第八章 安装 Protainer 8、 搭建 Portainer 可视化界面 8.1 swarm 主节点操作 (192.168.33.21) 8.1.1 下载 portainer 镜像 命令:docker pull portainer/portainer 8.1.2 启动 portainer 命令......

jato333
2018/05/28
0
0
Docker整合Portainer界面化管理-单机版(Swarm后面会加上)

一、docker正常启动(省略) 二、拉取portainer镜像:docker pull docker.io/protainer/portainer 镜像名打了tag:docker tag docker.io/portainer/portainer portainer 三、查看镜像 docker i......

WALK_MAN
2018/05/14
0
0
docker:轻量级图形页面管理之Portainer

1.介绍 docker 图形化管理提供了很多工具,有Portainer、Docker UI、Shipyard等等,本文主要介绍Portainer。  Portainer是一个开源、轻量级Docker管理用户界面,基于Docker API,提供状态显...

甘兵
2018/10/29
0
0
个人服务器docker使用管理

docker部署 安装文档: https://docs.docker.com/install/linux/docker-ce/centos 清理老的版本 准备依赖环境 rpm离线安装方式 yum在线安装 加速docker镜像源 /etc/docker/daemon.json 重启d...

以谁为师
02/22
0
0
docker学习系列10 开源图形化管理系统

为什么需要docker图形化管理平台? 答:命令行虽然效率高,但不够直观,而且多主机管理不方便。 图形化管理系统还可以和用户角色管理等关联起来。 都有哪些开源免费的docker图形化管理平台?...

飞凡的陀螺
2018/08/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot引入第三方jar包或本地jar包的处理方式

在开发过程中有时会用到maven仓库里没有的jar包或者本地的jar包,这时没办法通过pom直接引入,那么该怎么解决呢 一般有两种方法 - 第一种是将本地jar包安装在本地maven库 - 第二种是将本地j...

独钓渔
今天
2
0
五、MyBatis缓存

一、MyBatis缓存介绍 缓存的使用可以明显的加快访问数据速度,提升程序处理性能,生活和工作中,使用缓存的地方很多。在开发过程中,从前端-->后端-->数据库等都涉及到缓存。MyBatis作为数据...

yangjianzhou
今天
2
0
最近研究如何加速UI界面开发,有点感觉了

最近在开发JFinal学院的JBolt开发平台,后端没啥说的,做各种极简使用的封装,开发者上手直接使用。 JBolt开发平台包含常用的用户、角色、权限、字典、全局配置、缓存、增删改查完整模块、电...

山东-小木
今天
3
0
《月亮与六便士》的读后感作文3000字

《月亮与六便士》的读后感作文3000字: 看完英国作家威廉.萨默塞特.毛姆所著《月亮与六便士》(李继宏译),第一疑问就是全书即没提到“月亮”,也没提到“六便士”。那这书名又与内容有什么...

原创小博客
昨天
2
0
微信网页授权获取用户信息(ThinkPHP5)+ 微信发送客服消息(一)

以thinkphp5为实例,创建控制器 class Kf extends Controller { /** * [protected description]微信公众号appid * @var [type] */ protected $appid = "xxxxxxxxxxxxxxx"; /** * [protected......

半缘修道半缘君丶
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部