Redis Dockerインスタンスを作成しました
$ docker pull redis
その後、私はこのようにそれを実行しました。
$ docker run --name=redis --detach=true --publish=6379:6379 redis
私は以下を得ます
$ docker ps
key redis "/sbin/entrypoint.sh" 22 minutes ago Up 22 minutes 0.0.0.0:6379->6379/tcp redis
上記のことは、ローカルホストのポート6379、127.0.0.1、または0.0.0.0でリスニングを実行していることを意味します。
しかし、驚いたことに、接続しようとすると、接続が拒否されて応答します。
誰かが光を投げてもらえますか?.
環境(OS、Dockerのインストールなど)に関する詳細情報を提供する必要がありますが、基本的には、次のようにRedisコンテナーを起動する場合:
docker run --name=redis-devel --publish=6379:6379 --hostname=redis --restart=on-failure --detach redis:latest
何があってもポートを公開する必要があります。接続できない唯一の理由は、ブリッジインターフェースをめちゃくちゃにしたか、Linuxを使用しているか、独自のネットワークインターフェースとIPアドレスを備えたDockerマシンを使用していて、そのIPアドレスに再接続しないでください。 Mac用のDockerを使用している場合、Macホストでのブリッジングはまだ機能しないため、ローカルホストアドレスへのルーティングのみがサポートされます。
とにかく、Docker for Mac(古いDocker Toolboxではありません)を備えたMacOSでは、次の手順で作業を開始できます。
➜ ~ docker run --name=redis-devel --publish=6379:6379 --hostname=redis --restart=on-failure --detach redis:latest
6bfc6250cc505f82b56a405c44791f193ec5b53469f1625b289ef8a5d7d3b61e
➜ ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6bfc6250cc50 redis:latest "docker-entrypoint.s…" 10 minutes ago Up 10 minutes 0.0.0.0:6379->6379/tcp redis-devel
➜ ~ redis-cli ping
PONG
➜ ~
検出されたredisのポートを見つけ、それを使用して接続します
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-server
Docker-compose https://docs.docker.com/compose/ を使用することをお勧めします
あなたのdocker-compose.yml
redis:
image: redis
ports:
- "6379:6379"
この後、実行できます:
$ docker-compose run redis /bin/bash
$ redis-server
$ redis-cli ping
返す必要があります:PONG
Redisサーバーは正常に見えるため、Redisクライアントが原因のネットワークの問題のように見えます。
Redis Dockerページは少し混乱していることに注意してください。 redis-cliを介してredisに接続するには、次のように入力する必要があると記載されています。
docker run -it --network some-network --rm redis redis-cli -h some-redis
ただし、これにより、基本的にRedisクライアントである別のDockerコンテナーが作成されます。同じネットワークに接続されていないため、redisサーバーに接続できません。
あなたは次のように少し違うことをすることができます:
docker network create some-network
docker run --name redis-server --network some-network -d redis
docker run -it --network some-network --rm redis redis-cli -h redis-server
もう1つのオプションは、実際にポート6379をマッピングすることですが、自分のコンピューターにダウンロードする必要があるredisクライアントを使用する必要があります。
Redisの設定例 を最初の場所として使用している場合(この問題が発生したときのように)、bind 127.0.0.1
ディレクティブとprotected-mode yes
の組み合わせでは許可されませんでしたDockerコンテナ間の通信用。私の目的のために、bind
ディレクティブをコメントアウトし、protected-mode
ディレクティブをno
に設定しました。