1. Portainer简介
Portainer是一款开源的轻量级Docker容器镜像图形化管理工具,它基于Docker API,提供状态显示面板、应用模块快速布署、容器镜像基本操作(如上传/下载镜像、创建容器、停止容器、移除容器等)、日志显示等。开发者和运维人员可利用Portainer轻松构建、管理和维护Docker环境。
2. Portainer安装
2.1 搜索portainer镜像
如果已明确希望拉取的镜像名称,该步骤可忽略。如果不知道该下载哪些镜像,可通过docker search来搜索:
docker search portainer --limit 5 --no-trunc
其中,--limit 5表示只显示前5个搜索结果;--no-trunc表示显示完整的镜像描述。执行结果如下:
2.2 拉取portainer镜像
从docker search结果中,选取合适的镜像,从镜像仓库拉取到本地。例如,我们要拉取portainer/portainer这个镜像,只需执行:
docker pull portainer/portainer
如果不指定镜像的TAG(或DIGEST),则默认拉取最新镜像。
拉取成功后,可通过docker images命令确认最新镜像已在本地,如下图所示:
2.3 运行portainer容器
运行以下脚本来启动portainer容器:
docker stop portainer
docker rm portainer
docker run -d --restart=always -p 9000:9000 --name=portainer -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
执行成功后,docker ps查看运行的docker容器,可以看到portainer已在运行:
3. Portainer可视化管理
完成步骤2的安装、运行操作后,后续的布署均可在web端可视化操作。
3.1 可视化界面简介
在浏览器地址栏输入portainer运行的服务器地址和portainer端口号,例如192.168.10.100:9000,即可进入以下登录页面,首次登录需要创建用户名和密码。
点击“Create user”后,跳转到如下页面:
选择Docker项,点击“Connect”,进入到Home页面,在该页面,可以看到当前服务器上容器的概况:容器数量、镜像数量、运行和停止的容器数量等。由于是单机版,因此只能看到一个group,见下图红框内部分。
点击该group,进入到Dashboard,如下图,可通过进入不同的项目,管理不同的内容。
例如要管理容器,可进入Containers项,在该页面,可看到服务器上容器的列表。可在该页面进行容器的添加、启动、停止、移除等操作,并可查看各容器的运行状态、Log、Inspect、Stats等信息。
3.2 容器可视化管理
由于不同的服务所需设置的参数不同,单纯依赖portainer可视化布署并不是一个明智的选择。建议首次布署时通过脚本一键布署,在后续的维护过程中,通过portainer进行一些可视化的操作,比如容器的启动、停止、容器服务log查看、容器状态查看与诊断等。
3.2.1 Portainer可视化布署示例
下面以一个需要调用GPU的算法服务,来说明单纯依靠可视化布署需要的一些设置步骤。
进入Add container界面,填写容器名称和镜像名称,如下图所示:
接下来设置Command&logging,根据需要填写相应的参数。在本例中,必填项为“Command”和“Working Dir”。
设置Volumes,做主机与容器的目录映射,注意,容器目录在前,主机目录在后。目录映射时,选择“Bind”,见下图红框所示。
继续设置Network,本例中,docker服务直接复用主机的网络,所以选择host即可。
设置Restart policy,选择Always,程序异常退出后,自动拉起。
设置Runtime,由于算法服务需要调用GPU,将Runtime设置为nvidia:
设置好以上参数后,点击“Deploy the container”,启动容器。启动成功后,跳转到如下界面。若启动失败,页面右上角会提示启动失败原因。
容器的配置参数可通过点击容器名进入该容器后,点击“Duplicate/Edit”选项查看并修改。
3.2.2 容器log查看
通过点击每个容器后面的Log图标可查看各容器的运行日志:
本例中,日志界面如下图所示:
3.2.3 容器诊断
点击Quick actions的Inspect图标,可进入容器诊断界面。
进入Inspect界面,可看到容器的详细信息。若容器意外退出,也可通过“State”项看到容器的当前状态及退出码。
3.2.4 容器资源占用查看
点击容器Quick actions的Stats图标,可进入容器资源占用可视化界面,如下图所示。通过该界面,可以较直观地看到一段时间以内的资源占用情况,从而判断容器是否健康运行以及可能存在的风险(如内存溢出等)。