Docker - 配置 Portainer



Portainer 是一款轻量级的管理 UI,可以轻松管理 Docker 环境。它提供了一个直观的界面,用户可以通过它轻松部署、管理和调试容器化应用程序。使用 Portainer,您可以监控 Docker 设置,并从集中位置管理容器、镜像、卷和网络。

使用 Docker 运行 Portainer 不仅简化了设置,而且确保它受益于 Docker 的可移植性、可扩展性和易用性。通过将 Portainer 放入 Docker 容器中,您可以为自己创建一个独立的环境,该环境易于部署和维护,非常适合管理您的 Docker 基础设施。

Docker 化 Portainer 的先决条件

在 Docker 化 Portainer 之前,请确保已满足以下先决条件:

  • 安装 Docker - 确保您的系统中已安装 Docker。您可以从Docker 官方网站下载并安装 Docker。
  • Docker 基础知识 - 了解 Docker 的基本概念,例如镜像、容器和 Dockerfile 的概述。
  • 访问终端 - 您必须打开一个命令行终端来执行 Docker 命令。
  • 互联网连接 - 在本文中,我们将使用 Docker Hub 上提供的 Portainer 官方镜像。需要互联网连接,以便 Docker 可以拉取此镜像。
  • Docker Hub 帐户 - 对于希望将自定义镜像推送到注册表的用户,另一个推荐的资源是 Docker Hub 帐户。

在完成所有这些先决条件后,您现在就可以开始设置您的 Portainer 项目并在此处将其 Docker 化。

设置 Portainer 项目

让我们创建一个基本项目结构。此设置将帮助我们组织文件和配置,并且可以更轻松地管理和版本控制 Portainer 部署。

步骤 1:创建项目目录

让我们为我们的 Portainer 项目创建一个专用目录。此目录将包含所有必要的文件,例如 Dockerfile 和任何其他配置文件。

$ mkdir portainer-project
$ cd portainer-project

步骤 2:初始化版本控制和 Docker

接下来,您可以在项目目录和 Docker 文件中初始化一个 Git 存储库。

$ git init
$ docker init
Initialize Version Control and Docker

步骤 3:创建配置文件

根据您的需要,您还可以创建一个配置文件来自定义 Portainer 部署。例如,您可以添加环境变量或指定一个卷用于持久数据存储。

创建 config.yml 文件(如果需要) -

$ touch config.yml

目前,您可以将其保留为空或根据需要添加配置。

现在我们已经设置了项目目录,让我们概述 Portainer 项目所需的结构和依赖项。

portainer-project/

│

├── Dockerfile

├── config.yml      # Optional: Configuration file for Portainer

└── README.md       # Optional: Documentation for your project

在本地运行 Portainer

在使用自定义 Dockerfile 将 Portainer Docker 化之前,让我们首先使用 Docker 在本地运行 Portainer。这将确保 Portainer 正确运行,并为以后创建 Dockerfile 提供良好的基线。

步骤 1:从 Docker Hub 拉取 Portainer 镜像

我们将首先从 Docker Hub 拉取官方 Portainer 镜像。此镜像已包含运行 Portainer 所需的一切。

$ docker pull portainer/portainer-ce
Pull the Portainer Image

此镜像是 Portainer 的社区版,它是免费的,并且包含管理 Docker 环境的所有功能。

步骤 2:将 Portainer 作为 Docker 容器运行

现在,我们可以使用我们拉取的镜像来运行 Portainer 容器。以下命令在端口 9000 上运行 Portainer,这是 Portainer Web 界面的默认端口。

$ docker run -d -p 9000:9000 --name=portainer --restart=always -v
   /var/run/docker.sock:/var/run/docker.sock 
   -v portainer_data:/data portainer/portainer-ce
Run Portainer as a Docker Container

命令分解

  • -d - 以分离模式(在后台)运行容器。
  • -p 9000:9000 - 将主机上的端口 9000 映射到容器中的端口 9000。
  • --name=portainer - 将容器命名为 portainer。
  • --restart=always - 确保 Portainer 容器在停止或系统重新启动时自动重新启动。
  • -v /var/run/docker.sock:/var/run/docker.sock - 挂载 Docker 套接字以允许 Portainer 与主机上的 Docker 守护程序通信。
  • -v portainer_data:/data - 创建一个名为 portainer_data 的 Docker 卷以持久化 Portainer 的数据,例如设置和配置。

步骤 3:访问 Portainer Web 界面

您现在可以通过打开 Web 浏览器并导航到以下位置来访问 Portainer Web 界面:https://127.0.0.1:9000

Access the Portainer Web Interface

系统会提示您创建管理员用户并设置初始 Portainer 环境。您可以按照屏幕上的说明完成设置。

步骤 4:验证 Portainer 设置

您可以通过登录 Web 界面来检查 Portainer 是否正确运行。您应该会看到 Portainer 仪表板。您可以选择您的环境,例如本地环境,并且您将能够看到本地机器中的所有镜像和容器。

Verify the Portainer Setup

在本地运行并验证 Portainer 后,我们准备创建一个 Dockerfile 来 Docker 化我们的自定义 Portainer 设置。

创建 Dockerfile 和构建镜像

让我们现在创建 Dockerfile。在您的 portainer-project 目录中,创建一个名为 Dockerfile 的文件 -

$ touch Dockerfile

步骤 1. 定义 Dockerfile 内容

在文本编辑器中打开 Dockerfile 并添加以下内容 -

# Use the official Portainer community edition image as the base image
FROM portainer/portainer-ce:latest

# Set environment variables (if any)
ENV PORTAINER_ADMIN_PASSWORD='yourpassword'

# Expose the Portainer port
EXPOSE 9000

# Define the default command to run Portainer
CMD ["portainer"]

Dockerfile 分解

  • FROM portainer/portainer-ce:latest - 它指定我们使用最新的官方 Portainer 社区版镜像作为我们自定义 Dockerfile 的基础镜像。
  • ENV PORTAINER_ADMIN_PASSWORD='yourpassword' - (可选)它设置 Portainer 管理员密码的环境变量。
  • EXPOSE 9000 - 此行公开端口 9000,Portainer 的 Web 界面使用此端口。
  • CMD ["portainer"] - 这是运行 Portainer 的默认命令。

步骤 2:构建 Docker 镜像

使用此 Dockerfile,我们可以使用以下命令构建您的自定义 Portainer 镜像 -

$ docker build -t my-portainer-image .

-t my-portainer-image - 将构建的镜像标记为 my-portainer-image。

.: 指定当前目录作为构建上下文。

Build the Docker Image

步骤 3:验证镜像构建

我们可以通过列出所有 Docker 镜像来验证我们的自定义镜像是否已成功创建 -

$ docker images

您应该在可用镜像中看到 my-portainer-image

Verify the Image Build

运行 Portainer Docker 容器

现在我们已经准备好了 Docker 镜像,我们可以使用自定义 Portainer 镜像运行 Docker 容器。

步骤 1:运行 Portainer 容器

我们可以使用以下命令从您的自定义 Portainer 镜像启动容器 -

$ docker run -d -p 9000:9000 --name=portainer-container 
   --restart=always -v /var/run/docker.sock:/var/run/docker.sock 
      -v portainer_data:/data my-portainer-image
Run the Portainer Container

命令分解

  • -d - 以分离模式(在后台)运行容器。
  • -p 9000:9000 - 将主机上的端口 9000 映射到容器中的端口 9000。这允许您通过 https://127.0.0.1:9000 访问 Portainer Web 界面。
  • --name=portainer-container - 为容器分配一个名称,以便在 Docker 命令中更容易引用。
  • --restart=always - 配置 Docker 在容器停止或主机系统重新启动时自动重新启动容器。
  • -v /var/run/docker.sock:/var/run/docker.sock - 将 Docker 套接字挂载到容器中,以便 Portainer 可以与主机上的 Docker 守护程序通信。
  • -v portainer_data:/data - 创建并挂载一个名为 portainer_data 的 Docker 卷以持久化 Portainer 的数据,例如配置和设置。
  • my-portainer-image - 指定您之前构建的自定义 Docker 镜像的名称。

步骤 2:访问 Portainer Web 界面

由于容器正在运行,我们可以打开 Web 浏览器并导航到:https://127.0.0.1:9000

我们应该会看到 Portainer 登录屏幕。我们可以使用在初始设置期间设置的管理员凭据登录。

结论

在本节中,我们讲解了如何通过创建项目、了解项目所需的依赖项、创建 Dockerfile 以及运行 Portainer 容器来将 Portainer 容器化。

我们创建了一个可移植且易于维护的环境,通过该环境,我们将能够以更高的效率管理我们的 Docker 环境。它还确保我们的设置可复制且一致,这有助于轻松维护容器。

您可以进一步自定义 Portainer,将其与您的 CI/CD 管道集成,或使用它管理复杂的 Docker 环境。

Portainer 容器化的常见问题

关于 Portainer 容器化,有一些非常常见的问题 (FAQ),本节尝试简要回答它们。

1. 如何在 Docker 容器中设置 Portainer?

要在 Docker 容器中设置 Portainer,请使用官方 Portainer 镜像创建一个 Dockerfile。使用环境变量或容器内的配置文件在该 Docker 容器内配置 Portainer 的设置。公开所需的端口并启动容器。考虑映射一个卷来持久化 Portainer 的数据和配置。

2. 使用 Portainer 与 Docker 有什么好处?

Portainer 是一种通过基于 Web 的界面管理 Docker 的简单方法,因为它提供了一个直观的界面,可以加深用户体验并与构成 Docker 生态系统的多数实体(例如容器、镜像和网络等)进行交互。这使得创建和管理容器、部署应用程序以及资源使用变得更加容易。

3. 如何保护 Portainer 访问权限?

通过在 Portainer 界面中设置身份验证和授权来锁定对 Portainer 的访问。您可以提供基于密码的身份验证,或使用与外部身份验证提供程序的多种集成之一。此外,请考虑根据 IP 地址或其他条件限制对 Portainer 的访问。

广告