提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记
Portainer
是一个 Docker
可视化管理工具,为 Docker
提供状态提示面板、快速配置部署、数据卷管理等各种功能,基本上能满足中小型容器管理的需求。
我也感觉 Portainer
使用起来非常方便
Portainer
社区版目前具有两个镜像。portainer/portainer
和 portainer/portainer-ce
。
portainer/portainer 是 1.X版本(老版本)镜像。官方现在已弃用此镜像。
不过目前网上教程都是以此镜像为准。我刚开始也没注意,结果被坑到了。
此镜像版本对非 SWARM
云连接的 Docker Compose
语法版本只支持到 2.X,并且创建具名Volume
挂载目录时有问题(我就被这个坑到了)。
portainer/portainer-ce 是 2.X 版本的新镜像。
完全支持 Docker Compose
3.X 语法版本。
在此 Portainer
通过 Docker Compose
进行部署。
Docker Compose
可观性较强,并且配置文件可以保存 以后的所有部署方案都采用这种形式。
version: '3.9'
services:
portainer:
image: portainer/portainer-ce
container_name: portainer
restart: always
ports:
- 9000:9000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /volumes/portainer:/data
以上是部署 Portainer
的 YAML
格式配置文件
YMAL
格式版本,当前版本具有 1、 2 、 2.X、 3.X,每个版本的语法都略有差异,不过差异并不大,一般语法没什么区别。 不过不同版本语法对 Docker
版本有一定要求,详细可以参考:https://docs.docker.com/compose/compose-file/compose-file-v3/容器组
配置,依照 YAML
格式可配置多个容器,当前只有一个 portainer
配置。services
之间可以配置 network,依赖顺序等。 服务(Service)
名称,代表一个容器(Container)
。 docker run
时设置 restartPortainer
提供了端口号为 9000volume
名称 或者 宿主目录 ,当直接为宿主目录 时,容器启动时会使用 宿主目录 覆盖 容器内目录 这个之后会介绍;
第二个是容器内目录(Portainer
数据存储在容器内 /data 目录)。PS: 注意:
Volume
挂载目录和文件时,有两种情况。目录:宿主机中可以不存在此目录,Docker
在启动容器时会自动创建目录。 文件:当挂载路径为文件时,宿主机中必须存在此文件
配置属性中还可以设置好多参数,例如:environment
,之后会使用使用,不再介绍。
/var/run/docker.sock
是一个特殊的文件,有些容器需要提供此文件。
文件编写完成后上传服务器执行
docker-compose -f /yml/docker-compose/portainer.yml -p portainer up -d
YAML
文件存放的地址,在此文件上传到了 /yml/docker-compose/ 目录,Docker Compose
名称portainer/portainer-ce
镜像时会进行下载,所有可能有些慢docker run -d
参数一致成功运行后,会自动启动容器。
并且在挂载的目下可以看到容器中的的数据
此时就可以使用访问 Portainer
页面。
注意:如果是云主机,需要启动 9000 端口访问策略,否则无法访问。
Portainer
第一次访问会跳转到设置管理员用户页面
设置完成之后,如果本地具有 Docker
, 会默认连接到本地 Docker
进入主页面后,第一个就是自动连接的本地 Docker
, 点击可以看到 Docker
各种信息
Docker Compose
管理,对当前 Docker Compose
进行管理,并且可以直接上传 YAML 文件进行构建容器。目前只有一个Stack
:portainerDocker
容器管理,可以对所有容器进行管理设置。目前也只有一个容器
:portainerDocker
镜像管理,对当前 Docker
所有镜像进行管理,目前也只有一个镜像
:portainer/portainerDocker
数据卷管理,Docker
network 管理,目前只有默认的 4 个 Network
Stack 是用来管理 Docker Compose
,目前只有一个,也就是部署的 Portainer
未使用 Portainer
可视化工具部署的 Docker Compose
, 在 Portainer
可视化工具内部是不允许操作的。
例如 Portainer, 在 Portainer
可视化工具中 Control 属性显示为 Limited, 意思就是不允许操作这个 stack
。
点击 Add Stack 按钮就可以进行添加 Docker Compose
, Portainer
支持四种方式添加;
个人比较喜欢使用 Upload 在本地使用编辑器编写完成之后上传。当然也可以使用其它方式。看使用场景和个人喜好。
Portainer
支持多种连接方式。 介绍一种使用 Docker API 连接方式
API 连接方式是使用 TCP
协议访问的 Docker API 进行通信,需要设置 Docker API,允许 Docker
被访问
Docker API 需要设置 /lib/systemd/system/docker.service 文件 ExecStart 属性
在此设置只允许内网访问 ,其实只允许本地 IP 访问(模拟远程连接方式)
PS:注意:设置连接主机根据实际情况设置,千万不要设置为 tcp://0.0.0.0:2375,这样极大可能会中病毒,亲测中过挖矿脚本病毒。
设置完成后需要重启 Docker
服务
sudo systemctl daemon-reload sudo systemctl restart docker
现在 Portainer
就可以使用 API 连接方式