Redis в докере не может быть подключен

Я запускаю сервер redis в докер-контейнере с ip 10.201.57.26, он работает хорошо до некоторого времени. Выход из telnet 10.201.57.26 6379 как показано ниже:

[root@service-6-125 ~]# telnet 10.201.57.26 6379
Trying 10.201.57.26...
Connected to 10.201.57.26.
Escape character is '^]'.
info
Connection closed by foreign host.

Но он снова работает хорошо после использования docker exec взаимодействовать с контейнером:

[root@service-6-125 ~]# docker exec -it 1cbe1335bf94 /bin/sh
/data/redis # exit
[root@service-6-125 ~]# telnet 10.201.57.26 6379
Trying 10.201.57.26...
Connected to 10.201.57.26.
Escape character is '^]'.
info
$2418
# Server
redis_version:3.2.11
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:dd9e4fe7ae130e8b
redis_mode:standalone
os:Linux 3.10.0-123.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll

Но это не работает с nsenter взаимодействовать с контейнером:

[root@service-6-125 ~]# nsenter --target 187555 --mount --uts --ipc --net --pid -- /bin/sh 
/ # . /etc/profile
49:/# 
[root@service-6-125 ~]# telnet 10.201.57.26 6379
Trying 10.201.57.26...
Connected to 10.201.57.26.
Escape character is '^]'.
info
Connection closed by foreign host.

Информация о процессе и сетевом подключении показана ниже:

49:/# ps
PID   USER     TIME   COMMAND
    1 redis      5:29 redis-server /data/config/redis.conf
  152 root       0:00 /bin/sh
  159 root       0:00 ps

49:/# top
Mem: 7771316K used, 240604K free, 412668K shrd, 421048K buff, 5211372K cached
CPU:   0% usr   0% sys   0% nic 100% idle   0% io   0% irq   0% sirq
Load average: 0.44 0.55 0.72 2/1770 155
  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
    1     0 redis    R    75884   1%   1   0% redis-server /data/config/redis.conf
  152     0 root     S     1520   0%   0   0% /bin/sh
  155   152 root     R     1508   0%   2   0% top

49:/# netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp      129      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      1/redis-server
tcp        0      0 10.201.57.26:6379       10.201.57.1:56259       SYN_RECV    -
49:/# 

Состояние процесса redis всегда остается Rи каждое входящее соединение SYN_RECV, Это так же, как процесс redis был заморожен контейнером с состоянием R, и только docker exec может реагировать на это. Зачем? Пожалуйста помоги. Спасибо.

0 ответов

Другие вопросы по тегам