Portainer 中文文档:部署

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_HOSTREMOTE_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 官方文档:部署 ]

posted @ 2020-04-03 08:52  Yogile  阅读(8944)  评论(0编辑  收藏  举报