问题描述
您好,我对docker来说还很陌生,我正在尝试启动并运行influxdb和grafana。
- 从here获得了一个docker-compose文件
- sudo docker-compose up -d
- 遇到了问题,容器未应用诸如INFLUXDB_DB = db0之类的参数来放置docker-compose.yml。因此,例如,未创建数据库db0。
- 对容器的更改虽然会持续存在。所以我可以创建一个数据库,重新启动后它仍然存在
- 使用docker run将每个容器测试为独立容器
- 弄清楚了我是否使用绑定安装代替了适用于influxdb的docker卷
- grafana容器无法启动
sudo docker run --volume "$PWD/data:/var/lib/grafana" -p 3000:3000 grafana/grafana:latest
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions,more @R_824_4045@ion here: http://docs.grafana.org/installation/docker/#migration-from-a-prevIoUs-version-of-the-docker-container-to-5-1-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
sudo docker run --user $(id -u) --volume "$PWD/data:/var/lib/grafana" -p 3000:3000 grafana/grafana:latest
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions,more @R_824_4045@ion here: http://docs.grafana.org/installation/docker/#migration-from-a-prevIoUs-version-of-the-docker-container-to-5-1-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
- 当我将--user参数设置为0:0时,它可以工作,但是我读到一些最佳实践,其中以root身份运行可以进行测试,但是对于生产来说则不理想。
- 我还读到我可以将用户添加到docker组以向该用户授予权限
- 我的系统上没有docker组,因此我读了here,可以创建一个,然后通过/etc/docker/daemon.json将docker.socket添加到该组中,但是该文件不存在,并且我无法创建它,我想我已经在兔子洞深处停了下来,问我是否走错了方向,做错了什么。
我想我的主要问题是如何以非root身份启动容器,而又不给它们太多权限。
使用: 发行人ID:Ubuntu 说明:Ubuntu 18.04.4 LTS 发行:18.04 代号:bionic
解决方法
我记得很早以前就在处理类似的问题。
我推荐
一次
mkdir data/grafana
然后
sudo docker run --volume "$PWD/data:/var/lib" -p 3000:3000 grafana/grafana:latest
因为我记得每当您批量安装某些东西时,它都会被root拥有。无法更改已挂载卷的所有权。
但是您可以更改装入的卷内文件和目录的所有权,并且它们不必是root。
因此,在我的解决方案中,您只是将数据装载到/ var / lib,/ var / lib将由root拥有,而/ var / lib / grafana将由常规用户拥有。
这显然会隐藏/ var / lib目录中任何其他文件夹的内容,但是那里可能没有什么重要的内容。如果可以,则可以将程序配置为在其他位置查找/ var / lib / grafana。例如,/ srv / grafana然后将调用更改为
sudo docker run --env GRAFANA_DIR=/srv/grafana --volume "$PWD/data:/srv" -p 3000:3000 grafana/grafana:latest
最后,我不明白为什么以root身份运行会带来安全问题。 我不确定我是否同意这一点。