[REDIS] 맥 OS 10.12 두 도커 용기 간의 통신
REDIS맥 OS 10.12 두 도커 용기 간의 통신
나는 맥 OS 10.12에 도커 1.12.5 함께 일하고 있어요, 내가 응용 프로그램 이미지가 함께있는 개발 환경, 일부 사전 인구 구성 변수가 공유 레디 스 이미지를 설정하고있다.
심지어 몇 가지 튜토리얼을 다음과 (와 docker0는 Mac에서 사용할 수없는 방법에 대해 읽기) 나는 두 개의 컨테이너를 연결하기 위해 사투를 벌인거야 후.
나는 사용하여 내 레디 스 이미지를 시작합니다 :
docker run -d -p 6379:6379 (IMAGE ID)
내 레디 스 이미지에서 내가 가진 :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dffb89854618 d59 "docker-entrypoint.sh" 20 seconds ago Up 19 seconds 0.0.0.0:6379->6379/tcp drunk_williams
그리고 내 맥 나는 성공적으로 문제없이 레디 스-CLI 명령을 통해 연결할 수에서.
나는 간단한 우분투 이미지를 시작할 때 그러나, 나는이 별도의 레디 스 이미지에 연결할 수없는 것 :
root@2d4eda315f4f:/# ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:03
inet addr:172.17.0.3 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20707 errors:0 dropped:0 overruns:0 frame:0
TX packets:11515 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:28252929 (28.2 MB) TX bytes:635848 (635.8 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:680 (680.0 B) TX bytes:680 (680.0 B)
root@2d4eda315f4f:/# telnet localhost 6379
Trying ::1...
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
root@2d4eda315f4f:/# telnet 172.17.0.3 6379
Trying 172.17.0.3...
telnet: Unable to connect to remote host: Connection refused
이 호스트에서 사용할 수있는 docker0 인터페이스를 가지고 있지의 결과인가? 개발 환경에서 (동일한 호스트에서 실행되고있는 경우)이 컨테이너가 통신 할 수 있도록 몇 가지 간단한 해결 방법이 있습니까?
업데이트 : 명명 컨테이너를 사용하려고, 난 여전히 연결할 수 없습니다.
docker run -d --name redis_server redis
결과 :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5d05820aa985 redis "docker-entrypoint.sh" 43 hours ago Up 1 seconds 6379/tcp redis_server
그러나 나는 새로운 우분투 컨테이너를 시작하는 경우 :
root@e92b47419bc4:/# redis-cli -h redis_server
Could not connect to Redis at redis_server:6379: Name or service not known
나는 확실하지 찾는 방법 / 연결 첫 redis_server 컨테이너입니다.
해결법
-
==============================
1.각 서비스는 자체 컨테이너에서 실행됩니다. 우분투 용기의 관점에서, 레디 스 로컬 호스트에서 수신되지 않습니다.
각 서비스는 자체 컨테이너에서 실행됩니다. 우분투 용기의 관점에서, 레디 스 로컬 호스트에서 수신되지 않습니다.
통신하도록 용기를 얻으려면, 그들은 같은 도커 네트워크에 있어야합니다. 이 세 가지 단계로 구성
이 작업이 완료하면, 컨테이너가 호스트 인 것처럼 자신의 이름을 사용하여 서로 대화 할 수 있습니다.
피부에 하나 개 이상의 방법이 고양이는 내가이 답변에 두 볼 것이다 ... 있어요,하지만 난 (예를 들어,는 Kubernetes 또는 스웜을 사용하여 같은)에 익숙하지 오전 그것을 할 수있는 몇 가지 다른 방법이 아마이 있습니다.
당신은 고정 표시기 네트워크 명령을 사용하여이 응용 프로그램에 대한 네트워크를 만들 수 있습니다.
# Show the current list of networks docker network ls # Create a network for your app docker network create my_redis_app
당신은 레디 스 컨테이너를 실행하면이 이름을 가지고 있으며,이 네트워크에 연결되어 있는지 확인합니다. 당신이 (-p 사용)에 원하는 경우 (맥 OS에) 외부 포트를 노출 할 수 있지만, 그건 그냥 레디 스에 대한 이야기를 다른 용기에 대한 필요가 없습니다.
docker run -d -p 6379:6379 --name redis_server --network my_redis_app <IMAGE ID>
이제 우분투 컨테이너를 실행합니다. 당신은뿐만 아니라 당신이 좋아하는 경우에 이름을 지정할 수 있습니다, 그러나 이것은 어떤 서비스를 실행하지 않기 때문에 나는이 예제에서 귀찮게하지 않습니다.
docker run -it --network my_redis_app ubuntu bash
이제 우분투 컨테이너 내부에서, 당신은 DNS 이름 인 것처럼, 이름 redis_server을 사용하여 레디 스 도달 할 수 있어야합니다.
그것은 YAML 파일 (IMO)로 쓰기 쉽게 때문에, 작성을 사용하여이 같은 설정을 구축하는 경향이있다. 다음의 예 상기 재 작성된 고정 표시기-compose.yml 형태 :
version: '2' services: redis: image: <IMAGE ID> networks: - my_redis_app ports: 6379:6379 ubuntu: image: ubuntu:latest networks: - my_redis_app networks: my_redis_app: driver: bridge
장소에두고, 당신은 고정 표시기-작성까지 -d 레디 스를 실행하고 특정 도커 네트워크를 사용하여 온라인으로 레디 스 서비스를 할 수 있습니다. 이미 존재하지 않는 경우 작성, 당신의 네트워크를 생성합니다.
이 방법은 ... 그것은 물론, 상호 작용하는 우분투 컨테이너를 실행하는 작은 의미가 있습니다. 그러나 나는 당신이 레디 스가는 일단, 당신은 단지 서비스에서 다른 사람을 넣어뿐만 아니라, 당신은 모두 함께 관리 할 수 있습니다 ... 응용 프로그램 컨테이너 어떤 종류의, 그리고 nginx를 같은 아마도 웹 프록시를 추가 할 것입니다 가정합니다.
우분투 상호 작용이기 때문에, 당신은 그것을 대화식으로 실행할 수 있습니다 :
# without -d, container is run interactively docker-compose run ubuntu bash
그리고 지금 우분투, 당신은이 예에서 단순히 레디 스 자사의 이름을 사용하여 레디 스에 연결할 수 있어야합니다.
from https://stackoverflow.com/questions/41433411/communication-between-two-docker-containers-on-macos-10-12 by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 레디 스 / Node.js를 - 2 클라이언트 (1 술집 / 하위) 쓰기와 원인이 문제 (0) | 2020.01.16 |
---|---|
[REDIS] 어떻게 다른 포트에 단일 서버에서 레디 스를 실행할 수 있습니까? (0) | 2020.01.16 |
[REDIS] 때문에 설정 파일 오류로 레디 스 서버를 시작할 수 없습니다 (0) | 2020.01.16 |
[REDIS] Heroku가와 RedisToGo에 Resque, Resque 서버, (0) | 2020.01.16 |
[REDIS] 어떻게 futures.rs와 레디 스 PubSub를 사용하여 차단 호출을위한 선물의 스트림을 구현하는 방법? (0) | 2020.01.16 |