Docker-机器群;如何在虚拟机上打开端口
Docker-machine swarm; how to open ports on VM
正在尝试新的 "swarm mode",继 this 之后。我已经通过 docker-machine create --driver virtual box <name>
创建了 3 个虚拟机。但是我如何打开它们的端口?
它可能与在节点上执行的 docker run -p <public-port>:<internal-port> <image>
一起工作。然而,既然你想 运行 一群,我想最好遵循 solve the routing mess here 的一个很好的指南。如果您按照作者的建议,您需要先通过 docker-machine
命令创建一个 swarm(即 docker 主机集群),例如
docker-machine create --driver virtualbox swarm-1
docker-machine create --driver virtualbox swarm-2
设置群
eval $(docker-machine env swarm-1)
docker swarm init --advertise-addr $(docker-machine ip swarm-1)
加入其他机器(如果有的话)
eval $(docker-machine env swarm-2)
docker swarm join \
--token <yourtoken> 192.168.99.106:2377
在 docker swarm init
命令的输出中找到 <yourtoken>
。
然后作者建议创建一个类似
的网络
docker network create --driver overlay webnet
并通过定义类似
的服务来发布端口
docker service create --name webapp --replicas=2 --network webnet --publish 80:8000 <yourdockerimage>
在本例中,您的docker映像在内部 运行8000 端口上运行一个服务,该服务映射到 docker 主机的 80 端口。然后,您可以访问服务,例如通过
curl http://<IP-address of any Docker swarm node>:80
请注意,您可以访问任何 Docker swarm 节点的 IP 地址。 Docker swarm 会施展魔法并将请求路由到此服务的容器,即使您选择了节点的 IP 地址,但 运行 没有此服务的容器。
正在尝试新的 "swarm mode",继 this 之后。我已经通过 docker-machine create --driver virtual box <name>
创建了 3 个虚拟机。但是我如何打开它们的端口?
它可能与在节点上执行的 docker run -p <public-port>:<internal-port> <image>
一起工作。然而,既然你想 运行 一群,我想最好遵循 solve the routing mess here 的一个很好的指南。如果您按照作者的建议,您需要先通过 docker-machine
命令创建一个 swarm(即 docker 主机集群),例如
docker-machine create --driver virtualbox swarm-1
docker-machine create --driver virtualbox swarm-2
设置群
eval $(docker-machine env swarm-1)
docker swarm init --advertise-addr $(docker-machine ip swarm-1)
加入其他机器(如果有的话)
eval $(docker-machine env swarm-2)
docker swarm join \
--token <yourtoken> 192.168.99.106:2377
在 docker swarm init
命令的输出中找到 <yourtoken>
。
然后作者建议创建一个类似
的网络docker network create --driver overlay webnet
并通过定义类似
的服务来发布端口docker service create --name webapp --replicas=2 --network webnet --publish 80:8000 <yourdockerimage>
在本例中,您的docker映像在内部 运行8000 端口上运行一个服务,该服务映射到 docker 主机的 80 端口。然后,您可以访问服务,例如通过
curl http://<IP-address of any Docker swarm node>:80
请注意,您可以访问任何 Docker swarm 节点的 IP 地址。 Docker swarm 会施展魔法并将请求路由到此服务的容器,即使您选择了节点的 IP 地址,但 运行 没有此服务的容器。