Portainer 构建为可在 Docker 上运行,并且非常易于部署。除非另有说明,否则 Portainer 部署方案可以在任何平台上执行。
快速入门
如果您运行的是Linux,则部署Portainer的过程非常简单:
$ docker volume create portainer_data
$ docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
现在,您现在可以通过访问运行 Portainer 的服务器上的端口 9000 来使用 Portainer 。
在 Swarm 集群内部
在 Swarm 集群中部署 Portainer 之前,应确保正确配置 Docker 和 Swarm 。您可以参考 疑难解答 部分,以确保您已正确配置环境。
按照上述步骤,您已经准备好使用我们推荐的启用代理的部署以在Swarm集群中部署 Portainer 。 注意:此设置将假定您正在 Swarm 管理器节点上执行以下指令。
$ curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml
$ docker stack deploy --compose-file=portainer-agent-stack.yml portainer
查看 代理 部分,以查找有关如何将现有 Portainer 实例连接到手动部署的 Portainer 代理的更多详细信息。
持久化 Portainer 数据
默认情况下,Portainer 将其数据存储在Linux上的 /data
文件夹下(在Windows上是 C:\\data
)。
在重新启动/升级 Portainer 容器之后,您需要保留 Portainer 数据以保留您的更改。您可以在 Linux 上使用绑定挂载来将数据持久保存在 Docker 主机文件夹中:
$ docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /path/on/host/data:/data portainer/portainer
Windows
Docker for Windows 10 支持运行 Linux 和 Windows 容器,并且您需要根据所使用的容器类型使用不同的启动命令。Windows Server 仅支持本地 Windows 容器。
注意:在运行以下命令之前,必须创建要在其中保留数据的文件夹。例如,如果您希望数据保留在 C:\\ProgramData\Portainer
中,则需要在 C:\\ProgramData
中创建 Portainer 目录,因为默认情况下该目录不存在。
Linux容器示例:
$ docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v C:\ProgramData\Portainer:/data portainer/portainer
本地 Windows 容器示例:
$ docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v \\.\pipe\docker_engine:\\.\pipe\docker_engine -v C:\ProgramData\Portainer:C:\data portainer/portainer
Docker Swarm服务
如果你将为 Docker Swarm 服务部署 Portainer :
$ docker service create \
--name portainer \
--publish 9000:9000 \
--publish 8000:8000 \
--replicas=1 \
--constraint 'node.role == manager' \
--mount type=bind,src=//path/on/host/data,dst=/data \
portainer/portainer
注意:Swarm 服务示例将为集群中的每个主机持久保存 Portainer 数据在 /path/on/host/data
中。如果将容器重新安排在另一个节点上,则现有的 Portainer 数据可能不可用。在 Swarm 集群的所有节点上持久存储数据不在本文档的讨论范围之内。
高级 Portainer 部署
高级 Portainer 部署方案。
声明要在部署时进行管理的Docker环境
您可以通过 CLI 指定您希望 Portainer 管理的初始环境 ,使用该 -H
选项 tcp://
协议连接到远程 Docker 环境:
$ docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v portainer_data:/data portainer/portainer -H tcp://<REMOTE_HOST>:<REMOTE_PORT>
请确保使用要管理的 Docker 服务器的地址/端口替换 REMOTE_HOST
和 REMOTE_PORT
。
您还可以绑定安装 Docker 套接字来管理本地 Docker 环境(仅在 Unix 套接字可用的环境中可用):
$ docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer -H unix:///var/run/docker.sock
如果您的 Docker 环境受到 TLS 的保护,则需要确保您能够访问 CA ,用于访问 Docker 引擎的证书和公钥。
您可以通过 Portainer UI 上载所需的文件,也可以使用 CLI 上的 --tlsverify
选项。
Portainer 将尝试使用以下路径指向先前指定的文件(在Linux上,有关Windows的详细信息,请参阅配置部分):
- CA:
/certs/ca.pem
- 证书:
/certs/cert.pem
- 公钥:
/certs/key.pem
您必须确保这些文件在容器中使用 绑定安装:
$ docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /path/to/certs:/certs -v portainer_data:/data portainer/portainer -H tcp://<DOCKER_HOST>:<DOCKER_PORT> --tlsverify
如果您想分别更改 CA 、证书和密钥文件的默认路径,也可以使用--tlscacert
、 --tlscert
和 --tlskey
选项:
$ docker run -d -p 9000:9000 -p 8000:8000 --name portainer -v /path/to/certs:/certs portainer/portainer -H tcp://<DOCKER_HOST>:<DOCKER_PORT> --tlsverify --tlscacert /certs/myCa.pem --tlscert /certs/myCert.pem --tlskey /certs/myKey.pem
$ docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /path/to/certs:/certs -v portainer_data:/data portainer/portainer -H tcp://<DOCKER_HOST>:<DOCKER_PORT> --tlsverify --tlscacert /certs/myCa.pem --tlscert /certs/myCert.pem --tlskey /certs/myKey.pem
使用 SSL 保护 Portainer
默认情况下,Portainer 的 Web 界面和 API 通过 HTTP 公开。这是不安全的,建议在生产环境中启用 SSL 。
要做到这一点,你可以使用下面的选项 --ssl
、--sslcert
以及 --sslkey
:
$ docker run -d -p 443:9000 -p 8000:8000 --name portainer --restart always -v ~/local-certs:/certs -v portainer_data:/data portainer/portainer --ssl --sslcert /certs/portainer.crt --sslkey /certs/portainer.key
您可以使用以下命令来生成所需的文件:
$ openssl genrsa -out portainer.key 2048
$ openssl ecparam -genkey -name secp384r1 -out portainer.key
$ openssl req -new -x509 -sha256 -key portainer.key -out portainer.crt -days 3650
请注意,也可以使用 Certbot 生成证书和密钥。但是,由于 Docker 在 符号链接 方面存在问题,因此,如果您使用 Certbot ,则将需要将“live”和“archive”目录同时作为卷传递(如下所示)。
docker run -d -p 9000:9000 -p 8000:8000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /root/portainer/data:/data \
-v /etc/letsencrypt/live/<redacted>:/certs/live/<redacted>:ro \
-v /etc/letsencrypt/archive/<redacted>:/certs/archive/<redacted>:ro \
--name portainer \
portainer/portainer:1.13.4 --ssl --sslcert /certs/live/<redacted>/cert.pem --sslkey /certs/live/<redacted>/privkey.pem
通过 docker-compose 部署 Portainer
您可以使用 docker-compose 部署Portainer。
这是一个示例 compose 文件:
version: '2'
services:
portainer:
image: portainer/portainer
command: -H unix:///var/run/docker.sock
restart: always
ports:
- 9000:9000
- 8000:8000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
volumes:
portainer_data:
单击此处 下载撰写文件。
无 docker 部署 Portainer
每个版本页面上都提供 Portainer 二进制文件:Portainer版本
下载二进制文件并将其解压缩到磁盘上的某个位置:
$ cd /opt
$ wget https://github.com/portainer/portainer/releases/download/1.23.2/portainer-1.23.2-linux-amd64.tar.gz
$ tar xvpfz portainer-1.23.2-linux-amd64.tar.gz
然后,只需使用 portainer 二进制文件,就像在 Docker 中使用 CLI 标志一样即可。
注意:默认情况下,Portainer 会尝试将其数据写入 /data
文件夹。您必须首先确保此文件夹存在(或通过更改其使用的路径 --data
,请参见下文)。
$ mkdir /data
$ cd /opt/portainer
$ ./portainer --template-file "${PWD}/templates.json"
您可以使用该 -p
选项在另一个端口上提供 Portainer :
$ ./portainer -p :8080
您可以更改 Portainer 用来存储其数据的文件夹,使用 --data
选项:
$ ./portainer --data /opt/portainer-data
[译自 Portainer 官方文档:部署 ]