解决Bitnami的镜像的挂载权限问题

根据官方的说法, Bitnami使用了一种名为non-root的容器

Why use a non-root container?
Non-root container images add an extra layer of security and are generally recommended for production environments
However, because they run as a non-root user, privileged tasks are typically off-limits. Learn more about non-root containers in our docs

这说明Bitnami镜像通常使用非root用户运行, 当执行一些需要管理员权限的命令, 或者处理挂载的时候可能导致权限问题

解决方案

将Bitnami镜像镜像以root containers模式运行

在docker-compose中修改一下配置配置

1
2
3
4
5
6
7
version: '3'

services:
prometheus:
image: dev-harbor.hysz.co/Bitnami/prometheus
user: root
...

启动后容器将以root用户执行所有操作

调整本地挂载目录的权限

Bitnami镜像中, 默认用户的UIDGID1001

在宿主机上, 给挂载目录配置适当的权限

1
2
3
mkdir -p ./prometheus_data
chown -R 1001:1001 ./prometheus_data
chmod -R 755 ./prometheus_data

使用Docker卷

Docker命名卷会自动处理权限问题, 通过卷持久化数据而不是挂载某个目录来解决问题

1
2
3
4
5
6
7
8
9
10
11
version: '3'

services:
prometheus:
image: dev-harbor.hysz.co/Bitnami/prometheus
...
volumes:
- prometheus_data:/opt/bitnami/prometheus/

volumes:
prometheus_data: