恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Linux-Tutorial 实战:Portainer 轻量级 Docker 容器管理面板的安装、配置与优化
首页
资讯中心
/
Linux-Tutorial 实战:Portainer 轻量级 Docker 容器管理面板的安装、配置与优化
Linux-Tutorial 实战:Portainer 轻量级 Docker 容器管理面板的安装、配置与优化
发布时间:2026/10/6 1:52:06
文档教程技术博客【免费下载链接】Linux-Tutorial《Java 程序员眼中的 Linux》项目地址https://gitcode.com/gh_mirrors/li/Linux-Tutorial点击查看免费下载导读Portainer 是一个轻量级的 Docker 容器可视化 Web 管理工具它以极低的内存占用官方镜像运行时仅约 5 MB 左右提供容器、镜像、网络、卷与栈Stack的统一管理能力。本篇文章以《Java 程序员眼中的 Linux》开源仓库Linux-Tutorial中的 Portainer 安装与配置文档 为核心骨架结合仓库内的 Docker 使用手册与 docker-compose 真实配置示例完整讲解 Portainer 的安装、本地监控与远程监控两种接入模式的配置方法并深入剖析docker.sock挂载与 Docker Remote APITCP 2375 端口背后的实现原理帮助你在一台或多台内网宿主机上快速搭建可视化的 Docker 运维入口。Portainer 是什么为什么用它Portainer 是一个开源的容器管理 UI它本身以容器的形式运行在宿主机上通过 Docker API 与 Docker 守护进程dockerd通信把docker ps、docker images、docker stats等命令行操作封装成 Web 界面。对于以 Java 为主、Docker 为辅的开发者而言它的价值在于零代码、开箱即用无需学习大量 Docker 命令浏览器即可完成容器的启停、日志查看、镜像拉取与删除、网络与卷管理极低资源开销镜像本身非常轻量运行时内存占用约为 5 MB 量级几乎不占用宿主机资源本地 远程双模式既能管理本机容器也能通过 Docker Remote API 管理内网其他机器上的 Docker 守护进程适合中小规模集群的日常巡检。在动手部署之前请确认宿主机已经具备可用的 Docker 环境Docker CE以及 docker-compose 工具。如果你还没有准备好环境可以参考仓库内 Docker-Install-And-Usage.md 中的 Docker CE 安装步骤yum install -y docker-ce、systemctl start docker.service以及 docker-compose 的安装与常用命令docker-compose up -d、docker-compose ps等。一、使用 Docker Compose 安装 PortainerPortainer 官方推荐的部署方式是容器化部署。原文档给出的安装流程包含四步创建数据目录、赋权、编写 docker-compose 文件、后台启动。1.1 准备宿主机目录mkdir -p /data/docker/portainer chmod -R 777 /data/docker/portainer说明/data/docker/portainer将作为 Portainer 的数据持久化目录挂载到容器内/data用于保存 Portainer 自身的数据库与配置。原文档使用了chmod -R 777的宽松权限以便读写生产环境中建议收敛为chmod 755或使用 Docker 数据卷替代裸目录挂载以降低权限风险。1.2 编写 docker-compose.yml进入目录并创建编排文件cd /data/docker/portainer vim docker-compose.yml原文档的核心编排内容如下此处为完整保留并补充注释的版本字段与原文档一致version: 3 services: portainer: container_name: portainer image: portainer/portainer volumes: - /data/docker/portainer:/data - /var/run/docker.sock:/var/run/docker.sock ports: - 9000:9000各配置项的作用配置项作用container_name: portainer固定容器名便于后续docker logs portainer、docker restart portainer等命令引用image: portainer/portainer官方社区版镜像不指定 tag 时默认拉取latest/data/docker/portainer:/data宿主机数据目录挂载到容器内/dataPortainer 的账号、端点Endpoints等配置落盘持久化容器重建不丢失/var/run/docker.sock:/var/run/docker.sock将宿主机 Docker 守护进程的 Unix Socket 挂载进容器这是 Portainer 能管理本机 Docker 的关键原理见下文第三节ports: 9000:9000宿主机 9000 端口映射到容器 9000 端口浏览器访问入口提示/var/run/docker.sock是宿主机 dockerd 的默认 Unix Socket 路径。原文档特别强调Portainer 镜像在构建时就已经按此约定配置因此同一台机器上的其他容器都能被直接监控。1.3 后台启动docker-compose up -d启动后可用以下命令确认状态docker-compose ps # 查看 Compose 管理的服务状态 docker ps # 查看容器列表 docker stats portainer # 查看 Portainer 容器实时资源占用正如原文档所强调该容器占用内存非常非常小只有 5 M 左右。实际观测时可使用docker stats印证内存列MEM USAGE通常在个位数 MB 量级这也是 Portainer 适合常驻部署的重要原因。二、对本地 Docker 的监控配置Local 模式2.1 原理docker.sock 即本地 Docker 的“管理入口”因为编排文件中已经挂载了/var/run/docker.sock:/var/run/docker.sockPortainer 容器内部即可直接与宿主机 dockerd 通信从而监控与操作宿主机上的所有容器。这种“挂载 Socket、免去网络暴露”的设计在仓库的 docker-compose 实例中同样可以找到印证在 gravitee-docker-compose 的 CI 编排文件 中Jenkins 容器同样通过- /var/run/docker.sock:/var/run/docker.sock挂载宿主机 Socket从而获得在容器内调用宿主机 Docker 的能力例如动态创建构建用容器。由此可见Portainer 的本地管理模式是 Docker 生态中“Socket 复用”的标准做法。2.2 首次访问与初始化启动后在浏览器中访问IP 以实际宿主机为准http://192.168.1.2:9000第一次访问会经历两个初始化步骤创建管理员账号设置用户名和密码该账号是 Portainer 的唯一超级管理员请妥善保管选择 Docker 环境EndpointsPortainer 会询问要管理哪里的 Docker 容器选择local即可直接接管本机 Docker。完成初始化后即可在 Web 界面中看到本机的容器列表、镜像列表、网络与卷实现与docker ps -a、docker images等命令等价的可视化操作。日常巡检时还可以结合仓库 Docker-Install-And-Usage.md 中介绍的docker stats、docker logs -f等命令做命令行侧的双重确认。三、远程 Docker 的监控配置Remote 模式当需要在一台机器上集中管理内网多台宿主机时可以启用 Portainer 的远程模式。原文档明确提醒以下方法为了方便没有做任何安全措施请仅用于内网环境。3.1 关闭被管理端的防火墙在被远程监控的 Docker 宿主机上执行systemctl stop firewalld.service systemctl stop iptables.service若只需放行单个端口也可使用firewall-cmd --zonepublic --add-port2375/tcp --permanent firewall-cmd --reload的方式比整体关停防火墙更收敛。3.2 让 dockerd 监听 TCP 2375 端口修改 Docker 服务配置文件vim /usr/lib/systemd/system/docker.service原文档给出的修改方案旧值 ExecStart/usr/bin/dockerd 新值 ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock参数含义-H tcp://0.0.0.0:2375让 dockerd 监听所有网卡的 2375 端口即开启 Docker Remote API未加密故仅限内网-H unix://var/run/docker.sock保留本地 Unix Socket 监听确保本机docker命令仍可正常使用。注意这里unix://var/run/docker.sock是相对路径写法实际等价于unix:///var/run/docker.sock。仓库 Docker-Install-And-Usage.md 的“Docker remote api 远程操作配置”一节给出了另一种等价且更规范的写法ExecStart/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2376并提供了验证方法在另一台机器上执行docker -H 192.168.1.22:2376 images能拿到与目标机器一致的数据即表示远程 API 生效。两者思路完全一致只是端口号不同2375 为默认无加密端口2376 为 TLS 加密端口惯例。3.3 重载配置并重启 Dockersystemctl daemon-reload systemctl reload docker systemctl restart docker3.4 在 Portainer 中添加远程端点回到 Portainer 初始化或端点管理页面选择Remote远程端点填写被管理机器的 IP 与端口例如192.168.1.3:2375保存后Portainer 即通过该地址的 Docker Remote API 读取远端容器、镜像等信息实现单点管理多台内网宿主机。四、底层原理纵深Socket 挂载与 Remote API 的本质本节结合仓库内的源码/配置证据进一步解释上文两个关键机制便于读者真正理解而不是“照着敲”。4.1 docker.sock本机管理为何不需要网络端口Docker 守护进程默认通过 Unix Socket 对外提供服务任何进程只要对该 Socket 有读写权限就等同于获得了本机 Docker 的完整控制权。Portainer 将 Socket 挂载进容器后容器内的 API 请求直接走 Socket 到达 dockerd因此本地模式无需暴露任何 TCP 端口也不存在端口冲突问题。这正是原文档所说“Portainer 镜像构建的时候已经配置了/var/run/docker.sock”的含义。同类实践在仓库的 CI 编排文件 中可见一斑Jenkins 容器同样挂载 Socket 以获得宿主机 Docker 的调度能力。4.2 Remote API跨主机管理的网络通道远程模式的核心是让 dockerd 额外监听一个 TCP 地址。-H tcp://0.0.0.0:2375使 Docker API 以 HTTP 形式暴露在网络上Portainer 作为 HTTP 客户端连接该地址完成查询与操作。由于 2375 默认不带 TLS 加密任何能触达该端口的主机都能接管 Docker因此该方案严禁暴露到公网原文档“请用于内网”的警告即针对此风险。仓库 Docker-Install-And-Usage.md 中记录的docker -H 192.168.1.22:2376 images远程验证命令与 Portainer Remote 端点填写192.168.1.3:2375的本质完全一致——都是通过 TCP 访问远端 Docker API。4.3 docker-compose一次编排、多机复用的管理范式Portainer 本身也是通过 docker-compose 部署的这与仓库中大量 docker-compose 实践一脉相承。例如 gravitee 平台的完整编排文件 展示了多服务nginx、mongodb、elasticsearch、多个 API 网关协同编排的写法其中depends_on、volumes、environment等键的用法与本篇 Portainer 编排同属一套语法demo 环境的 common.yml 则展示了通过extends复用公共服务定义的做法。理解 docker-compose 的up -d后台启动、ps查看状态、down停止并移除等命令对管理 Portainer 这类常驻基础组件同样适用。五、安全注意事项与维护建议5.1 安全边界本地模式Local相对安全控制面仅存在于 Socket 挂载但仍建议限制宿主机对/var/run/docker.sock的访问权限远程模式RemoteTCP 2375仅限内网使用不得对公网开放如确有跨公网管理需求应改用 TLS 加密端口如 2376并配置证书初始管理员账号创建后建议定期更换密码/data/docker/portainer数据目录应纳入备份范围容器重建后可完整恢复配置。5.2 日常运维命令速查结合仓库 Docker-Install-And-Usage.md 的常用命令可对 Portainer 进行日常巡检与维护docker-compose -f /data/docker/portainer/docker-compose.yml ps # 查看 Portainer 状态 docker logs -f portainer # 查看 Portainer 容器日志 docker stats portainer # 实时查看资源占用印证 5M 级内存 docker inspect portainer | grep Mounts -A 10 # 查看挂载情况若 Portainer 容器的日志文件不断增大可参考 Docker-Install-And-Usage.md 中“容器 log 位置与清理”一节日志位于/var/lib/docker/containers/容器ID值/容器ID值-json.log可在/etc/docker/daemon.json中配置log-opts: {max-size: 10m, max-file: 5}实现日志自动轮转。结语至此你已经完成了 Portainer 在 Linux 宿主机上的完整部署通过 docker-compose 以约 5 MB 的内存开销常驻运行用 Local 模式接管本机容器用 Remote 模式TCP 2375 Docker Remote API统一管理内网多台 Docker 主机并理解了docker.sock挂载与-H tcp://监听这两种接入方式的底层原理。将这套配置与本仓库中的 Docker 使用手册 结合使用即可构建出“命令行 Web 面板”双通道的容器运维体系是 Java 开发者迈向容器化运维的实用一步。赞分享文档教程技术博客【免费下载链接】Linux-Tutorial《Java 程序员眼中的 Linux》项目地址https://gitcode.com/gh_mirrors/li/Linux-Tutorial点击查看免费下载相关推荐Docker Compose 部署 Portainer CE轻量级容器管理面板配置与实战指南Docker Compose 部署 Portainer CE轻量级容器管理面板配置与实战指南 Portainer 是当前最流行的容器管理面板之一它通过 We示例工程Compose Multiplatform 桌面分发打包工具对比内置 jlink/jpackage 任务与第三方方案的深度剖析Compose Multiplatform 桌面分发打包工具对比内置 jlink/jpackage 任务与第三方方案的深度剖析 本文基于仓库中 packagi文档教程后端Portainer轻量级容器管理UI的全面介绍Portainer轻量级容器管理UI的全面介绍 Portainer是一个开源的轻量级容器管理平台专为简化Docker、Swarm、Kubernetes和AC后端前端云原生运维上一篇ResNet在Concrete ML中的FHE实现图像分类的隐私保护方案下一篇DeepSeek项目技术文档创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考