Docker 容器的 IP - Virtualbox + Windows
IP of Docker Container - Virtualbox + Windows
在 Windows 机器上,我可以使用什么 IP 地址作为 Virtual Box 上 VM 中 Docker 容器 运行 的 IP?
我有:
- Windows 10 台机器
- 安装了 Ubuntu VM
的 Virtualbox
- 已安装 Docker
- 和一个容器 运行 端口 80/443
在 VM 上,我可以 运行 docker 命令并查看容器 运行ning
vagrant@ubuntu-xenial:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e7a41b3edecd nrel/api-umbrella "api-umbrella run" 17 minutes ago Up 17 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp api-umbrella
vagrant@ubuntu-xenial:~$
那个容器的 IP 是:
vagrant@ubuntu-xenial:~$ docker inspect e7a41b3edecd | grep "IPAddress"
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
vagrant@ubuntu-xenial:~$
我可以在 Windows 机器上 ping IP 172.17.0.2 和 curl http://172.17.0.2 on the VM itself. But when trying http://172.17.0.2 我没有响应。
问题
- 我从 Windows 机器使用什么 IP 来访问虚拟机上的 Docker 容器 运行ning?
如果您将 Windows 与 Ubuntu VM 一起使用,并且在 Ubuntu VM 内部您是 运行ning Docker 容器,您将需要公开您在 docker-compose 文件中或创建 cointainer 时可能需要的端口
docker-compose.yml 示例:
version: '3.1'
services:
rabbitmq:
build:
context: .
dockerfile: Rabbit-Dockerfile
container_name: broker
restart: always
environment:
TZ: GMT
RABBITMQ_DEFAULT_USER: rabbitIpi
RABBITMQ_DEFAULT_PASS: ipitasks2018
tty: true
hostname: rabbit
networks:
celerynet:
aliases:
- rabbit
ports:
- 5672:5672
- 5671:5671
- 4369:4369
- 25672:25672
- 8181:15672
networks:
celerynet:
driver: bridge
docker 运行 示例:
docker run -d -p 80:80 --name webserver nginx
在 Ubuntu VM 中公开容器的端口后,您需要使用容器的端口访问 Ubuntu VM 的 ip。
如果您的 ubuntu VM 上有防火墙,您将需要打开您的容器将使用的端口
为了向主机公开您的 docker IP,您需要将 VM 网络设置设置为 "Bridged Adapter"。
我使用 macOS,但我认为它在 windows 中是一样的。
之后,检查您的 VM IP。例如,如果您的虚拟机 IP 为 192.168.30.100,并且您的 docker 运行 在端口 8000 中。现在您可以使用 IP 192.168.30.100:8000 从您的主机访问您的 docker。
对于windows,Vagrant BOX 如果是Oracle Virtual Box
网络 - 可以处于 NAT 模式
端口转发应该作为规则添加..就像这样
然后可以使用 http:\localhost:3000 浏览
Oracle VM Network settings
要求:
windows 7
docker-toolbox
说明:
- 启动docker快速启动终端
- 主机虚拟机内的 SSH
docker-machine ssh default
- 键入命令
ip addr
- 将列出 IP 地址:
在 Windows 机器上,我可以使用什么 IP 地址作为 Virtual Box 上 VM 中 Docker 容器 运行 的 IP?
我有:
- Windows 10 台机器
- 安装了 Ubuntu VM 的 Virtualbox
- 已安装 Docker
- 和一个容器 运行 端口 80/443
在 VM 上,我可以 运行 docker 命令并查看容器 运行ning
vagrant@ubuntu-xenial:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e7a41b3edecd nrel/api-umbrella "api-umbrella run" 17 minutes ago Up 17 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp api-umbrella
vagrant@ubuntu-xenial:~$
那个容器的 IP 是:
vagrant@ubuntu-xenial:~$ docker inspect e7a41b3edecd | grep "IPAddress"
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
vagrant@ubuntu-xenial:~$
我可以在 Windows 机器上 ping IP 172.17.0.2 和 curl http://172.17.0.2 on the VM itself. But when trying http://172.17.0.2 我没有响应。
问题 - 我从 Windows 机器使用什么 IP 来访问虚拟机上的 Docker 容器 运行ning?
如果您将 Windows 与 Ubuntu VM 一起使用,并且在 Ubuntu VM 内部您是 运行ning Docker 容器,您将需要公开您在 docker-compose 文件中或创建 cointainer 时可能需要的端口
docker-compose.yml 示例:
version: '3.1'
services:
rabbitmq:
build:
context: .
dockerfile: Rabbit-Dockerfile
container_name: broker
restart: always
environment:
TZ: GMT
RABBITMQ_DEFAULT_USER: rabbitIpi
RABBITMQ_DEFAULT_PASS: ipitasks2018
tty: true
hostname: rabbit
networks:
celerynet:
aliases:
- rabbit
ports: - 5672:5672 - 5671:5671 - 4369:4369 - 25672:25672 - 8181:15672
networks:
celerynet:
driver: bridge
docker 运行 示例:
docker run -d -p 80:80 --name webserver nginx
在 Ubuntu VM 中公开容器的端口后,您需要使用容器的端口访问 Ubuntu VM 的 ip。
如果您的 ubuntu VM 上有防火墙,您将需要打开您的容器将使用的端口
为了向主机公开您的 docker IP,您需要将 VM 网络设置设置为 "Bridged Adapter"。
我使用 macOS,但我认为它在 windows 中是一样的。
之后,检查您的 VM IP。例如,如果您的虚拟机 IP 为 192.168.30.100,并且您的 docker 运行 在端口 8000 中。现在您可以使用 IP 192.168.30.100:8000 从您的主机访问您的 docker。
对于windows,Vagrant BOX 如果是Oracle Virtual Box
网络 - 可以处于 NAT 模式 端口转发应该作为规则添加..就像这样 然后可以使用 http:\localhost:3000 浏览 Oracle VM Network settings
要求:
windows 7
docker-toolbox
说明:
- 启动docker快速启动终端
- 主机虚拟机内的 SSH
docker-machine ssh default
- 键入命令
ip addr
- 将列出 IP 地址: