使用Redis将数据提供给不安全的Docker容器

时间:2018-11-18 00:26:02

标签: docker redis

我正在使用docker开发一个webapp,我需要运行公共用户编写的代码(一点也不安全),我使用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之外的每个连接的读取?

谢谢

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

1 个答案:

答案 0 :(得分:1)

Redis副本的主要目的是实现高可用性,并因此通过网络进行连接。它们不支持UDS与主服务器的连接。

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