Чего пытались достичь :
- добавить проверку работоспособности в контейнер, в котором нет встроенной функции
- чтобы проверить статус с помощью: docker Inspect --format "{{json .State.Health }}" CONTAINER_NAME | jq
docker inspect --format "{{json .State.Health }}" pihole | jq
{
"Status": "healthy",
"FailingStreak": 0,
"Log": [
{
"Start": "2024-05-09T18:33:42.432550214+02:00",
"End": "2024-05-09T18:33:42.512794534+02:00",
"ExitCode": 0,
"Output": "0.0.0.0\n"
},
{
"Start": "2024-05-09T18:34:12.513811429+02:00",
"End": "2024-05-09T18:34:12.601584189+02:00",
"ExitCode": 0,
"Output": "0.0.0.0\n"
},
{
"Start": "2024-05-09T18:34:42.603722857+02:00",
"End": "2024-05-09T18:34:42.67948883+02:00",
"ExitCode": 0,
"Output": "0.0.0.0\n"
},
{
"Start": "2024-05-09T18:35:12.680204934+02:00",
"End": "2024-05-09T18:35:12.751328732+02:00",
"ExitCode": 0,
"Output": "0.0.0.0\n"
},
{
"Start": "2024-05-09T18:35:42.752812361+02:00",
"End": "2024-05-09T18:35:42.848423963+02:00",
"ExitCode": 0,
"Output": "0.0.0.0\n"
}
]
}
docker inspect --format "{{json .State.Health }}" gluetun | jq
{
"Status": "healthy",
"FailingStreak": 0,
"Log": [
{
"Start": "2024-05-09T18:35:50.158405733+02:00",
"End": "2024-05-09T18:35:50.234108609+02:00",
"ExitCode": 0,
"Output": ""
},
{
"Start": "2024-05-09T18:35:55.235912341+02:00",
"End": "2024-05-09T18:35:55.316256685+02:00",
"ExitCode": 0,
"Output": ""
},
{
"Start": "2024-05-09T18:36:00.317899356+02:00",
"End": "2024-05-09T18:36:00.394049229+02:00",
"ExitCode": 0,
"Output": ""
},
{
"Start": "2024-05-09T18:36:05.395000043+02:00",
"End": "2024-05-09T18:36:05.46558119+02:00",
"ExitCode": 0,
"Output": ""
},
{
"Start": "2024-05-09T18:36:10.466276573+02:00",
"End": "2024-05-09T18:36:10.552487085+02:00",
"ExitCode": 0,
"Output": ""
}
]
}
docker inspect --format "{{json .State.Health }}" qbittorrent | jq
{
"Status": "unhealthy",
"FailingStreak": 30,
"Log": [
{
"Start": "2024-05-09T18:28:19.260234237+02:00",
"End": "2024-05-09T18:28:29.322063926+02:00",
"ExitCode": -1,
"Output": "Health check exceeded timeout (10s): % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n\r 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:08 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:09 --:--:-- 0"
},
{
"Start": "2024-05-09T18:29:59.323289401+02:00",
"End": "2024-05-09T18:30:09.364659871+02:00",
"ExitCode": -1,
"Output": "Health check exceeded timeout (10s): % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n\r 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:08 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:09 --:--:-- 0"
},
{
"Start": "2024-05-09T18:31:39.365847905+02:00",
"End": "2024-05-09T18:31:49.419585754+02:00",
"ExitCode": -1,
"Output": "Health check exceeded timeout (10s): % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n\r 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:08 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:09 --:--:-- 0"
},
{
"Start": "2024-05-09T18:33:19.420526376+02:00",
"End": "2024-05-09T18:33:29.465334657+02:00",
"ExitCode": -1,
"Output": "Health check exceeded timeout (10s): % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n\r 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:08 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:09 --:--:-- 0"
},
{
"Start": "2024-05-09T18:34:59.467015831+02:00",
"End": "2024-05-09T18:35:09.531280977+02:00",
"ExitCode": -1,
"Output": "Health check exceeded timeout (10s): % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n\r 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:08 --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- 0:00:09 --:--:-- 0"
}
]
}
Итак, я занимаюсь этим уже несколько дней и до сих пор не могу понять, поэтому здесь я ищу кого-то, кто обладает реальными знаниями и необходимыми ноу-хау. Во-первых, я надеюсь понять, возможно ли это вообще, и если да, то попытаюсь понять, как мне это сделать и заархивировать. Мы очень ценим ваш вклад.
Некоторые возможно необходимые детали:
- трафик qBittorret проходит через Gluetun с использованием network_mode: «container:gluetun», который добавляется в .yml (подробнее об этом ниже в этом посте)
- образ qBittorrent не имеет встроенной проверки работоспособности, поэтому я добавил следующее в свой .yml;
test: ["CMD", "curl", "-f", "http://10.0.0.10:8085"]
interval: 1m30s
timeout: 10s
retries: 3
Без приведенных выше строк docker ps не записывать/показывать какую-либо информацию о статусе рассматриваемого контейнера. Теперь, когда это дозировано, это всегда вредно для здоровья.
Чего мне не хватает?
Вот некоторая общая информация и результаты:
Я запускаю настроенную командную строку: docker -v && docker compose version && docker ps -a --format "table {{. Имена}}\t{{.Status}}\t{{.Status}}\t{{.Networks}}"
Docker version 26.1.1, build 4cf5afa
Docker Compose version v2.27.0
NAMES STATE STATUS NETWORKS
qbittorrent running Up 10 minutes (unhealthy)
gluetun running Up 38 minutes (healthy) gluetun_default
pihole running Up 3 hours (healthy) pi-hole_default
Мой docker-compose.yml для Glutun
services:
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
ports:
- 8888:8888/tcp
- 8085:8085
- 6881:6881
- 6881:6881/udp
volumes:
- ./:/gluetun
environment:
- VPN_SERVICE_PROVIDER=mullvad
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=LOST_IT
- WIREGUARD_ADDRESSES=SOME_IP_@_THE_MOON/32
- SERVER_CITIES=STAR_CITY
- TZ=MOON/DARKSIDE
- UPDATER_PERIOD=24h
restart: unless-stopped
Мой docker-compose.yml для qbittorrent
services:
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
environment:
- PUID=1000
- PGID=1000
- TZ=MOON/DARKSIDE
- WEBUI_PORT=8085
- TORRENTING_PORT=6881
volumes:
- ./:/config
- /mnt/nas/media:/downloads
healthcheck:
test: ["CMD", "curl", "-f", "http://10.0.0.10:8085"]
interval: 1m30s
timeout: 10s
retries: 3
network_mode: "container:gluetun"
restart: unless-stopped
Мой docker-compose.yml для pi-hole
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp"
environment:
TZ: 'MOON/DARKSIDE'
WEBPASSWORD: 'WOULDNT_YOU_LIKE_TO_KNOW'
volumes:
- './etc-pihole:/etc/pihole'
- './etc-dnsmasq.d:/etc/dnsmasq.d'
restart: unless-stopped
Подробнее здесь: https://stackoverflow.com/questions/784 ... ompose-yml