一.介绍

Portainer是个轻量级的Docker管理面板,和Rancher这种重量级选手没法比,Portainer倾向于单机的管理(后来发现能够添加多个单机节点切换着管理),当然,在Docker搞出Swarm之后Portainer也借此实现了集群管理。

使用官方提供的Demo预览一下

地址: ​​http://demo.portainer.io/​

用户名: admin

密码: tryportainer

你会有一种眼前一亮的感觉,美观,而且功能全面(从边上这一长列就能感受出来)

Docker管理面板系列——Portainer_json

虽然选项很多,但是其实就是命令行操作的简化,如果你用过Docker的命令行操作你能很快熟悉Portainer,和Rancher那种多了很多新花样不一样,Rancher的很多东西你看上去是摸不着头脑的,必须看着文档试一下才能大概弄清楚这是个啥。

 

二.安装

是不是眼馋了?那么就让我们装一下玩玩吧。

这是Portainer对Docker各版本的支持情况

Docker管理面板系列——Portainer_套接字_02

Portainer的安装方式主要有两种,一个是使用Docker安装,一个是二进制文件直接跑,我建议用Docker安装,比较方便点,也不用你自己去配置自启动啥的。

其他的请参考官方文档 ——> ​​传送门​

首先,我们得先把Unix套接字或者TCP监听打开,来方便连接(不过似乎Unix套接字默认是启用的,TCP需要自己开)

PS.这儿请务必注意,不能直接配0.0.0.0,因为如果不做ACL或者TLS认证会导致你的Docker被人扫到后直接控制,有可能被远程创建挖矿容器

先确认你的机器中是否存在/etc/sysconfig/docker这个配置文件,如果存在的话请修改,在其中的配置选项中加入如下内容



#这个仅允许本地连接,如果要远程的话改成0.0.0.0,但是如果是公网中远程请你自己配TLS认证或者防火墙加白名单-Htcp://127.0.0.1:2375 -H unix:///var/run/docker.sock




1


2




#这个仅允许本地连接,如果要远程的话改成0.0.0.0,但是如果是公网中远程请你自己配TLS认证或者防火墙加白名单


-Htcp://127.0.0.1:2375 -H unix:///var/run/docker.sock



但是,很多情况下我们会不存在这个文件(较高版本的Docker不会自动创建这个),所以我们可以选择另外一种方法,参照Docker文档——>​​传送门​



vi /etc/docker/daemon.json#添加如下,这个仅允许本地连接,如果要远程的话改成0.0.0.0,如果添加的不在最后一行请在末尾加上逗号 "hosts": ["tcp://127.0.0.1:2375", "unix:///var/run/docker.sock"] #如果deamon.json不存在请添加完整的json格式 { "hosts": ["tcp://127.0.0.1:2375", "unix:///var/run/docker.sock"] }




1


2


3


4


5


6


7




vi /etc/docker/daemon.json


#添加如下,这个仅允许本地连接,如果要远程的话改成0.0.0.0,如果添加的不在最后一行请在末尾加上逗号


"hosts": ["tcp://127.0.0.1:2375", "unix:///var/run/docker.sock"]


#如果deamon.json不存在请添加完整的json格式


{


"hosts": ["tcp://127.0.0.1:2375", "unix:///var/run/docker.sock"]


}



虽然其实你修改启动脚本在dockerd命令之后添加 -H unix:///var/run/​​docker​​.sock -H tcp://127.0.0.1 也可以,但是这样终归不怎么优雅。

准备工作做完,然后开始安装,使用Docker安装有三种连接方式

首先是全部都需要做的操作,添加一个数据卷,当然你也可以在docker run的时候手动指定数据挂载路径,效果是一样的,将下面docker run命令中的portainer_data换成宿主机上的具体路径就OK



docker volume create portainer_data




1




docker volume create portainer_data



1. 使用Unix套接字连接单个Docker(本地)



docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer




1




docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer



2. 使用TCP方式连接单个Docker(本地或远程)



#如果连接的是远程的docker,请把ip换掉(如果你改了dockerd监听的默认端口也记得修改2375)docker run -d -p 9000:9000 portainer/portainer -H tcp://127.0.0.1:2375




1


2




#如果连接的是远程的docker,请把ip换掉(如果你改了dockerd监听的默认端口也记得修改2375)


docker run -d -p 9000:9000 portainer/portainer -H tcp://127.0.0.1:2375



3. 使用Unix套接字或TCP连接Swarm集群(本地或远程)



docker run -d -p 9000:9000 portainer/portainer -H tcp://SWARM集群管理IP:2375




1




docker run -d -p 9000:9000 portainer/portainer -H tcp://SWARM集群管理IP:2375



下面这个算是另外一种了,是将Portainer以服务的形式部署在集群中,似乎也可以借助Swarm来实现HA?



docker service create \--name portainer \ --publish 9000:9000 \ --replicas=1 \ --constraint 'node.role == manager' \ --mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \ --mount type=bind,src=//opt/portainer,dst=/data \ portainer/portainer \ -H unix:///var/run/docker.sock




1


2


3


4


5


6


7


8


9




docker service create \


--name portainer \


--publish 9000:9000 \


--replicas=1 \


--constraint 'node.role == manager' \


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


--mount type=bind,src=//opt/portainer,dst=/data \


portainer/portainer \


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



第一次访问会让你创建账号

Docker管理面板系列——Portainer_unix_03

然后选择连接的是本地还是远端的Docker

Docker管理面板系列——Portainer_unix_04

Docker管理面板系列——Portainer_docker_05

全部设置完后我们就能进去了,新建容器的操作也很友好

Docker管理面板系列——Portainer_本地连接_06

感觉还是挺棒的,至于Swarm的我就不说啥了,之后估计还有专门讲Swarm基本使用的文章,可以关注下。

Docker管理面板系列——Portainer_unix_07

Tags: ​​docker​​, ​​docker管理面板​​, ​​portainer​