部署 Docker 的图形化管理工具 Portainer

电子说

1.3w人已加入

描述

一、Flexus 云服务器 X 实例介绍

云服务器是一种基于云计算技术的虚拟服务器,提供灵活的计算资源和存储空间。用户可以通过互联网访问和管理云服务器,无需购买和维护物理硬件。云服务器具有高可用性、可扩展性和成本效益,适用于各种应用场景,如网站托管、数据存储和大数据分析。用户可以根据需求动态调整资源配置,确保系统的高效运行和资源的最佳利用。

华为云下一代云服务器 Flexus X 实例焕新上线,新产品基于用户业务负载动态和内存峰值画像,动态推荐规格,减少算力浪费,提升资源利用率,六倍性能,旗舰体验,覆盖高科技、零售、金融、游戏等行业大多数通用工作负载场景。

Docker

Flexus X 实例通过和其他服务组合,具备计算、镜像安装、网络、存储、安全等能力,您可根据业务需要灵活配置各资源。

Docker

本次测评使用的规格是:4 核 12G-100G-3M 规格的 Flexus X 实例基础模式

Docker

二、Flexus 云服务器 X 实例配置

2.1 重置密码

购买服务器的时候可以提前设置用户名和密码,因为我这里跳过了,所以购买完成后需要重置密码,会短信或站内消息通过你的云服务器信息,重点是公网 IP 地址和用户名,首先打开你的服务器控制台,选择重置密码

Docker

勾选自动重启,点击确定即可

Docker

2.2 服务器连接

华为云服务器提供了多种链接方式,如使用控制台提供的 VNC 方式登录、使用 Linux/Mac OS 系统主机登录 Linux 弹性云服务器(即 ssh root@192.168.48.78 命令)或者使用 Putty、Xshell 等工具登录 Linux 弹性云服务器。

我个人习惯使用 MobaXterm 这款软件,添加 SSH 连接,输出公网 IP、用户名和端口(默认 22),连接即可。

Docker

2.3 安全组配置

安全组是一个逻辑上的分组,为同一个 VPC 内的云服务器提供访问策略。用户可以在安全组中定义各种访问规则,当云服务器加入该安全组后,即受到这些访问规则的保护。

系统为每个网卡默认创建一个默认安全组,默认安全组的规则是对出方向上的数据报文全部放行,入方向访问受限。您可以使用默认安全组,也可以根据需要创建自定义的安全组。

Docker

主要需要填写优先级(默认填 1 即可)、协议端口(协议一般为 TCP 或 UDP,端口一般选择你项目需要暴露的端口即可),描述(选填,一般会填写此端口的用途以免忘记了),其他默认点击确定即可。安全组配置主要是暴露端口可以给外网访问。

Docker

如果还不清楚可以参考文档:安全组配置示例
 

2.4 Docker 环境搭建

本次服务器环境是 ubuntu 系统镜像,需要自己安装 docker 环境

使用 apt-get 命令安装 docker 及其配置

#安装必要工具包 $ sudo apt-get install     apt-transport-https     ca-certificates     curl     gnupg-agent     software-properties-common#添加 Docker GPG 秘钥 $ sudo curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -#配置仓库源 $ sudo add-apt-repository       "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu       $(lsb_release -cs)       stable" #更新 apt 包索引 $ sudo apt-get update#安装 docker$ sudo apt-get install docker-ce docker-ce-cli containerd.io#添加 docker 镜像源 $ sudo vim /etc/docker/daemon.json{    "registry-mirrors": [        "https://ustc-edu-cn.mirror.aliyuncs.com/",        "https://docker.mirrors.ustc.edu.cn",        "https://docker.nju.edu.cn",        "https://ccr.ccs.tencentyun.com/",        "https://docker.m.daocloud.io/",        "https://dockerproxy.com",    ]}#重启 $ sudo systemctl daemon-reload$ sudo systemctl restart docker

 测试 docker 安装是否成功

root@flexusx-c6b3:~# docker -vDocker version 27.2.0, build 3ab4256```

检查 docker 服务状态

root@flexusx-c6b3:~# systemctl status docker* docker.service - Docker Application Container Engine     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)     Active: active (running) since Fri 2024-08-30 15:53:45 CST; 17h agoTriggeredBy: * docker.socket       Docs: https://docs.docker.com   Main PID: 24912 (dockerd)      Tasks: 13     Memory: 24.7M        CPU: 3.778s     CGroup: /system.slice/docker.service             `-24912 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

检查 docker compose 版本

root@flexusx-c6b3:~# docker compose versionDocker Compose version v2.29.2

三、Flexus 云服务器 X 实例部署 Portainer

3.1 Portainer 介绍

Portainer 是一个通用的容器管理平台,Portainer 的多集群和多设备支持意味着您可以在任何地方管理任何类型的环境(Docker 和 Kubernetes,在开发笔记本电脑上、在您的 DC、在云端或边缘运行),并且我们不要求您运行任何特定的 Kubernetes 发行版。 我们提供统一的用户体验,使采用混合和多云部署变得更加快速,提高用户管理其部署的效率,甚至允许您在一个管理窗格中混合使用 Docker 和 Kubernetes 端点。

• 多环境支持 Portainer 支持 Docker 和 Kubernetes,能够管理任何类型的环境,无论是在本地还是在云端。

• 用户友好的界面它提供了一个直观的 Web 界面,使得即使是非技术用户也能轻松上手。

• 灵活性用户无需依赖特定的 Kubernetes 发行版,可以根据需要自由选择。

• 安全性 Portainer 支持访问控制和安全策略,确保容器环境的安全。

• 集成与扩展性它能够与现有的 CI/CD 管道和其他 DevOps 工具集成,支持自动化部署和管理。

• 社区支持作为一个开源项目,Portainer 拥有活跃的社区,不断有新功能和改进被加入。

Docker

Portainer 的设计目标是简化混合云和多云部署的采用过程,提高用户管理部署的效率,并允许在一个管理面板中混合使用 Docker 和 Kubernetes 端点。它提供了一个直观的 Web 界面,使得用户可以轻松地创建、管理和监控容器、容器堆栈、网络和服务。

• 官网:https://www.portainer.io/
 

• Github:https://github.com/portainer/portainer
 

3.2 Portainer 部署

• 系统要求

• 创建 docker-compose.yml

version: "3.5"services:  portainer:    image: portainer/portainer-ce:2.21.1    container_name: portainer    restart: always    ports:      - "8000:8000"      - "9443:9443"      - "9000:9000"    volumes:      - /var/run/docker.sock:/var/run/docker.sock      - ./portainer_data:/data    command:      - "--http-enabled"

• ports:配置访问端口

• volumes:配置访问卷,映射容器内部文件路径到本地

• http-enabled:用于启用 http

如果将上述代码片段保存在名为 docker-compose.yml 的文件中,则只需从同一文件夹中运行 docker compose up -d 即可自动拉取 Portainer 镜像,并创建并启动一个容器。up 表示启动服务,-d 表示在后台执行。docker-compose down 命令用于停止和清理由 docker-compose up 启动的服务。

• 配置安全组

在 Flexus 云服务器 X 实例的安全组管理页面,添加入方向规则,接下来我们启动服务需要监听 9000/9443 端口,所以添加安全组为 TCP:9000/9443 协议端口。

Docker

这是因为端口 9443 仅接受 HTTPS 协议,而不接受 HTTP 请求。

• 访问 9443 端口时地址中使用 HTTPS 协议。https://my.portainer.url:9443/
 

• 如果您启用了 HTTP 访问,则可以通过端口 9000 上的 HTTP 进行访问:http://my.portainer.url:9000/
 

• 启动服务

进入项目目录,执行 docker compose up -d 启动命令,会自动拉取容器并运行

从 Dockerhub 拉取 Portainer 镜像,地址:https://hub.docker.com/r/portainer/portainer-ce
 

root@flexusx-c6b3:~/portainer# docker-compose up -d[+] Running 12/12 ✔ portainer Pulled                                                                                                                                                                                  469.0s   ✔ 4127d56428a3 Pull complete                                                                                                                                                                        1.5s   ✔ ffdedde80950 Pull complete                                                                                                                                                                        0.8s   ✔ d40df14c1d7a Pull complete                                                                                                                                                                      463.9s   ✔ 8215717c7c10 Pull complete                                                                                                                                                                       18.8s   ✔ 542669febe7c Pull complete                                                                                                                                                                       78.5s   ✔ 6c27c7f45b54 Pull complete                                                                                                                                                                       32.7s   ✔ 47e858e07651 Pull complete                                                                                                                                                                      464.7s   ✔ dd1a5919c96d Pull complete                                                                                                                                                                       50.5s   ✔ b735e0aff190 Pull complete                                                                                                                                                                       64.5s   ✔ 6acf85cbc221 Pull complete                                                                                                                                                                       66.0s   ✔ 4f4fb700ef54 Pull complete                                                                                                                                                                       66.7s[+] Running 2/2 ✔ Network portainer_default  Created                                                                                                                                                                  0.1s ✔ Container portainer        Started

• 检查容器状态

检查 Portainer 容器状态,确保容器正常启动

root@flexusx-c6b3:~/portainer# docker psCONTAINER ID   IMAGE                           COMMAND                  CREATED             STATUS             PORTS                                                                                                                             NAMESf0b8b629c16d   portainer/portainer-ce:2.21.1   "/portainer --http-e…"   About an hour ago   Up About an hour   0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp   portainer

• 访问地址

内网:http://localhost:9000 外网:http://公网 IP:9000

• 访问结果

Docker

若出现此页面,则部署 Portainer server 成功。

3.3 Portainer 使用

服务启动后访问,可进行初始设置,第一位用户将是管理员,用户名默认为 admin,但您可以根据需要更改,设置管理员,密码密码必须至少为 12 个字符,启用或禁用统计信息收集

Docker

确定设置后,创建用户

首次安装 Portainer 时,如果您未在 5 分钟内登录并完成初始设置,容器内的 Portainer 服务将停止。

Docker

创建管理员用户后,环境向导将自动启动,该向导将帮助您开始使用 Portainer。安装过程会自动检测您的本地环境并为您进行设置,可以直接选择开始使用 Portainer。如果您想添加其他环境来管理此 Portainer 实例,请单击添加环境。

Docker

仪表板为我们提供了 Portainer 配置为与之通信的 Docker 实例的当前状态概览,如 CPU、内存信息,镜像

Docker

Portainer 官方没有支持的简体中文的设置,默认英文,可以借助翻译插件实时翻译,当然也可以借助一些开源的汉化方案,如 github.com/eysp/public/,我使用了一下但是汉化成功了,但是创建不了管理员用户,所以放弃了。

#下载解压并复制到服务器 tar -zvxf public-public.tar.gzscp -r public-public root@123.60.144.170:/root/portainer/portainer_public#修改 docker-compose.yml- volume: ./portainer_public:/public

点击本地环境的 Dashboard,查看更多环境信息,这显示了我有多少个正在运行的容器,下载的镜像数量,还可以看到 Docker 实例上可用的卷和网络的数量,还会显示正在运行的堆栈数量

Docker

左侧菜单中的 App Template,这部分可能是唯一一个不是核心 Docker 引擎直接提供的功能,它是使用从 Docker Hub 下载的容器启动常用应用程序的一种方式,支持搜索和分类查询。Portainer 默认提供约 25 种模板,模板以 JSON 格式定义的。

Docker

Docker Stack 是 Docker Swarm 环境中用于管理一组相关服务的工具,它使得在 Swarm 集群中部署、管理和扩展一组相互关联的服务变得简单,主要用于定义和编排容器化应用的多个服务。在左侧菜单 Stacks 中可以查看

Docker

左侧菜单中的 Contains 这里,你可以启动 Docker 实例上运行的容器并与之交互,点击"容器"菜单项,就会显示 Docker 实例上正在运行和已停止的所有容器的列表,我这里运行了 2 个容器。可以进行启动、停止、重启、暂停、恢复、删除等操作

Docker

点击任意一个容器,可以查看容器详情,比如容器 ID、容器名字、运行状态、创建时间、控制权限等

Docker

可以点击 add container 按钮创建容器,创建容器页面上有几个选项,应按如下方式填写,完成后,点击"部署容器",几秒钟后,运行中的容器列表就会显示新启动的容器

Name: clusterImage: russmckendrick/clusterAlways pull the image: OnPublish all exposed network ports to random host ports: On

Docker

左侧菜单 Image 是镜像,在这里可以管理、下载和上传镜像。在页面顶部,只需在框中输入 mysql,然后点击拉取镜像,就能从 Docker Hub 下载一份 mysql 容器镜像

Docker

Network 中可以使用默认网桥驱动程序快速添加网络。单击"高级设置"将带你进入一个包含更多选项的页面,其中包括使用其他驱动程序、定义子网、添加标签和限制外部访问网络,也可以删除网络和检查现有网络

Docker

Volume 中可以添加或删除加密卷。在添加加密卷时,你可以选择驱动程序,还可以填写传递给驱动程序的选项,这样就可以使用第三方驱动程序插件

Docker

Events 活动页面显示过去 24 小时内的所有活动

Docker

Host 中显示的是 docker info 命令的输出结果

Docker

左侧功能栏还有一些设置,用户相关、环境相关、日志信息、设置等

Docker

左上角管理员头像也可以进行设置,可以设置主题、修改密码等

Docker

Portainer 的强大功能,如访问控制、安全策略和集成支持,进一步增强了其易用性,使其成为 IT 专业人员和开发人员管理复杂容器环境的理想选择。作为 Docker 玩家,可以轻松的部署一些有意思的项目,更好的管理镜像和容器,可视化的管理更加容易直观。Portainer 社区版的功能模块都熟悉了一遍,常用的操作也都看一下,但是还是有很多设置配置需要研究下,期待有简体中文的官方版本,翻译的专有名词总是很奇怪,更多有趣的设置和功能就需要自行探索了。

四、总结

Portainer 提供了一个直观且用户友好的界面,使得管理 Docker 和 Kubernetes 容器变得异常简单。它的多环境支持和灵活的配置选项,让用户能够轻松地在本地、云或边缘环境中部署和管理容器。此次使用的 Flexus X 实例配置还是很高的 4 核 12G-100G-3M 规格的基础模式,本地部署创建了 2、3 个容器同时使用也很流畅,没有延迟和卡顿现象,没有网络问题或者重启掉线问题,使用体验很好,对于普通玩家都可以轻松部署有意思的项目的,无压力。对于更大规模的部署,可能需要更高的配置,以确保流畅的性能和响应速度。

华为云服务器,以卓越的性能和稳定性著称,提供灵活的资源配置,满足不同业务需求。现在华为云服务器现正进行 828 B2B 企业节,享受限时优惠,免费试用和专属技术支持,让您的业务更上一层楼。立即行动,体验华为云的高效与便捷,助力您的企业快速成长。

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分