Py学习  »  Redis

使用redis为不安全的Docker容器提供数据服务

Bast • 4 年前 • 759 次点击  

我正在用Docker制作一个webapp,我需要运行由公共用户编写的代码(一点也不安全),我使用redis在容器之间推送一些数据(使用命名卷中共享的套接字)。

如何禁止不安全的容器向redis发送数据?

我的码头工人作曲。

版本:“3”

服务:
雷迪斯:
图片:redis:最新
命令:&
sh-c“chown redis/tmp/redis/
redis服务器/usr/local/etc/redis/redis.conf“
卷:
-Redis_插座:/tmp/Redis
不安全容器:
建造:
上下文:./docker
DockerFile:DockerFile
命令:python unsafe.py
卷:
-Redis_插座:/tmp/Redis:ro
链接:
-雷迪斯
依赖性:
-雷迪斯
DATAIIN:
建造:
上下文:./docker
Dockerfile:Dockerfile数据
命令:&
sh-c“python3/code/manage.py等待数据库
python3/code/manage.py开始“dc”
卷:
-Redis_插座:/tmp/Redis
链接:
-雷迪斯
依赖性:
-雷迪斯
卷:
重新插座:
< /代码> 

如果我做了一个redis从站,我能把这个设置为只接受除主redis之外的所有连接的读取吗?

谢谢

编辑:在一些测试之后,默认情况下从系统是只读的,但我无法使用套接字将从系统连接到主系统,我在文档上找不到有关此功能/问题的任何信息容器(使用命名卷中共享的套接字)

schema

如何禁止不安全的容器向redis发送数据?

我的docker-compose.yml

version: "3"

services:
  redis:
    image: redis:latest
    command: >
      sh -c "chown redis /tmp/redis/
             redis-server /usr/local/etc/redis/redis.conf"
    volumes:
      - redis_socket:/tmp/redis
  unsafe_container:
      build:
        context: ./docker
        dockerfile: Dockerfile
      command: python unsafe.py
      volumes:
        - redis_socket:/tmp/redis:ro
      links:
        - redis
      depends_on:
        - redis
  data_in:
    build:
      context: ./docker
      dockerfile: Dockerfile-data
    command: >
      sh -c "python3 /code/manage.py wait_db
             python3 /code/manage.py start_dc"
    volumes:
      - redis_socket:/tmp/redis
    links:
      - redis
    depends_on:
      - redis
  volumes:
    redis_socket:

如果我做了一个redis从站,我能把这个设置为只接受除主redis之外的所有连接的读取吗?

谢谢

编辑:在一些测试之后,默认情况下从系统是只读的,但是我无法使用套接字将从系统连接到主系统,我在文档中找不到有关此功能/问题的任何信息。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37897
 
759 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Itamar Haber
Reply   •   1 楼
Itamar Haber    5 年前

redis副本主要设计为允许高可用性,因此可以通过网络进行连接。它们不支持到主服务器的UDS连接。

但是,您可以使用socat将unix套接字公开为tcp(例如 https://serverfault.com/questions/517906/how-to-expose-a-unix-domain-socket-directly-over-tcp )