Estoy tratando de ejecutar mi archivo docker-compose.yml que contiene configuraciones de Prometheus y Grafana.
Aquí está mi archivo docker-compose.yml :
version: '2' services: prometheus: image: prom/prometheus ports: - 9090:9090 volumes: - /prometheus:/prometheus command: - --config.file=/etc/prometheus/prometheus.yml grafana: image: grafana/grafana ports: - "3000:3000" volumes: - /var/lib/grafana:/var/lib/grafana Cada vez que ingreso el comando docker-compose -f docker-compose.yml up para ejecutarlo, me encuentro con este tipo de errores sobre los permisos:
prometheus_1 | level=error ts=2019-06-30T16:14:42.690Z caller=main.go:723 err="opening storage failed: lock DB directory: open /prometheus/lock: permission denied" prometheus_1 | level=error ts=2019-06-30T16:26:11.897Z caller=main.go:723 err="opening storage failed: mkdir data/: permission denied"No sé cómo resolver este problema, ya he buscado problemas de github y las otras preguntas de stackoverflow, ¡pero desafortunadamente ninguno de ellos ayuda!
Si no necesita acceso desde el host a estos archivos de volumen, use un volumen con nombre en lugar de un montaje de host. Docker inicializará el contenido del volumen nombrado, incluidos los permisos y la propiedad, evitando problemas de permisos como este:
version: '2' volumes: prometheus: grafana: services: prometheus: image: prom/prometheus ports: - 9090:9090 volumes: - prometheus:/prometheus command: - --config.file=/etc/prometheus/prometheus.yml grafana: image: grafana/grafana ports: - "3000:3000" volumes: - grafana:/var/lib/grafanaPara una solución general que resuelva los problemas de permisos con los montajes de host, se puede usar el script fix-perms en mi imagen base de ventana acoplable , junto con un punto de entrada y cambios en la forma en que se inicia el contenedor, para ajustar dinámicamente el ID de usuario dentro del contenedor para que coincida. la del montaje de volumen.
Mi comando docker-compose up devolvía continuamente lo siguiente:
err="opening storage failed: lock DB directory: open /prometheus/lock: permission denied"El problema es que la estructura de carpetas/los archivos en su máquina local tienen los permisos de archivo incorrectos y cuando se activa el contenedor acoplable, no puede escribir en la ubicación especificada.
Arreglé esto cortando recursivamente la carpeta con el siguiente comando:
sudo chown -R nobody:nogroup <local path>un ejemplo, mi sección de volúmenes en mi docker-compose.yml se veía así:
volumes: - /home/user/docker-volumes/prometheus:/prometheusLos dos puntos significan la separación de la ruta del archivo local: la ruta del archivo del contenedor docker. La aplicación de mi ejemplo chown anterior da como resultado lo siguiente:
sudo chown -R nobody:nogroup /home/user/docker-volumes/prometheus ¡Mi docker-compose up ya no falla con el permiso denegado!