7.5 Portainer面板

摘要
Portainer 是一个轻量级的 Docker 环境管理图形界面。对于不熟悉命令行的同学来说,它能帮你更直观、更方便地管理容器、镜像、网络和数据卷等资源。有了它,监控和管理 Docker 环境会变得非常简单。
  • 部署并运行 Portainer 服务。
  • 熟悉 Portainer 的基本操作。
  • 学习如何在 Portainer 图形化界面中完成 Docker 的常用管理任务。

首先,我们需要创建一个 Docker 数据卷。这个数据卷的作用是持久化存储 Portainer 的配置信息,这样即使 Portainer 容器被删除或重建,我们的配置也不会丢失。

bash

docker volume create portainer_data

接下来,我们使用 docker run 命令来启动 Portainer 服务。

bash

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:latest
命令参数解析

这条命令看起来有点长,我们来分解一下各个参数的含义:

  • -d: 表示在后台(detached mode)运行容器。
  • -p 8000:8000-p 9443:9443: 将主机的端口映射到容器的端口。9443 端口用于访问 Portainer 的 Web 界面(HTTPS),8000 端口用于 Edge Agent。
  • --name portainer: 给容器起一个好记的名字,方便我们以后管理。
  • --restart=always: 设置容器的重启策略。always 表示无论何种原因导致容器停止,Docker 都会自动重启它,保证了服务的高可用性。
  • -v /var/run/docker.sock:/var/run/docker.sock: 这是一个关键的挂载。它将主机上的 Docker socket 文件映射到容器内部。Portainer 就是通过这个文件来与 Docker 守护进程通信,从而实现对 Docker 的管理。
  • -v portainer_data:/data: 将我们第一步创建的 portainer_data 数据卷挂载到容器的 /data 目录,用于存放 Portainer 的数据。
  • portainer/portainer-ce:latest: 指定要使用的镜像,这里我们用的是 Portainer 社区版(Community Edition)的最新版本。

执行完 docker run 命令后,我们可以用 docker ps 来检查 Portainer 容器是否成功运行。

bash

docker ps

如果看到 portainer 容器正在运行(UP),就说明部署成功了。

现在,打开你的浏览器,访问 https://<服务器IP>:9443。请将 <服务器IP> 替换成你服务器的实际 IP 地址。

关于安全证书
由于 Portainer 默认使用自签名 SSL 证书,你的浏览器可能会提示“连接不安全”或“证书错误”。这是正常现象,因为证书不是由受信任的证书颁发机构(CA)签发的。在我们的实验环境中,可以大胆地选择“高级”并“继续前往”,信任该证书即可。

首次访问时,Portainer 会要求你创建一个管理员账户。设置一个用户名和安全的密码,然后点击“Create user”按钮。

创建完管理员后,你会进入环境设置页面。选择“Get Started”,然后选择要管理的 Docker 环境。在这里,我们选择本地(Local)环境进行管理。

点击连接后,你就会看到 Portainer 的主仪表盘,这里展示了 Docker 环境的概览信息。花点时间熟悉一下界面布局吧!

可视化操作
接下来的所有任务,请尝试在 Portainer 的可视化界面中完成,这是一个从命令行到图形化工具过渡的绝佳练习。
  1. 添加镜像仓库: 在 Portainer 中添加一个新的镜像仓库(Registry),地址为 harbor.seahi.me

  2. 管理镜像: 尝试从刚刚添加的 harbor.seahi.me 仓库中,拉取 python:alpine 这个镜像。

  3. 清理镜像: 找到并删除一些不再需要的或者临时的镜像,练习镜像管理。

  4. 部署应用栈: 这是一个综合任务。请将下面的命令行操作,转换为在 Portainer 中的等效操作,来部署一个 Typecho 博客应用。

    Typecho 是什么?
    Typecho 是一个轻量、高效的开源博客程序。通过这个任务,你将学会如何在 Portainer 中创建网络、数据卷,并部署一个由数据库和 Web 服务组成的简单应用。
    

    需要转换的命令:

    • 第一步:创建资源

      bash

      # 创建一个专用的网络,让博客和数据库容器在里面通信
      docker network create typecho-network
      # 创建数据卷,分别用于存放博客内容和数据库文件
      docker volume create typecho-content
      docker volume create typecho-mysql
    • 第二步:部署 MySQL 数据库

      bash

      docker run -d \
        --name typecho-mysql \
        --network typecho-network \
        -e MYSQL_ROOT_PASSWORD=sqlpassword \
        -e MYSQL_DATABASE=typecho \
        -e MYSQL_USER=typecho \
        -e MYSQL_PASSWORD=typecho \
        -v typecho-mysql:/var/lib/mysql \
        mysql:8.3.0
    • 第三步:部署 Typecho 服务

      bash

      docker run -d \
        --name typecho-server  \
        --network typecho-network \
        -e TYPECHO_SITE_URL=http://<你的IP地址> \ # 记得替换成你的IP
        -p 8080:80 \
        -v typecho-content:/app/usr \
        joyqi/typecho:1.2.1-php7.4-apache
任务完成
完成以上所有操作后,你就基本掌握了 Portainer 的核心用法。试着访问 http://<你的IP地址>:8080,看看你的 Typecho 博客是不是已经成功运行了?