已使用以下方法在docker中创建了桥网络:
docker network create blognetwork
并且已经在网络中使用以下内容创建了一个容器:
docker run --name=blogdb --network=blognetwork -p 3306:3306 -e --bind-address=0.0.0.0 -e=MYSQL_ROOT_PASSWORD=mypassword -detach mysql
如何从Windows主机访问“博客网络”中新容器的IP地址?
如何单独获取X.X.X.X格式的IP地址?我知道我可以使用以下命令获取包含此数据的大型json输出:
docker network inspect blognetwork
答案 0 :(得分:5)
您可以使用docker inspect和适当的格式直接获取IP:
docker inspect containerId --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
中的更多信息
答案 1 :(得分:2)
您可以使用docker inspect直接获取IP地址。 Docker inspect提供了有关由Docker控制的构造的详细信息。
现代Docker客户端语法为:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
旧Docker客户端语法为:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id
这些命令将返回Docker容器的IP地址。
如果您使用的是Windows,请在大括号周围使用双引号“而不是单引号”。
有关更多信息,Docker inspect documentation。
答案 2 :(得分:1)
这是用于获取容器信息以及容器IP的命令。
docker inspect 'ContainerID'
答案 3 :(得分:0)
自从你跑了
docker run -p 3306:3306 ...
您应该使用主机的DNS名称或IP地址通过端口3306访问该服务。
在非常特殊的情况下,假设您未使用Docker Machine或Docker Toolbox,则在运行docker run
的计算机上出现shell提示符或浏览器URL条目时仅在这种情况下,您可以使用localhost:3306
访问该容器。除非您完全清楚这是什么意思,否则切勿将localhost
用于Docker周围的任何其他用途。 (如果您曾经写过一个使用“ ...的...的本地主机”的问题,那么本地主机就不是您想要的。)
如果您试图从另一个容器到达这个容器,因为您已经运行了
docker run --name=blogdb --network=blognetwork ...
您可以使用名称blogdb
作为主机名,并且Docker提供了内部DNS服务,可以将其解析为可以到达容器的内容。
您永远不需要Docker内部IP地址,并且永远不要运行docker inspect
来尝试找到它。它的两个最大问题是,它在脱离主机时无法访问,并且在删除和重新创建容器后会更改。