Docker直接访问容器IP/端口
我有用于实验的docker容器。因此,我不知道稍后尝试新应用时将使用哪些端口。Docker直接访问容器IP/端口,docker,docker-for-mac,Docker,Docker For Mac,我有用于实验的docker容器。因此,我不知道稍后尝试新应用时将使用哪些端口。 如果不在docker run命令中公开docker容器应用程序,是否可以从主机访问具有ip/port的docker容器应用程序?更新:OP没有提供原始问题中关于mac的docker,因此如果您使用此版本的docker,则无法应用其余内容 原始答案: 是的,你能做到 假设您有一个名为boring\u pare的容器和一个运行在端口8080上的web应用程序。通过请求http://[ip\u of\u pare]:80
如果不在docker run命令中公开docker容器应用程序,是否可以从主机访问具有ip/port的docker容器应用程序?更新:OP没有提供原始问题中关于mac的
docker
,因此如果您使用此版本的docker,则无法应用其余内容
原始答案: 是的,你能做到 假设您有一个名为
boring\u pare
的容器和一个运行在端口8080
上的web应用程序。通过请求http://[ip\u of\u pare]:8080
,您可以从主机访问它。如果您使用默认的docker网络,此ip可能在172.17.0.xxx
范围内
要查找此IP,您可以使用以下方法检查容器:
docker container inspect boring_pare
此外,你提到: 如果不在docker run命令中公开docker容器应用程序,是否可以从主机访问具有ip/port的docker容器应用程序 这里正确的术语应该是出版。进一步阅读:
- 关于
/Dockerfile …EXPOSE指令实际上并不发布端口。它作为构建映像的人员和运行容器的人员之间的一种文档类型,用于发布哪些端口。要在运行容器时实际发布端口,请使用公开
上的docker run
标志发布并映射一个或多个端口,或使用-p
标志发布所有公开的端口并将其映射到高阶端口-p
更新回答客户的评论: 下面,我运行3个命令:
nginx
容器,而不将端口80
发布到主机
端口ip地址
curl
从host
访问nginx
主页$ docker run --rm --name some-nginx -d nginx
0e53d3b5ef6d65a4731c4066f3523c5ecd3c118abedae44b33e89fdf8e401632
$ docker container inspect --format '{{ .NetworkSettings.IPAddress }}' some-nginx
172.17.0.3
$ curl 172.17.0.3
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
$
$docker run--rm--name一些nginx-d nginx
0E53D3B5EF6D65A4731C4066F3523C5ECD3C118ABEDEA44B33E89FDF8E401632
$docker container inspect--格式化{{.NetworkSettings.IPAddress}}某些nginx
172.17.0.3
$172.17.0.3
欢迎来到nginx!
身体{
宽度:35em;
保证金:0自动;
字体系列:Tahoma、Verdana、Arial、无衬线字体;
}
欢迎来到nginx!
如果您看到此页面,则nginx web服务器已成功安装,并且
工作需要进一步配置
有关在线文档和支持,请参阅
.
商业支持可从以下网址获得:
感谢您使用nginx
$
Docker for Mac无法将流量路由到容器,也无法将流量从容器返回到主机
基本上,您希望在运行的容器中公开新端口,对吗?以下是docker论坛的相关讨论。我试过其中一些,发现效果很好。对我来说不起作用。这里有两个例子:
docker-run——命名一些nginx-d nginx
这里有一个证明,这应该可以在端口80上运行docker-run-p9999:80——命名一些-nginx2-d nginx
@robie2011我在回答的末尾添加了我从curl
主机运行到容器运行时得到的结果。I按照你的步骤做,但对我不起作用。我正在使用macosx,并有以下运行时可能是mac问题?@robie2011确切地说无法从macOS主机访问docker(Linux)网桥网络。
。我认为@tgogos没有使用MacOS