Skip to content

Docker挂载

tdragon6 edited this page Mar 28, 2023 · 2 revisions

docker-compose.yml文件中每个容器服务都挂载了磁盘卷,保证持久化数据。

磁盘卷挂载了所有服务的日志文件,因此注意定期清理日志,同时也请定期清理docker日志,可编写计划任务脚本,这里就不详述了,网上有很多教程。

1、nginx

挂载说明

  • ./static:/static: Web服务静态文件目录,包括css、js和img
  • ./volume/nginx/log:/var/log/nginx: nginx日志目录
  • ./volume/nginx/nginx.conf:/etc/nginx/nginx.conf: nginx配置文件
  • ./volume/nginx/default.conf:/etc/nginx/conf.d/default.conf: nginx站点配置文件,定义了路由和鉴权

2、flask

挂载说明

  • ./const.py:/app/const.py: 固定的配置文件,一般无需修改
  • ./config.py:/app/config.py: 用户配置文件,第一次启动时需修改
  • ./volume/flask:/volume: Web服务产生的数据目录,包括日志、备忘录和密钥等
  • ./volume/rssh/cache:/cache: 生成的客户端Payload目录,通过调用rssh同步,此目录同时挂载在rssh容器中
  • ./volume/rssh/downloads:/downloads: 文件服务器上传的文件目录,此目录同时挂载在rssh容器中

控制端私钥和公钥

  • ./volume/flask/key: 第一次启动后,flask会自动生成一对控制端公私钥,用以连接rssh服务,该目录中会生成 id_rsa ,这个密钥可以保存到本地,用以本地功能中 Sftp传输端口转发,若需要更新id_rsa,只需删除 ./volume/flask/key/id_rsa 后重启docker即可, id_rsa 会被shell和memfd同步挂载
  • ./volume/flask/authorized_keys: flask生成密钥对会把公钥写入该文件,会被rssh同步挂载,作为密钥连接rssh的公钥验证,若需要更新密钥对,这个文件不要删除,请删除上述的id_rsa即可,会重新写入此公钥文件。

3、redis

挂载说明

  • ./volume/redis/redis.conf:/etc/redis/redis.conf: redis配置文件,配置的连接密码为 tdragon6 ,在docker内部开放,因此一般没有安全风险,无需修改
  • ./volume/redis/data:/data: redis持久化数据目录
  • ./volume/redis/log:/log: redis日志目录

4、rssh

挂载说明

  • ./volume/rssh:/data: rssh的数据目录,包括服务器指纹、被控端公钥,生成的客户端Payload目录和文件服务器上传的文件目录(通过flask上传同步)等,其中生成的客户端Payload目录和文件服务器上传的文件目录也挂载在flask容器中
  • ./volume/flask/authorized_keys:/data/authorized_keys: 控制端公钥,用以连接鉴权,也挂载在flask容器中

被控端私钥和公钥

当flask调用rssh生成客户端Payload时,会为每个客户端Payload生成一个公私钥对,作为被控端连接rssh的认证,私钥会写入客户端Payload二进制文件中,公钥会写入 ./volume/rssh/authorized_controllee_keys

服务端指纹

第一次启动docker后,rssh会生成服务端指纹,写入 ./volume/rssh/id_ed25519 ,每次生成客户端Payload时会同时写入该指纹,当被控端连接时会检查该指纹,如果不正确则会拒绝反向连接。

5、shell和memfd

挂载说明

  • ./volume/ttyd/ssh_config:/etc/ssh/ssh_config: ssh配置文件
  • ./volume/flask/key:/root/.ssh: ssh控制端私钥目录