【问题标题】:Finding the IP address of the docker container查找 docker 容器的 IP 地址
【发布时间】:2022-08-15 03:02:55
【问题描述】:

我对 Docker 相当陌生,并且已经设置了一个快速 api docker 容器。我需要通过 http 请求与本地运行的 docker 容器中的 fast-api 通信,但是我无法确定我的 fast-api docker 容器运行的 IP 地址。我的 dockerfile 是:

FROM jhonatans01/python-dlib-opencv
COPY . .
RUN pip3 install -r requirements.txt
CMD [\"uvicorn\", \"main:app\", \"--reload\"]

当我在本地运行 fast-api 时,

uvicorn main:app --reload

终端告诉我实例在哪里运行。但是 docker 不提供任何输出。我看过http://192.168.99.100http://127.0.0.1 没有成功。感谢任何帮助。

  • 试试docker ps -a,它会列出docker端口,如果docker在本地运行,它将是localhost127.0.0.1
  • 这需要映射一个端口(@98​​7654328@ 参数)。

标签: python docker dockerfile fastapi docker-networking


【解决方案1】:

以下是我找到容器 IP 地址的方法:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' your_container_id

【讨论】:

    【解决方案2】:

    在使用docker run 运行应用程序时,您可以传递一个名为--network host 的选项。这将在 127.0.0.1 上运行您的应用程序

    您将不需要容器 IP 来访问您的应用程序

    但是,如果您无论如何都想知道容器 IP 你可以做

    docker ps 
    // to list all the docker containers
    
    docker inspect <container_id> 
    // you will get container_id from the output of 1st command
    

    这将为您提供一个包含所有信息(当然还有 IP)的 json


    另一个解决方案:

    正如 Kiaus 的评论所暗示的那样..

    您可以进行端口绑定,这意味着您必须在 docker run 命令中传递选项 -p &lt;port1&gt;:&lt;port2&gt;

    比如说,您的 python 应用程序正在 8000 上运行 您可以通过-p 7000:8000,现在您的应用程序将在localhost:7000 上打开

    【讨论】:

    • --network host 一般禁用 Docker 的网络层;您几乎永远不需要它,而且它不是常规连接到容器的合适方式。容器专用 IP 地址也无法使用,除非在一个非常特定的 Docker 主机操作系统设置中,并且永远不需要查找它们。
    猜你喜欢
    • 2021-07-08
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多