配置 docker 注册中心、代理、镜像等...
这是本节的多页打印视图。 .
Docker
1 - 配置
Pigsty 包含内置的 Docker 支持,允许您快速部署容器化应用程序。
快速开始
要在节点上安装 docker,请将 docker_enabled 参数设置为 true。
然后运行 docker.yml playbook(在目标主机/组上):
Docker 将安装在该 infra 组上。
镜像站
您可以使用 docker_registry_mirrors 指定 docker 注册表镜像:
以下是一些示例注册表镜像:
- 阿里云:
["https://registry.cn-hangzhou.aliyuncs.com"] - 腾讯云:
["https://ccr.ccs.tencentyun.com"] - DaoCloud:
["https://docker.m.daocloud.io"] - 1Ms:
["https://docker.1ms.run"]
您可以将多个注册表镜像指定为数组,记住用 " 引用 URL。
代理
如果指定了 proxy_env 参数,Docker 将使用它。
您可以在全局参数 all.vars 或专用组(如 infra)中定义它:
它将在 docker_config 任务期间呈现到 /etc/docker/daemon.json:
这在由于各种原因阻止直接网络访问时很有用。
镜像
您可以使用 docker_image 和 docker_image_cache 置备 docker 镜像:
在 docker_image 中定义的镜像将在 docker_image 任务期间逐个拉取。
匹配 docker_image_cache glob 列表的带有 .tgz 后缀的本地 docker 镜像缓存将使用 docker load 加载到 docker 中
加速
您可以在各个云供应商上使用加速器:
- 阿里云 ACR:https://cr.console.aliyun.com/cn-shanghai/instances/mirrors
2 - 参数
Docker 模块有 8 个参数:
| 名称 | 类型 | 层级 | 注释 |
|---|---|---|---|
docker_enabled |
bool |
G/C/I | 在此节点上启用 docker? |
docker_data |
path |
G/C/I | Docker 数据目录,默认为 /var/lib/docker |
docker_storage_driver |
enum |
G/C/I | Docker 存储驱动程序,默认为 overlay2 |
docker_cgroups_driver |
enum |
G/C/I | docker cgroup fs 驱动程序:cgroupfs,systemd |
docker_registry_mirrors |
string[] |
G/C/I | docker 注册中心镜像列表 |
docker_exporter_port |
port |
G | Docker 指标导出器端口,默认为 9323 |
docker_image |
path[] |
G/C/I | 要拉取的 docker 镜像,默认为 [] |
docker_image_cache |
path |
G/C/I | docker 镜像缓存压缩包通配符,默认为 /tmp/docker |
默认值
Docker 的默认参数定义在 roles/docker/defaults/main.yml 中
docker_enabled
名称:docker_enabled,类型:bool,层级:G/C/I
在此节点上启用 docker?默认值为 false
docker_data
名称:docker_data,类型:path,层级:C
Docker 数据目录,默认为 /var/lib/docker。
docker_storage_driver
名称:docker_storage_driver,类型:enum,层级:C
Docker 存储驱动程序,默认为 overlay2。
请参考:https://docs.docker.com/engine/storage/drivers/select-storage-driver/
overlay2fuse-overlayfsbrtfszfsvfs
docker_cgroups_driver
名称:docker_cgroups_driver,类型:enum,层级:G/C/I
docker cgroup fs 驱动程序,可以是 cgroupfs 或 systemd,默认值:systemd
docker_registry_mirrors
名称:docker_registry_mirrors,类型:string[],层级:G/C/I
docker 注册中心镜像列表,默认值:[],示例:
以下是使用各云厂商内网镜像的一些示例:
考虑使用 Cloudflare Worker Docker Proxy
如果拉取速度太慢,您也可以考虑:docker login quay.io 使用其他注册中心。
docker_exporter_port
名称:docker_exporter_port,类型:port,层级:G
Docker 指标导出器端口,默认为 9323。
docker_image
名称:docker_image,类型:string[],层级:G/C/I
要拉取的 docker 镜像,默认为 []
这里列出的镜像将在 docker 置备期间被拉取。
docker_image_cache
名称:docker_image_cache,类型:path,层级:G/C/I
docker 镜像缓存压缩包通配符列表,默认为 "/tmp/docker/*.tgz"。
匹配此通配符列表的带有 .tgz 后缀的本地 docker 镜像缓存将逐一加载到 docker 中:
3 - 管理
安装
要在节点上安装和启用 docker,请 配置 docker_enabled 参数为 true。
然后运行 docker.yml 剧本(在目标主机/组上):
Docker 将安装在该 infra 组上。
我们在这里使用 infra 组作为示例,您可以在其他地方定义它,只要它适用于预期的主机。
仓库
Docker 仓库是 infra 仓库模块的一部分,将在 仓库 构建期间自动添加。
您可以使用以下命令将此仓库添加到您的节点:
升级
要升级 Docker 守护进程,使用 ansible 命令,添加 docker 仓库,然后:
它将把 docker-ce 包升级到您配置的仓库中可用的最新版本。
移除
要移除 Docker 守护进程,使用 ansible 命令运行:
它将使用您的操作系统包管理器移除 docker-ce 包。
应用程序
Pigsty 提供基于 Docker Compose 的即用型 软件模板,用于部署与 Pigsty 管理的数据库集群无缝集成的外部应用程序。
4 - 剧本
DOCKER 模块只有一个剧本:docker.yml
用于在目标节点上安装 docker 守护进程和 docker compose。
docker.yml
原始剧本:docker.yml。
在任何主机上运行此剧本将在启用 docker_enabled: true 标志的目标节点上安装 docker-ce 和 docker-compose-plugin。
以下是 docker.yml 剧本中可用的子任务:
docker_install:在节点上安装 Docker 和 Docker Compose 包。docker_admin:将指定用户添加到 Docker 管理员用户组。docker_config:生成 Docker 守护进程服务配置文件。docker_launch:启动 Docker 守护进程服务。docker_register:将 Docker 守护进程注册为 Prometheus 监控目标。docker_image:如果存在的话,尝试从/tmp/docker/*.tgz加载预打包的 Docker 镜像。
Docker 模块不提供专用的 Docker 卸载剧本。如果您需要卸载 Docker,您可以手动停止 Docker 服务然后卸载它:
5 - 监控
如果节点的 docker_enabled = true,Pigsty 将把 docker 守护进程添加到监控目标中
但是 docker 模块没有默认的仪表板和告警规则,您可以向 prometheus 和 grafana 添加自己的规则。
6 - FAQ
谁可以运行 Docker 命令?
默认情况下,Pigsty 将在远程主机上运行剧本的 管理用户(即 SSH 登录用户)和由 node_admin_username 参数定义的用户都添加到操作系统组 docker 中。
该组中的任何账户都可以通过 docker CLI 管理 Docker。
需要为另一个用户授予 Docker 访问权限?只需将该操作系统用户添加到 docker 组:
通过代理工作
在安装期间,如果设置了 proxy_env 参数,Pigsty 会将指定的 HTTP 代理设置写入 /etc/docker/daemon.json。
然后 Docker 将通过此代理路由所有来自上游注册中心的镜像拉取。
提示: 使用 -x 标志运行 configure 剧本会自动捕获当前 shell 的代理变量并将它们注入到 proxy_env 中。
使用镜像注册中心
在中国大陆,您可能会遇到 GFW 限制。可以使用诸如 quay.io 等镜像:
更新(2024年6月): 中国所有以前可访问的 Docker 镜像现在都已被阻止。请通过代理拉取镜像。
将 Docker 添加到监控
安装 Docker 模块后,您可以通过运行 docker_register(别名 register_prometheus)任务将 Docker 注册为特定节点的 Prometheus 目标:
软件模板
Pigsty 提供了一系列 软件模板,这些模板使用 Docker Compose 启动流行的技术栈——开箱即用。
只需确保首先安装了 Docker 模块。