1.概述

​ 很多容器会因为文件夹权限问题,导致一些列错误。

​ 比如挂载卷,容器需要对某个文件夹做出读、写、执行的操作,但是容器的用户和文件夹所属的用户不同,例如文件夹属于root用户,后端容器属于docker用户,他俩的工牌不同,一个是0,一个是1000。

​ 所以要对这些文件夹的归属做出修改。

2.各个容器目录

/opt/jimidou/ (项目根目录)
│
├── apps/ (应用层:统一建议所有者 UID 1000)
│   ├── backend/ 
│   │   ├── 数据和日志等/ (存放 testcase、log、file) -> [UID 1000]
│   │   ├── docker-compose.yml 
│   │   └── .env
│   └── frontend/
│       ├── certs/ (ssl证书)
│       └── docker-compose.yml 
│
└── infra/ (基础设施层:注意不同的工号)
    ├── mysql/ (数据库)
    │   └── data/ -> [UID 999] (极度重要:MySQL 必须用 999)
    ├── redis/ (缓存)
    │   └── data/ -> [UID 999] (极度重要:Redis 必须用 999)
    ├── nacos/ (配置中心)
    │   ├── data/ -> [UID 1000]
    │   └── logs/ -> [UID 1000]
    ├── prometheus/ 
    │   └── data/(监控数据存储) -> [UID 65534] (注意:Prometheus 默认用的是 nobody 用户)
    └── node-exporter/ (系统监控) -> [UID 0] (注意:它要读宿主机内核信息,通常用 root)

3.给于权限

不同用户和“工牌”的对应关系:
root —— 0

ubuntu —— 1000

大多数docker容器 —— 1000

mysql容器 —— 999

redis容器 —— 999

Prometheus容器 —— 65534

1.确保各个文件夹属于ubuntu而非root用户

比如某个data文件夹由root创建就会归root管,现在拿回权限

并且给jimidou文件夹ubuntu的权限(即1000号“工牌“,大多数docker容器也能一起用)

sudo chown -R ubuntu:ubuntu /opt/jimidou
2.赋予jimidou文件夹限制性权限(主人能写,其他用户只能读和执行)

第一个数字 7:给 主人(4+2+1,即读+写+执行)。

第二个数字 5:给 同组成员(4+0+1)。

第三个数字 5:给 路人甲(4+0+1)。

sudo chmod -R 755 /opt/jimidou
3.开始给不同docker用户的文件夹操作权限
# 1. 割让给 MySQL (999)
sudo chown -R 999:999 /opt/jimidou/infra/mysql/data

# 2. 割让给 Redis (999)
sudo chown -R 999:999 /opt/jimidou/infra/redis/data

# 3. 割让给 Prometheus (65534)
sudo chown -R 65534:65534 /opt/jimidou/infra/prometheus/data

更多推荐