Docker访问容器IP /端口直接
我有docker的容器进行实验。 所以我不知道我将在以后尝试新的应用时使用哪个端口。 是不是可以从主机访问docker容器应用程序与IP /端口,而无需在docker-run命令中公开它?
是的,你可以这么做。
假设您有一个名为boring_pare
的容器和一个在端口8080
上运行的Web应用程序。 您可以通过请求http://[ip_of_boring_pare]:8080
从主机访问它。 如果你使用的是默认的dockernetworking,这个ip可能会在172.17.0.xxx
范围内。
要查找此IP,您可以使用以下方法inspect
您的容器:
docker container inspect boring_pare
另外,你提到:
是不是可以从主机访问docker容器应用程序与IP /端口,而无需在docker-run命令中公开它?
这里正确的术语将被公布 。 进一步阅读:
-
有关
EXPOSE
/ Dockerfile的文档EXPOSE
指令不实际发布端口。 它用作构build映像的人和运行容器的人之间的文档types,关于哪个端口打算发布。 要在运行容器时实际发布端口,请使用docker run
上的-p
标志来发布和映射一个或多个端口,或使用-P
标志来发布所有公开的端口并将它们映射到高阶端口。 -
docker中“揭露”和“发布”的区别
更新回复@ robie2011的评论:
下面我运行3个命令:
- 运行
nginx
容器,而不将port 80
发布到host
端口 - 检查其
ip address
- 使用
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> $