簡體   English   中英

Docker:當使用 docker 運行而不是 ZBAEDB53E845AE71F1394AE63BCE4Z 時,無法連接到 Redis

[英]Docker: Not able to connect to Redis when using docker run instead of docker-compose up

我在 windows 家庭版上使用 docker 工具帶。 I'm trying to use Node with Redis using docker-compose, it is working well when I'm running the image using docker-compose up (in the same source directory), but when I try to run it using docker run -it myusername/myimage ,我的 Node 應用程序無法連接到 Redis。

投擲:

Error: Redis connection to redis-server:6379 failed - getaddrinfo ENOTFOUND redis-server
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:60:26) {
  errno: 'ENOTFOUND',
  code: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'redis-server'
}

我相信這是因為我的節點應用程序無法找到 Redis,即使當我使用docker-compose up時應用程序正在運行,我也無法在相應的端口上訪問它,即 localhost:3000。

這是我的 docker-compose.yml

version: '3'
services:
  my_api:
    build: .  
    ports:
     - "3000:3000"
    image: my_username/myimage
    links: 
     - redis-server:redis-server 
  redis-server:
    image: "redis:alpine"

我面臨兩個問題,我相信它們都是相互關聯的。

編輯

這可能是因為 windows 家庭版的虛擬化問題嗎? 因為它不使用 Hyper V,我剛剛嘗試過 docker 所以我不太了解,但大衛的回答很有意義,可能是因為各種網絡,我需要連接到有效的網橋或者。

這是我做docker network ls時得到的

NETWORK ID          NAME                      DRIVER              SCOPE
5802daa117b1        bridge                    bridge              local
7329d018df1b        collect_api_mod_default   bridge              local
5491bfee5551        host                      host                local
be1353789426        none                      null                local

當您在同一個docker-compose.yml文件中運行整個堆棧時, Compose 會自動為您創建一個 Docker 網絡,這使得跨服務 DNS 請求工作。

如果您嘗試手動docker run容器,並且根本沒有指定--net選項,那么您會得到 Docker 調用默認橋接網絡的東西,這顯然不太有用。 您需要確保您的容器連接到與 Redis 服務器相同的 Docker 內部網絡。

您可以運行docker network ls以獲取 Docker 網絡列表; 鑒於docker-compose.yml文件可能會有一個名為source_directory_default的文件。 取該名稱並將其傳遞給您的docker run命令(在圖像名稱之前)

docker run --net source_directory_default -p 3000:3000 my_username/my_api

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM