Portainer 是一个轻量级的容器管理工具,它提供了一个图形化界面来管理 Docker 容器、镜像、网络和卷。以下是使用 Docker 部署 Portainer 的基本步骤以及Portainer管理多个Docker的设置步骤:
Portainer安装步骤
-
安装 Docker:
确保你的系统上已经安装了 Docker。如果还没有安装,可以从 Docker 官网下载并安装适合你操作系统的 Docker 版本。Centos安装可以参考Docker和Docker-Compose安装。 -
拉取 Portainer CE 镜像:
使用 Docker 命令拉取 Portainer CE 的最新镜像。docker pull portainer/portainer-ce
-
创建 Portainer 持久化:
Portainer 需要一个数据卷来持久化存储数据。运行以下命令来创建一个名为portainer_data
的卷:docker volume create portainer_data
-
运行 Portainer CE 容器:
使用以下命令启动 Portainer容器,并将其与 Docker 主机的 Unix 套接字和创建的数据卷连接起来。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
在这个命令中:
-d
表示以守护进程模式运行容器。-p 9000:9000
将容器的 9000 端口映射到宿主机的 9000 端口,这样可以通过浏览器访问 Portainer 的 Web 界面。--name=portainer
为容器指定一个名称。--restart=always
确保容器在退出时总是尝试重启。-v /var/run/docker.sock:/var/run/docker.sock
将 Docker 主机的 Unix 套接字挂载到容器中,以便 Portainer 可以与 Docker 守护进程通信。详细说明参看概念解释。-v portainer_data:/data
将之前创建的portainer_data
卷挂载到容器中,用于存储 Portainer 的数据。
-
访问 Portainer CE Web 界面:
打开浏览器,输入http://<your-server-ip>:9000
访问 Portainer 的 Web 界面,其中<your-server-ip>
是运行 Portainer 容器的服务器的 IP 地址。 -
初始化 Portainer:
首次访问 Portainer 时,会要求你设置管理员用户名和密码。设置完毕后,你将能够登录并开始使用 Portainer。
-
开始管理 Docker 环境:
登录后,Portainer 的仪表板会显示你的 Docker 环境概览,包括容器、镜像、网络和卷等信息。你可以开始使用 Portainer 的各种功能来管理你的 Docker 环境。
请注意,具体的部署步骤可能会根据你的具体需求和环境配置有所不同。如果你需要更详细的指导或遇到问题,可以查阅 Portainer 的官方文档或社区支持。
请注意,生产环境中使用 Portainer 时,你可能需要考虑安全性,比如设置更安全的认证方式,以及保护 Portainer 的 Web 界面不被未授权访问。
以上步骤提供了一个基本的 Portainer 部署过程。根据你的具体需求,可能还需要进行一些额外的配置和调整。
管理多个Docker服务
要使用 Portainer 管理多个 Docker 服务,通常需要在一台服务器上安装 Portainer,并将其配置为管理端(master),然后通过添加环境(envrironment)的方式将其他 Docker 主机(节点)加入到 Portainer 的管理中。以下是详细的设置步骤:
-
环境准备:确保所有需要管理的 Docker 主机都已经安装了 Docker,并且网络互通。
-
在管理端安装 Portainer: 参看上面的安装步骤。
-
配置 Docker 主机:
- 在需要被管理的 Docker 主机上,需要开放 Docker API 端口,通常做法是在 Docker 服务配置文件
docker.service
中添加或修改-H tcp://0.0.0.0:2375
参数,然后重启 Docker 服务。 - 修改配置
/lib/systemd/system/docker.service
docker.service
的位置可以通过命令sudo find / -name docker.service
查找ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
- 重启服务
systemctl daemon-reload systemctl restart docker
- 在需要被管理的 Docker 主机上,需要开放 Docker API 端口,通常做法是在 Docker 服务配置文件
-
添加端点:
-
登录 Portainer Web UI,点击左侧菜单的 “Envrironments” 选项。
-
点击 "+ Add envrironment " 图标添加新的envrironment。
-
选择 “Docker” 类型,并输入目标 Docker 主机的地址和开放的 API 端口(通常是 2375,如果更改过请使用实际端口)。
-
点击 “Add” 完成端点添加。
-
-
管理多个 Docker 环境:
- 添加完端点后,Portainer 就可以管理所有配置的 Docker 主机了。
- 你可以在 Portainer 的 Dashboard 查看所有 Docker 主机的概览信息。
- 可以分别进入每个端点的管理界面,执行容器的创建、启动、停止等操作。
-
注意事项:
- 确保防火墙规则允许访问 Docker API 端口。
- 管理端 Portainer 容器需要访问所有被管理 Docker 主机的 API 端口。
通过以上步骤,你可以使用 Portainer 来集中管理多个 Docker 服务。
概念解释
-v /var/run/docker.sock:/var/run/docker.sock
解释:
它的作用是将主机上的 Docker Unix 套接字/var/run/docker.sock
挂载到容器内的相同路径/var/run/docker.sock
。Unix 套接字是一种特殊的文件,提供了一个进程间通信的机制。
这种挂载通常用于以下几个场景:-
容器管理:当需要从容器内部管理 Docker 容器时,例如使用 Docker Compose 或 Portainer 这样的工具,它们需要与 Docker 守护进程通信。通过挂载 Unix 套接字,容器内的进程能够直接与主机上的 Docker 守护进程交互。
-
服务发现:在容器编排和服务网格中,容器可能需要发现和通信其他容器或服务。挂载 Unix 套接字可以使得容器能够使用 Docker 的服务发现机制。
-
安全性:虽然挂载 Unix 套接字可以提供便利,但它也可能带来安全风险。因为任何能够访问这个套接字的容器都能够执行 Docker 命令,这可能被恶意利用来危害宿主机。因此,通常建议仅在信任的容器中挂载 Unix 套接字,并且使用 Docker 的安全特性来限制权限。
-
参考文章
Install Portainer CE with Docker on Linux
portainer官网镜像仓库
Portainer管理多台Docker容器环境
Portainer管理多个Docker服务