1. 应用场景
之前Lighthouse 5分钟系列教程里,介绍了使用Docker在轻量应用服务器上搭建应用服务,比如搭建bitwarden个人密码管理器,搭建calibre-web个人在线图书馆,打造沉浸式Markdown写作环境。这些教程中使用命令的方式来操作Docker,而且多台轻量应用服务器中的Docker容器需要登录多台服务器分别进行管理,不是很方便。本文为大家介绍一下,使用Portainer以可视化的方式来管理多台轻量应用服务器的Docker容器。
2. Portainer简介
Portainer是一款免费且开源的容器图形化管理工具。它能在数据中心和边缘节点与Kubernetes,Docker,Docker Swarm,Azure ACI共同工作。
Portainer去除了复杂的编排工作,这使开发者可以快速、容易和精确地部署应用。除了管理应用,它还能用来观察容器的行为,管理底层平台并为使用者提供了安全检查和权限管控的能力,使容器的部署工作更加安全。
下图是Portainer官网提供的Portainer功能定位。
3. Portainer与轻量应用服务器
轻量应用服务器自带Docker镜像,个人开发者可能会在多个轻量应用服务器中,运行多个Docker容器,使用Portainer可以对多台服务器中的Docker容器进行集中地和图形化地管理。Portainer有非常友好的控制页面,这能够让使用者在不熟悉Docker命令的情况下,对Docker容器进行管理,使用起来非常便利。如下图所示。
4. Portainer安装
接下来,我们介绍一下如何使用Portainer Server管理多个轻量应用服务器中的Docker容器。下图是整体的架构图。
4.1. 安装Portainer Server
我们需要一台安装了Docker镜像的轻量应用服务器(购买方法可以参考Lighthouse5分钟教程),使用Docker来安装Portainer Server。在腾讯云轻量应用服务器控制台中使用一键登录功能,登录服务器,用如下命令安装Portainer Server。
代码语言:javascript复制docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
4.2. 防火墙放通Portainer端口
在轻量应用服务器实例的防火墙页面,放通Portainer使用的端口。
4.3. 登录Portainer Server
在浏览器中访问http://ip:9000,先设置登录的账号的密码,接下来就可以登录Portainer的管理页面了。
4.4. 管理本机Docker容器
现在我们要管理的是本机的Docker容器,这里选择Docker,然后点击Connect。
这时本地的Docker就纳入到Portainer Server的管理中了,我们可以看到本地已经有三个容器在运行中。
4.5. 管理远端Docker容器
4.5.1. 放开远端Docker容器的API控制
使用Portainer管理远端的Docker容器,那么我们要放开远端服务器Docker 的API控制。SSH登录远端轻量应用服务器执行如下操作。
代码语言:javascript复制sudo root
vim /usr/lib/systemd/system/docker.service
#在ExectStart参数中新增-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H fd:// --containerd=/run/containerd/containerd.sock
保存systemd的配置文件后,重启Docker。
代码语言:javascript复制systemctl daemon-reload && systemctl restart docker
4.5.2. 防火墙放通Docker API端口
在远端轻量应用服务器的防火墙控制台,放通Docker API端口2375。
4.5.3. 新增远端Docker的Endpoint
开放远端服务器的Docker API端口后,我们在Portainer的导航栏找到Endpoints,新增一个Endpoint。
Endpoint Url,输入远端轻量应用服务器的IP地址,端口2375。如果远端服务器与Portainer Server都是同地域的轻量应用服务器,我们输入内网IP。如果是不同地域的轻量应用服务器,我们需要输入外网IP。
这样远端轻量应用服务器的Docker容器,也可以在Portainer中进行管理了。
5. Portainer使用
现在我们介绍一下使用Portainer对Docker进行管理。
5.1. 使用AppTemplates安装Nginx
5.1.1. 安装Nginx
Portainer自带App Templates,其中包含了一些常用的docker 容器,选择Nginx安装。
Name为容器的名字,输入nginx,点击Deploy the container。
5.1.2. 查看Container list
安装完成后,在Container list中,看到nginx已经启动了。
5.1.3. 访问Nginx
这里我们访问http://ip:32776
5.2. 使用Stack安装chevereto
在Portainer Stack中可以使用Docker-compose安装应用。这里我们使用《【5分钟玩转Lighthouse】打造沉浸式Markdown写作环境》这篇文章里的docker-compose文件,在Portainer中安装chevereto图床。
5.2.1. 创建Stack
在Stacks页面,点击CreateStack,然后将docker-compose文件的内容复制粘贴的Web editor中,点击Deploy。如下图所示。
5.2.2. 查看Stack details
等待Stack部署成功之后,可以在Stack details中查看docker-compose启动的全部容器。
5.2.3. 访问chevereto
在浏览器中访问 http://ip:80 就可以看到chevereto的页面了。
6. 总结
使用Portainer提供的图形化界面,我们可以很轻松地管理多台轻量服务器的Docker容器,不用再使用命令行输入Docker命令,就能完成容器的部署、停止、删除和开启等操作。Portainer进一步降低了Docker的使用门槛,使得我们可以将更多精力用在服务上面,专心完成工作。
本文限于篇幅,仅介绍了Portainer的安装、Endpoint管理、单个容器部署和Docker Compose多个容器的部署的内容。实际上Portainer还能进行容器镜像、网络、数据卷、Docker镜像仓库管理等多方面的工作,这些内容可以在后续Lighthouse 5分钟系列教程中介绍。
7. 参考资料
1. 腾讯云轻量应用服务器:https://cloud.tencent.com/product/lighthouse
2. Portainer:https://www.portainer.io/
3. 【5分钟玩转Lighthouse】打造沉浸式Markdown写作环境:https://cloud.tencent.com/developer/article/1831170