Postgresql 如何在正在运行的docker compose容器中使用/var/run/docker.sock?
我有docker-compose.yml,如下所示:Postgresql 如何在正在运行的docker compose容器中使用/var/run/docker.sock?,postgresql,docker-compose,zabbix,unix-socket,Postgresql,Docker Compose,Zabbix,Unix Socket,我有docker-compose.yml,如下所示: version: '3' services: zabbix-agent: image: zabbix/zabbix-agent ports: - "10050:10050" - "10051:10051" volumes: - /var/run/docker.sock:/var/run/docker.sock - /etc/localtime:/etc/localtime:r
version: '3'
services:
zabbix-agent:
image: zabbix/zabbix-agent
ports:
- "10050:10050"
- "10051:10051"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /etc/localtime:/etc/localtime:ro
- ./zbx_env/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro
- ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
- ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
- ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
links:
- db
env_file:
- .env_agent
user: root
privileged: true
pid: "host"
stop_grace_period: 5s
labels:
com.zabbix.description: "Zabbix agent"
com.zabbix.company: "Zabbix SIA"
com.zabbix.component: "zabbix-agentd"
com.zabbix.os: "ubuntu"
postgres-server:
image: postgres:latest
volumes:
- ./zbx_env/var/lib/postgresql/data:/var/lib/postgresql/data:rw
env_file:
- .env_db_pgsql
user: root
stop_grace_period: 1m
在zabbix代理中,我使用UserParameter,如下所示:
...
UserParameter=pgsql.ping[*],/bin/echo -e "\\\timing \n select 1" | psql -qAtX $1 | tail -n 1 |cut -d' ' -f2|sed 's/,/./'
...
当我从zabbix服务器调用这个UserParameter时,我有一个关于不存在psql的错误。这是正确的-容器中的“zabbix代理”psql不存在
如何从“zabbix代理”运行包含在“postgres服务器”中的psql并获得结果?只需运行:
curl -H 'Content-Type: application/json' --unix-socket /var/run/docker.sock localhost:4243/containers/zabbix-agent/exec -d '{"Cmd":["date"]}'
如何使请求看起来如此:
API参考资料如下: