01.Portainer-容器界面化管理工具

01.Portainer-容器界面化管理工具

工欲善其事,必先利其器。

前言

以前总喜欢自己搭建一些好玩的服务,如Jellyfin,NextCloud等等,刚开始原生搭建时每次都要环境版本折腾一些时间,例如jdk,数据库,多个服务各自依赖的版本又有不同要求,并且如果需要换服务器,环境迁移时真的很痛苦。

后来慢慢的docker火起来了。在我尝试接触docker后,我之后所有的服务有镜像的几乎全部使用docker去搭建,常见热门的一些好玩的项目几乎也都有官方的docker镜像,甚至我现在开发完的项目都是打包镜像后去进行部署,方便你我他。

刚开始习惯了docker搭建各种服务后,对我来说虽然比以前原生环境搭建幸福到天上了,但是也有一些不爽的地方,刚开始每次的服务容器启动我都是使用原生命令,而我经常因为需要更换路径,ip以及其它等等原因调整命令,只能杀掉容器重新编写命令,当然我发现这个问题后就采取了写shell脚本的形式,将每个容器的启动用脚本记录下来,然后修改脚本即可。

后续我又接触了docker-compose,这是docker官方的开源项目, 负责实现对docker容器集群的快速编排,其实我只用到他可以将docker的启动命令参数以脚本形式记录下来的功能,并且可以将依赖的两个容器编排到一起,例如私有git仓库和它用到的数据库MySql等等,我刚开始就把它简单理解为官方的命令脚本(当然不是这样的)。

现在,基本的docker命令都熟悉了,但是有了更新的需求,有没有啥工具点点拽拽就行了,不要每次去服务器里面编辑脚本,查看日志。

答案是当然有,Portainer来了。

介绍

Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。

portainer分为社区版(Portainer Community Edition)和企业版(Portainer Business Edition),社区版完全免费开源,企业版不免费,而企业版也是由社区版本发展而来,包括一系列专门针对业务用户需求的高级特性和功能(如 RBAC等等)。

社区版本的功能已经非常强大了,满足一般的集群管理完全没有问题,而企业版我开始使用时可以申请5个节点,而我写这篇文章时发现好像变为三个节点了,如果只是为了容器管理需求,不是经常爱折腾,直接社区版,企业版免费节点也有到期时间,目前意思可以继续续,但是不知道会不会变,并且社区版升级企业版容易,而企业版降级似乎有一些麻烦,我是社区版升级到了试用的企业版了,未尝试降级过。

安装

在我们搭建好docker环境的前提下,Portainer是非常方便。

1. 拉取镜像

我们查看docker仓库发现官方portainer镜像有三个,portainer,portainer-ce以及portainer-ee,分别是旧版portainer(已废弃),社区版与企业版。我们根据需要拉取portainer-ce以及portainer-ee即可,不要再拉取portainer。如果使用企业版本,首先去申请免费授权

image.png

执行以下命令,拉取镜像:

docker pull portainer/portainer-ce   // 社区版
    
   or
    
docker pull portainer/portainer-ee   //企业版

启动容器

因为我们才准备搭建界面化容器管理服务,所以portainer的启动命令肯定只能使用脚本,并且不建议使用docker-compose,直接shell脚本简单易用,服务器迁移后直接首先也执行脚本启动一个容器即可。

容器和镜像的关系可以简单理解镜像是一个模版,我依托这个模版可以启动多个实例即容器。这些容器可以相互独立,但是他们的来源都是同一个镜像。

容器启动命令内容如下:

docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always --net dllcnx --ip 172.20.0.10 --pull=always -v /var/run/docker.sock:/var/run/docker.sock -v /docker/portainer:/data portainer/portainer-ce:latest

需要注意的点:

  • -d:选项把这个容器的运行分离到后台,这样就能继续使用终端。如果没放这个选项,可以用 Crtl+C 来停止容器的运行,或用 Ctrl+P 然后 Ctrl+Q 来像这选项一样把运行放置去后台。

  • -p 8000:8000:端口映射,选项捆绑宿主机的 8000 端口(前一个号码)到容器的 8000 端口(后一个号码),使得访问宿主机的 8000 端口就等同于访问容器的 8000 端口。可以简单理解一个容器就是一个小的服务器,它内部有完整的独立体系,它内部开启了8000端口,你外部是访问不到的,只有将宿主机的端口通过命令映射了,你才可以访问宿主机端口传到内部去。所以有了一个问题要注意,内部8000端口不能改,因为portainer本身就用的8000,而你外部宿主机可以根据你的需求改动。

  • --name=portainer: 容器起一个名字

  • restart=always: 表示遇到意外停机,关闭等等原因,总是自动重启,还有其他参数自己可以去学习

  • --net dllcnx --ip 172.20.0.10: 这个很多人用不到,相当于我在容器里面建立了一个网络,这个网络的名字叫dllcnx,并且指定我这个容器ip是172.20.0.10(我的dllcnx网络的网段里面的一个ip),我是因为多个服务为了统一管理,建立了网络。

  • --pull=always:选项会检测下载过的 latest 版镜像是否有更新,并重新下载

  • -v /var/run/docker.sock:/var/run/docker.sock: 类似与端口映射,这个是文件映射,将宿主机的docker命令映射进入容器里面,同样容器内部位置不能改,外部看你安装的具体情况,一般就是这个路径。

  • -v /docker/portainer:/data:同上,也是文件映射,只是这个指向是个文件夹,相当于映射整个文件夹。目的是数据持久化,因为容器和宿主机是隔离的,我们有时迁移服务器后,重新启动的容器肯定丢失了上个服务器的数据,而这个文件夹下就是portainer的操作数据,我们将其映射出来,后续迁移可以直接打包到新服务器,只要宿主机路径继续指向这些文件,则能保证数据的持久。

  • portainer/portainer-ce:latest: 容器使用的镜像,这个代表社区版,冒号后边是版本,指的默认版本。

配置

启动成功后,我们需要使用我们的ip加端口进行访问,例如我们设置的宿主机默认8000端口,则宿主机IP:8000即可。

  1. 首次进入需要创建管理员:


    image.png
  1. 进入后需要我们选择连接哪个docker,我们当然选择本机环境:


    image.png

通过这个也可以看到,portainer其实也支持连接其他服务器的docker进行管理,这个也是之前我们看到企业版免费授权3个节点的作用,一个连接就是一个节点。

  1. 我们可以看到我们的环境了,点击进入就能看我们的容器了


    image.png

左侧菜单栏常用的就是

  • Dashboard监控面板,
  • App Templates模版
  • stacks(其实就是docker-compose的管理和编写)
  • Containers(启动的容器),Images(下载的镜像)
  • Networks(网络)
  • Volumes(文件卷,直接我-v映射文件到宿主机,docker还提供这个模式)

面板说明

Dashboard

监控面板,可以看到我们的docker-compose脚本数,启动的容器数量,镜像数量等等。


image.png

App Templates

打开App Templates菜单可以看到很多创建容器的模板,通过模板设置下即可轻松创建容器,我是没咋使用过或者没发现咋用;

Stacks

docker-compose编排界面,我喜欢以编排形式启动容器。我们可以新建Stacks,也可对以往的进行管理,点击某个编排名称可进入查看脚本内容,以及正在依托这个脚本启动的容器。

image.png
image.png

某个容器脚本


image.png

注意:docker run命令启动的容器都可以转换为docker-compose编排模式,需要按照各自对应的映射命令方式对应写正确即可,可以自行研究。

Containers

容器操作面板,我们可以新建容器,也看到当前创建的容器,我们可以对容器进行运行、暂停、删除等操作;点击某个容器进入也可以查看对应的设置以及日志,配置,交互等等。

image.png
image.png

新建容器界面:


image.png

Images

打开Images菜单,我们可以查看所有的本地镜像,对镜像进行管理;


image.png

Networks

打开Networks菜单,可以查看Docker环境中的网络情况;


image.png

使用

现在我以我需要启动一个nginx服务为例,分别通过Containers和Stacks模式搭建:

原生启动命令:

docker run -d -p 8888:80 nginx:latest

Containers模式

点击左侧菜单栏Containers->Add container->进入配置页面:
我只配置名称,端口,其它命令此次都不配置,比如按理应该把配置文件暴漏外部,大家根据需要,我此次只为演示。

image.png

点击Deploy the container进行启动。

Stacks模式

点击左侧菜单栏Stacks->Add stack->进入配置页面:


image.png

stacks按照docker-compose写法写即可。

验证

我浏览器端口12888的原因是家庭内外网又加了一层映射,将局域网的8888映射到了外网的12888.

image.png

后记

  1. 本文不涉及Dockerdocker-compose环境安装,请参考其它文章先行安装docker及docker-compose

<center>
<img src="https://dllcnx.com:18889/images/dllcnx/gzh/search_01.jpg" style="width: 100px;">
</center>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容