【问题标题】:Docker ip for windowsWindows 的 Docker ip
【发布时间】:2017-06-02 05:41:53
【问题描述】:

我正在使用一个基本的 .NET 核心项目来测试 Docker。我从这个 docker 文件构建和映像:

FROM microsoft/dotnet:latest

COPY . /app

WORKDIR /app/API

RUN ["dotnet", "restore"]

RUN ["dotnet", "build"]

EXPOSE 5000/tcp

CMD ["dotnet", "run", "--server.urls", "http://*:5000"]

我运行它,它完美无缺。现在唯一的问题是,它在什么 IP 上运行?

我正在 Windows 上运行 Docker!

问候

【问题讨论】:

  • 您运行的是“Docker for Windows”还是“Docker Toolbox for Windows”?如果是 Docker Toolbox,默认 ip 地址应该是 192.168.99.100,启动 docker shell 应该可以看到,否则 ip 地址应该和本地机器一样。
  • 嗨!我正在为 Windows 运行 docker。所以你的意思是我电脑的实际IP,不是默认/ ipv4,而是我从例如得到的IP。 myipchicken 什么的 :) ?
  • @Takahiro 我的 localhost、默认、ipv4 和公共 ip 都不起作用。

标签: windows docker asp.net-core


【解决方案1】:

您已经在内部公开了端口,所以我唯一可以建议的另一件事是在启动映像时检查您是否也打开了端口:

docker run -it -p 5000:5000 <imagename>

这会将实例内部的 5000 端口打开到本地计算机上的 5000 端口,然后应该可以通过 127.0.0.1:5000localhost:5000 访问。

您还应该确保您在Program.cs.UseUrls("http://*:5000/") 中接受Main() 中的任何主机名WebHostBuilder

【讨论】:

    【解决方案2】:

    我在 docker for windows 上运行为 dotnet asp.net core 2 构建的 linux 容器时遇到了一些问题。

    我用来运行容器的命令是:

    docker run -it --rm -p 3394:3394 --name <name> <container>
    

    我可以外壳到容器并验证应用正在侦听并返回结果。

    但是,尝试从我的机​​器上的 3394 端口访问应用程序不适用于 127.0.0.1localhost 或我机器在网络上的 NAT ip。

    但是,运行此命令会给出 docker 主机分配的 IP 地址:

    docker inspect -f "{{ .NetworkSettings.IPAddress }}" <name>
    

    在我的例子中,IP 是172.17.0.2。但是,访问172.17.0.2:3394 仍然无效。

    最后需要在提升的 dos 提示符下运行以下命令:

    route /P add 172.0.0.0 MASK 255.0.0.0 10.0.75.2
    

    这添加了一条路由,因此我的机器不会通过我的 WAN 寻找地址,这是通过 tracert 诊断的。

    归功于https://github.com/docker/for-win/issues/221

    【讨论】:

    • 我照你说的做了,仍然无法在172.17.0.2:5555访问我的httpd容器
    • @SlimenTN 返回什么 docker inspect -f "{{ .NetworkSettings.IPAddress }}"
    • 没关系,当我禁用 WAMP 时,它现在可以工作了,我可以通过 http://localhost:5555 访问容器
    【解决方案3】:

    我能够通过 docker 机器 IP 地址连接到暴露的容器端口:

    docker-machine ip
    

    就我而言,这是192.168.99.100

    所以对于我的 mysql 容器 (docker run -d -p 3306:33060 -e MYSQL_ROOT_PASSWORD=password mysql:5.7) 所以我可以通过192.168.99.100:33060进行连接

    【讨论】:

      【解决方案4】:

      运行以下命令以使用 docker 启动 MYSQL 实例

      本地目录安装 E:\docker\mysql-db/var/lib/mysql 。在运行此命令之前,请确保创建一个本地目录并将其传递到 -v 旁边以进行挂载

      docker run --name mysql-server -p 3306:3306 -v E:\docker\mysql-db:/var/lib/mysql -e 
      MYSQL_DATABASE=testcase -e MYSQL_USER=testuser -e MYSQL_PASSWORD=testuser123 -e 
      MYSQL_ROOT_PASSWORD=root123 -d mysql:latest --character-set-server=utf8mb4 --collation- 
      server=utf8mb4_unicode_ci 
      

      根据 mysql 的 docker 官方文档。此命令是首次设置,因为它涉及密码和用户名。第一次设置容器后,下次可以直接启动容器。

      您现在可以在命令中使用上述凭据连接到您的数据库。

      在这里查看:https://hub.docker.com/_/mysql

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-29
        相关资源
        最近更新 更多