• 私有化轻量级持续集成部署方案--01-环境配置(下)


    提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记

    Portainer#

    Portainer 概述#

    Portainer 是一个 Docker 可视化管理工具,为 Docker 提供状态提示面板、快速配置部署、数据卷管理等各种功能,基本上能满足中小型容器管理的需求。
    我也感觉 Portainer 使用起来非常方便

    Portainer 版本#

    Portainer 社区版目前具有两个镜像。portainer/portainerportainer/portainer-ce

    portainer/portainer#

    portainer/portainer1.X版本(老版本)镜像。官方现在已弃用此镜像。

    不过目前网上教程都是以此镜像为准。我刚开始也没注意,结果被坑到了。

    此镜像版本对非 SWARM云连接的 Docker Compose 语法版本只支持到 2.X,并且创建具名Volume 挂载目录时有问题(我就被这个坑到了)。

    portainer/portainer-ce#

    portainer/portainer-ce2.X 版本的新镜像。

    完全支持 Docker Compose 3.X 语法版本。

    Portainer 部署#

    在此 Portainer 通过 Docker Compose 进行部署。
    Docker Compose可观性较强,并且配置文件可以保存 以后的所有部署方案都采用这种形式。

    version: '3.9'
    
    services:
      portainer:
        image: portainer/portainer-ce
        container_name: portainer
        restart: always
        ports:
          - 9000:9000
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - /volumes/portainer:/data
    

    以上是部署 PortainerYAML格式配置文件

    • version:YMAL 格式版本,当前版本具有 122.X3.X,每个版本的语法都略有差异,不过差异并不大,一般语法没什么区别。 不过不同版本语法对 Docker 版本有一定要求,详细可以参考:https://docs.docker.com/compose/compose-file/compose-file-v3/
    • services:容器组配置,依照 YAML 格式可配置多个容器,当前只有一个 portainer 配置。services 之间可以配置 network,依赖顺序等。
      • portainer:这是服务(Service)名称,代表一个容器(Container)
        • image:容器所使用的镜像
        • container_name:容器名称
        • restart:容器重启策略。就是 docker run 时设置 restart
        • ports:映射端口号,第一个端口号是宿主机端口号,可以设置任意一个未被使用的端口号;第二个端口号是容器中所提供的端口号,容器既然理解为一个单独的系统环境,那么就需要提供一些端口号供外部访问。Portainer 提供了端口号为 9000
        • volumes:数据卷挂载,容器作为单独的系统环境,往往需要指定宿主目录对容器内目录挂载。例如数据库应用,如果不挂载宿主目录,容器删除数据款中数据就没了。
          或者挂载容器的配置文件,这样就不需要每次都进入容器内部更新配置。
          第一个可以是一个 volume 名称 或者 宿主目录 ,当直接为宿主目录 时,容器启动时会使用 宿主目录 覆盖 容器内目录 这个之后会介绍;
          第二个是容器内目录(Portainer 数据存储在容器内 /data 目录)。

    PS: 注意: Volume 挂载目录和文件时,有两种情况。目录:宿主机中可以不存在此目录,Docker 在启动容器时会自动创建目录。 文件:当挂载路径为文件时,宿主机中必须存在此文件

    配置属性中还可以设置好多参数,例如:environment,之后会使用使用,不再介绍。

    /var/run/docker.sock 是一个特殊的文件,有些容器需要提供此文件。

    文件编写完成后上传服务器执行

    docker-compose -f /yml/docker-compose/portainer.yml -p portainer up -d

    • -f: YAML 文件存放的地址,在此文件上传到了 /yml/docker-compose/ 目录,
    • -p: 设置当前 Docker Compose 名称
    • up: 根据配置文件重新构建服务,启动镜像。如果主机没有此镜像,默认情况会下载镜像(可以配置参数是否允许下载镜像)。当主机中没有此 portainer/portainer-ce 镜像时会进行下载,所有可能有些慢
    • -d: 设置为后台运行,与 docker run -d 参数一致

    成功运行后,会自动启动容器。

    并且在挂载的目下可以看到容器中的的数据

    此时就可以使用访问 Portainer 页面。

    注意:如果是云主机,需要启动 9000 端口访问策略,否则无法访问。

    Portainer 第一次访问会跳转到设置管理员用户页面

    设置完成之后,如果本地具有 Docker , 会默认连接到本地 Docker

    Portainer 页面#

    进入主页面后,第一个就是自动连接的本地 Docker , 点击可以看到 Docker 各种信息

    • Stack: Docker Compose 管理,对当前 Docker Compose 进行管理,并且可以直接上传 YAML 文件进行构建容器。目前只有一个Stackportainer
    • Container:Docker 容器管理,可以对所有容器进行管理设置。目前也只有一个容器portainer
    • Image: Docker 镜像管理,对当前 Docker 所有镜像进行管理,目前也只有一个镜像portainer/portainer
    • Volumes: Docker 数据卷管理,
    • Networks: Docker network 管理,目前只有默认的 4 个 Network

    Stack 模块#

    Stack 是用来管理 Docker Compose,目前只有一个,也就是部署的 Portainer

    Limited#

    未使用 Portainer可视化工具部署的 Docker Compose, 在 Portainer可视化工具内部是不允许操作的。

    例如 Portainer, 在 Portainer可视化工具中 Control 属性显示为 Limited, 意思就是不允许操作这个 stack

    Add Stack#

    点击 Add Stack 按钮就可以进行添加 Docker ComposePortainer 支持四种方式添加;

    1. Web editor(直接在当前页编写配置)
    2. Upload(提供本地上传 xxx.yml 文件)
    3. Repository(提供一个配置文件的 URL 地址)
    4. Custom template 自定义模板 (2.X 版本新添加的,我也没了解)

    个人比较喜欢使用 Upload 在本地使用编辑器编写完成之后上传。当然也可以使用其它方式。看使用场景和个人喜好。

    Portainer API 连接方式#

    Portainer 支持多种连接方式。 介绍一种使用 Docker API 连接方式

    API 连接方式是使用 TCP 协议访问的 Docker API 进行通信,需要设置 Docker API,允许 Docker 被访问

    Docker API 需要设置 /lib/systemd/system/docker.service 文件 ExecStart 属性

    在此设置只允许内网访问 ,其实只允许本地 IP 访问(模拟远程连接方式)

    PS:注意:设置连接主机根据实际情况设置,千万不要设置为 tcp://0.0.0.0:2375,这样极大可能会中病毒,亲测中过挖矿脚本病毒。

    设置完成后需要重启 Docker 服务

    sudo systemctl daemon-reload
    sudo systemctl restart docker

    现在 Portainer 就可以使用 API 连接方式

  • 相关阅读:
    git 相关命令
    测试工作十年,想对还在迷茫的朋友说:一点要做好个人规划...
    在conda虚拟环境下安装PyTorch-gpu版本
    “元宇宙”虚拟世界的营销法则 “品牌元宇宙空间”算什么?
    深入React源码揭开渲染更新流程的面纱
    pytest:如何调用 pytest
    和月薪5W的测试聊过后,才知道自己一直在打杂...
    你被裁了需要知道的一些细节
    Code Review关注点
    Web 数据提取:Sequentum Enterprise 2.78 Crack
  • 原文地址:https://www.cnblogs.com/yan7/p/15811203.html