我正在使用docker开发一个webapp,我需要运行公共用户编写的代码(一点也不安全),我使用redis在我的容器之间推送一些数据(使用在命名卷中共享的套接字)
如何禁止不安全的容器将数据发送到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之外的每个连接的读取?
谢谢
编辑:经过一些测试,默认情况下从属服务器是只读的,但是我无法使用套接字将从属服务器连接到主服务器,我在文档中找不到有关此功能/问题的任何信息
答案 0 :(得分:1)
Redis副本的主要目的是实现高可用性,并因此通过网络进行连接。它们不支持UDS与主服务器的连接。
但是,您可以使用socat将Unix套接字公开为TCP(例如https://serverfault.com/questions/517906/how-to-expose-a-unix-domain-socket-directly-over-tcp)。