我的容器管理革命:从命令行地狱到可视化操控的蜕变

文章目录

    • 前言
    • [1. 本地安装Docker](#1. 本地安装Docker)
    • [2. 本地部署Portainer CE](#2. 本地部署Portainer CE)
    • [3. 公网远程访问本地Portainer-CE](#3. 公网远程访问本地Portainer-CE)
      • [3.1 内网穿透工具安装](#3.1 内网穿透工具安装)
      • [3.2 创建远程连接公网地址](#3.2 创建远程连接公网地址)
    • [4. 固定Portainer CE公网地址](#4. 固定Portainer CE公网地址)

前言

作为3人小团队的运维负责人,我曾被多服务器容器管理折磨到脱发------每天登录5台服务器执行docker命令,记不住容器ID就翻历史记录。直到用PortainerCE搭建可视化控制台,这种痛苦才彻底结束。最惊艳的是它的批量操作功能,一键重启所有异常容器,而cpolar则让我在医院陪护时用手机监控生产环境,发现CPU飙升立即扩容,避免了一次可能的业务中断。

上个月公司迁云,新旧服务器的容器迁移通过PortainerCE的模板功能实现无缝切换。现在团队成员通过共享的cpolar地址访问控制台,权限细分到每个项目,协作效率比以前用命令行时提升3倍。这种"本地管控+远程协作"的模式,让我们用3个人的人力管理了20台服务器的容器集群。

本篇文章介绍如何在Ubuntu中使用docker本地部署Portainer CE可视化管理工具,并结合cpolar实现公网远程管理容器和镜像。

接下来,讲解如何使用docker在本地Linux环境部署Portainer CE。

1. 本地安装Docker

本教程操作环境为Linux Ubuntu系统,在开始之前,我们需要先安装Docker。

在终端中执行一键安装脚本命令安装docker:

shell 复制代码
sudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh | bash -s docker --mirror Aliyun

配置docker镜像源

在终端执行

shell 复制代码
sudo nano /etc/docker/daemon.json 

输入下列内容,保存退出。

yaml 复制代码
{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://docker.1panel.live"
    ]
}

然后重新启动docker服务:

shell 复制代码
sudo systemctl restart docker

2. 本地部署Portainer CE

下载portainer-ce镜像,这里选择版本是latest版本。

shell 复制代码
sudo docker pull portainer/portainer-ce:latest

创建 Portainer Server 将用于存储其数据库的卷

shell 复制代码
sudo docker volume create portainer_data

下载并安装 Portainer Server 容器

shell 复制代码
sudo docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.21.2

Portainer Server 现已安装。您可以通过运行 来检查 Portainer Server 容器是否已启动:docker ps

现在安装已完成,您可以通过打开 Web 浏览器输入 https://localhost:9443 来登录您的 Portainer Server (注册登录账号)

登录后,进入到 portainer-ce首页

点击左侧 Containers,检查宿主机内所有容器,会显示所有容器列表

选择一个容器,选择图形化展示

点击 images,查看本地宿主机内所有容器镜像

点击 Networks,查看docker容器网络情况

点击 Host,查看宿主机内系统信息

上面在本地Linux中成功部署了Portainer-CE,并局域网访问成功。如果想在公网远程管理Portainer-CE,就可以创建一个公网地址,这里我使用的是cpolar内网穿透,通过cpolar转发本地端口映射的http公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器,可节省大量的资金。

3. 公网远程访问本地Portainer-CE

3.1 内网穿透工具安装

下面是安装cpolar步骤:

Cpolar官网地址: https://www.cpolar.com

使用一键脚本安装命令

shell 复制代码
sudo curl https://get.cpolar.sh | sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

shell 复制代码
sudo systemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入ubuntu主机IP加9200端口即:【http://localhost:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

3.2 创建远程连接公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理------创建隧道:

  • 隧道名称:可自定义,本例使用了: portainer 注意不要与已有的隧道名称重复

  • 协议:http

  • 本地地址:https://localhost:9443

  • 域名类型:随机域名

  • 地区:选择China Top

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了两个公网地址,接下来就可以在其他电脑(异地)上,使用任意一个地址在浏览器中访问即可。

如下图所示,成功实现使用公网地址异地远程访问本地部署的Portainer

使用上面的cpolar https公网地址,在任意设备的浏览器进行访问,即可成功看到我们Portainer管理界面,这样一个利用公网地址可以进行远程访问的隧道就创建好了,隧道使用了cpolar的公网域名,无需自己购买云服务器,可节省大量资金。使用cpolar创建隧道即可发布到公网进行远程访问,新域名登录,可能需要重新登陆!

4. 固定Portainer CE公网地址

由于以上使用cpolar所创建的隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化。

注意需要将cpolar套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。【cpolar.cn已备案】

登录cpolar官网,点击左侧的预留,选择保留二级子域名,地区选择china vip top,然后设置一个二级子域名名称,填写备注信息,点击保留。

保留成功后复制保留的二级子域名地址:

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理------隧道列表,找到所要配置的隧道,点击右侧的编辑

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名

  • Sub Domain:填写保留成功的二级子域名

  • 地区: China VIP

点击更新

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

最后,我们使用固定的公网地址访问 Portainer CE管理界面可以看到访问成功,一个永久不会变化的远程访问方式即设置好了。

接下来就可以随时随地进行公网访问管理Portainer CE了,把公网地址分享给身边的人,还可以方便团队协作。自己用的话,无需云服务器,还可以实现异地远程访问!以上就是如何在Linux Ubuntu系统本地安装Portainer CE的全部过程。

容器管理从未如此简单,我的运维效率跃升记!PortainerCE+cpolar让远程监控和操作成为可能,加班时间减少50%。

本篇文章知识点来源[cpolar官网][https://www.cpolar.com]

相关推荐
原神启动17 小时前
K8S(七)—— Kubernetes Pod 基础概念与实战配置
云原生·容器·kubernetes
我的golang之路果然有问题7 小时前
Docker 之常用操作(实习中的)
java·运维·笔记·docker·容器·eureka
牛奔7 小时前
Docker 容器无法停止的排障与解决全过程
运维·docker·云原生·容器·eureka
赵文宇(温玉)7 小时前
Docker的生态与商业化
docker·容器·eureka
牛奔17 小时前
Docker Compose 两种安装与使用方式详解(适用于 Docker 19.03 版本)
运维·docker·云原生·容器·eureka
木童66218 小时前
Kubernetes 操作管理完全指南:从陈述式到声明式,覆盖全生命周期
云原生·容器·kubernetes
不想画图19 小时前
Kubernetes(三)——组网概念和基础操作指令
云原生·容器·kubernetes
青州从事5211 天前
20260108【mac】【brew】【docker】安装
macos·docker·eureka
Fortune_yangyang1 天前
Kubernetes 操作管理
云原生·容器·kubernetes
放寒假脚后跟v1 天前
Pod 的 YAML 文件中 exitCode 字段的具体含义、不同取值代表的场景
运维·云原生·容器·kubernetes·k8s