web-dev-qa-db-ja.com

ホストマシンからDocker Containerで実行されているRedisに接続する

多くの人がこれに苦労しており、redisコンテナのイメージにバグがあるように感じ、他の人も同様の問題を追いかけているように見えます。

DockerHubで標準のredisイメージを使用しています。 ( https://github.com/dockerfile/redis

次のように実行します:

docker run -it -p 6379:6379 redis bash

入ったら、サーバーを起動して、コンテナーイメージからredis pingを実行できます。

残念ながら、ホストからredisコンテナーに接続できません。

以下のような設定を試みました。

bind 127.0.0.1

構成からバインドを削除しました

そして、保護モードをオフにしてみました

protected-mode no

ただテストするためにポートを変更したので、構成ファイルを読み取っていることを知っており、それを行うことができました。

Windows 10を実行しているので、Windowsネットワークの問題である可能性があります。通常、Dockerに問題はありません。私は困惑しています

23
user3888307

問題はバインドにあります。次を設定する必要があります。

bind 0.0.0.0

これは、1つのインターフェース(eth0)とループバック(redis)がコンテナー化された環境で、使用可能なすべてのインターフェースにバインドするようにloを設定し、上記の両方にバインドします。 config fileの他のディレクティブを介して、またはfirewallsなどの外部ツールを使用して、セキュリティ対策を追加することを検討する必要があります。このアプローチでは、誰でもredisサーバーに接続できるためです。

デフォルト設定はbind 127.0.0.1であり、この設定によりredisはループバックインターフェイスでのみリッスンされ、コンテナー内からのみアクセス可能になります。 (セキュリティのため)

カスタム構成ファイルでredisを実行するには:

Sudo docker run -d --name redis-test -p 6379:6379  -v /path/to/redisconf/redis.conf:/redis.conf redis redis-server /redis.conf

redis-toolsがインストールされたdockerホストで確認するには:

Sudo redis-cli                           
127.0.0.1:6379> 
127.0.0.1:6379> set farhad likes:stackoverflow
OK
127.0.0.1:6379> get farhad
"likes:stackoverflow"
127.0.0.1:6379> 

また、外部ホストからredisコンテナに接続することもできます:

redis-cli -h 'IP-address-of-dockerhost-running-redis-container'
20
Farhad Farahi

これを適切に機能させるための手順を次に示します。

Distroリポジトリではなく、公式Dockerをインストールします。

curl -fsSL https://get.docker.com -o get-docker.sh
Sudo sh get-docker.sh
systemctl enable docker ; systemctl start docker; systemctl status docker

便利なスクリプトを使用してインストールする を参照してください

ホストからRedisコンテナーに接続する

mkdir -p /etc/redis/
chown -R 1000:1000 /etc/redis
Sudo docker run -d --name redis -p 6379:6379 --restart unless-stopped -v /etc/redis/:/data redis redis-server /data

注:ソリューションの重要な部分は、ポートをドッカーホストに公開(-p 6379:6379)し、コンテナポートにルーティングすることです。 Redis Docker Documentation を参照してください

Dockerホストに「redis-tools」をインストールします。 Centosは、epelリリースを介してredisをインストールします。

2
Randy Lerma

バージョン4.0.9Docker Toolbox on Win10)を使用すると簡単になります。単純にredisクライアントに接続してから:

set bind 0.0.0.0
save

新しい設定は、停止/開始後に保持されます。

1
Darek