繁体   English   中英

从同一主机上的另一个 docker 容器连接到 Milvus 独立服务器(在 docker 容器中)

[英]Connect to Milvus standalone server (in docker container) from another docker container on the same host

当我在 docker 上以独立模式运行 Milvus 时(通过在默认的 Milvus docker-compose.yml 文件上执行 docker-compose,导致创建三个容器),我无法从同一主机上另一个 docker 容器中运行的任务连接到 Milvus 服务器. 我已经将这个容器配置为与 Milvus 服务器在同一个网络上,我可以通过 Milvus 服务器的 IP 从这个容器中 ping Milvus 服务器。

在我运行的任务容器中:

connections.connect(
    alias="default", 
    host='192.168.192.4', 
    port='19530',
    secure=False
    )

错误日志显示:

Traceback (most recent call last):
File "task.py", line 45, in
secure=True
File "/usr/local/lib/python3.7/site-packages/pymilvus/orm/connections.py", line 262, in connect
connect_milvus(**kwargs, password=password)
File "/usr/local/lib/python3.7/site-packages/pymilvus/orm/connections.py", line 233, in connect_milvus
gh._wait_for_channel_ready()
File "/usr/local/lib/python3.7/site-packages/pymilvus/client/grpc_handler.py", line 118, in _wait_for_channel_ready
raise MilvusException(Status.CONNECT_FAILED, f'Fail connecting to server on {self._address}. Timeout')
pymilvus.exceptions.MilvusException: <MilvusException: (code=2, message=Fail connecting to server on 192.168.192.4:19530. Timeout)>

192.168.192.4 是 milvus-standalone 容器的 ip 地址。

原来这不是 Milvus 的问题。 问题是由我们的 corporate.network 和代理要求引起的。 在 dockerfile 中,我需要设置代理设置才能拉取图像。 但是,这会在构建期间为容器设置代理设置。 这些代理设置阻止了容器之间的通信。 需要在 dockerfile 中重置代理设置。修复如下所示:

FROM python:3.9.12

ENV https_proxy <proxy settings>

COPY requirements.txt /

RUN pip3 install --proxy <proxy settings> -r requirements.txt

COPY task.py /

ENV https_proxy ""

CMD ["python3", "-u", "task.py"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM