Write the Code. Change the World.

12月 18

redis Connection refused

redis 容器自身,对 redis 的操作(连接使用)都 ok。 宿主机或其他容器连接 redis 总是报 Connection refused 错误。这里使用了 redis.conf。 将 redis.conf 的 bind 修改如下。

# 修改 redis.conf bind (默认是 bind 127.0.0.1 -::1)
bind 0.0.0.0 -::1

# 重启 redis
docker restart xxx(redis 容器 id)

重点

其他容器连接 redis 时,host 可以写 redis 这个和 docker-compose.yaml 中配置的 service 相对应。这个并不是容器名。连接 mysql 也可以这样。

services:
  mysql: 
    …
  redis:
    …

redis 其他配置

**docker-compose.yaml 中

# volume 配置 (其中,宿主机的 redis.conf 不存在,就会使用默认的 redis.conf)
# 这里主要三个方面:配置文件、数据、日志
    volumes:
    - ./conf/redis/redis.conf:/etc/redis/redis.conf
    - ${DATA_DIR}/redis:/data:rw
    - ${LOG_DIR}/redis:/logs
# 设置密码启动 redis**
# 123456 是 redis 密码
command: redis-server /etc/redis/redis.conf --requirepass "123456"

redis.conf 配置

配置项 描述
bind 指定本机网卡对应的IP地址,限制本机访问,默认 bind 127.0.0.1
daemonize 指定是否为守护进程方式运行,默认值为no
logfile 指定日志文件路径,默认值为 logfile ’ ', 默认为控制台打印,并没有日志文件生成
appendonly 是否开启持久化,默认值为 no

当 daemonize 设置了yes,表示redis在后台运行,当执行 docker-compose 执行启动 redis 进程时,docker 发现自己无事可做,容器自动结束,所以导致 redis 启动失败。

appendonly 为 yes 时,volume 需要配置 :rw,指定可写可读。

容器启动后设置密码

# 找到容器 id
docker ps

# 进入容器
docker exec -it xxx(redis 容器 id-前三位即可) bash

# 进入 redis
redis-cli

# redis 使用 (如果没设置密码,可以使用了。如果设置了密码,则提示 no auth)
redis get key

# 可以查看密码信息
config get requirepass

# 设置密码
config set requirepass yourPassword

# 输入密码
auth yourPassword

# 也可以在连接的时候带上密码
redic-cli -a yourPassword
12月 18

docker 网络

常用命令

# 显示网络
docker network ls

# 查看某个网络信息
docker network inspect xxx

# 删除网路
docker network rm xxx

# 批量删除网络
docker network rm $(docker network ls -q)

批量删除网络,有默认的三个网络是不能删除的。无论是批量删,还是单独删,都不可以。这三个网络是 bradge、host、none

NETWORK ID     NAME      DRIVER    SCOPE
a0457db48e55   bridge    bridge    local
f07f326dbd2b   host      host      local
437d811528b0   none      null      local