Docker Socket Proxy是一个安全增强的Docker套接字代理。
授予Docker套接字访问权限可能意味着授予主机甚至整个 swarm 的root权限,但某些服务需要挂钩到该套接字以响应事件等。使用此代理可以阻止您认为这些服务不应执行的任何操作,从而提高安全性。
基于***Alpine的HAProxy镜像,通过小型配置文件实现。根据设置的环境变量阻止对Docker套接字API的访问,对危险请求返回HTTP 403 禁止访问状态码。
需使用--privileged(特权模式)标志,因为它连接到Docker套接字,在某些SELinux/AppArmor上下文中这是特权连接,否则可能被锁定:
sh$ docker container run \ -d --privileged \ --name dockerproxy \ -v /var/run/docker.sock:/var/run/docker.sock \ -p 127.0.0.1:2375:2375 \ tecnativa/docker-socket-proxy
sh$ export DOCKER_HOST=tcp://localhost
VERSION API):sh$ docker version Client: Version: 17.03.1-ce API version: 1.27 Go version: go1.7.5 Git commit: c6d412e Built: Mon Mar 27 17:14:43 2017 OS/Arch: linux/amd64 Server: Version: 17.03.1-ce API version: 1.27 (minimum version 1.12) Go version: go1.7.5 Git commit: c6d412e Built: Mon Mar 27 17:14:43 2017 OS/Arch: linux/amd64 Experimental: false
CONTAINERS API):sh$ docker container ls Error response from daemon: <html><body><h1>403 Forbidden</h1> Request forbidden by administrative rules. </body></html>
任何使用此代理2375端口访问Docker套接字API的容器都会受到相同的访问控制。
通过环境变量授予或撤销Docker API特定section的访问权限。变量通常与URL前缀匹配(例如AUTH控制对/auth/* API部分的访问)。
环境变量取值:
0:撤销访问权限1:授予访问权限以下API section通常无害且几乎是任何使用API的服务所必需的,因此默认允许访问:
EVENTS(事件)PING(心跳检测)VERSION(版本信息)以下API section被视为安全关键型,默认禁止访问。启用时需极度谨慎:
AUTH(认证):涉及Docker认证操作SECRETS(密钥):Docker密钥管理POST:禁用时仅允许GET和HEAD操作,即API所有section均为只读以下API section并非总是需要,可能会暴露服务不需要的信息,根据需求决定是否启用:
BUILD(构建):镜像构建相关操作COMMIT(提交):容器提交为镜像CONFIGS(配置):Docker配置管理CONTAINERS(容器):容器生命周期管理(创建、启动、停止、删除等)DISTRIBUTION(分发):镜像分发相关EXEC(执行):在容器内执行命令IMAGES(镜像):镜像管理INFO(信息):Docker系统信息NETWORKS(网络):网络管理NODES(节点):Swarm节点管理PLUGINS(插件):Docker插件管理SERVICES(服务):Swarm服务管理SESSION(会话):会话管理SWARM(集群):Swarm集群管理SYSTEM(系统):系统相关操作TASKS(任务):Swarm任务管理VOLUMES(卷):数据卷管理除Docker外,开发所需的所有依赖均通过poetry管理。
shpoetry install # 安装依赖
本地运行测试时,添加--prebuild自动构建镜像:
shpoetry run pytest --prebuild
默认情况下,测试使用(并可选预构建)名为docker-socket-proxy:local的镜像。也可单独构建镜像后移除--prebuild标志:
shdocker image build -t docker-socket-proxy:local . # 单独构建 poetry run pytest # 运行测试
如需使用自定义镜像,设置DOCKER_IMAGE_NAME环境变量:
sh# 自动构建自定义镜像 env DOCKER_IMAGE_NAME=my_custom_image poetry run pytest --prebuild # 单独构建自定义镜像后测试 docker image build -t my_custom_image . env DOCKER_IMAGE_NAME=my_custom_image poetry run pytest
通过环境变量LOG_LEVEL设置日志级别,默认值为info。可选值(按严重程度递增):
debug(调试)info(信息)notice(通知)warning(警告)err(错误)crit(严重)alert(警报)emerg(紧急)任何反馈(问题、疑问)请提交至问题跟踪器。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429