我创建了一个运行mongodb实例和Web服务器的映像。它只暴露端口8000(用于Web界面) Web服务器是一个nodejs应用程序(sails.js),它连接到容器本地的mongodb实例。
然后用这张图片运行2个容器(在同一台机器上):
sudo docker run -P test/server
第一个容器的端口8000映射到49169,第二个容器的端口8000映射到49170.
然后我在第一台服务器(49169)上打开浏览器并登录。
问题是,当我打开浏览器到第二台服务器(49170)时,我不需要像使用第一台服务器那样登录。这2个容器(暴露同一个端口)是否真的是孤立的?我应该为每个端口使用不同的端口(即使Docker将端口8000映射到主机上的2个不同端口)吗?
更新
问题尚未解决,但似乎2个容器使用相同的mongo db实例。我不明白,因为我使用mongo的图像来构建我的应用程序的图像
答案 0 :(得分:0)
Web服务器使用什么框架?如果您正在使用,例如Django和应用程序连接到同一个数据库,您将看到已登录(因为您的会话驻留在数据库中)。
答案 1 :(得分:-1)
是的,这两个容器将独立运行。 Docker运行将使用不同的主进程启动这些容器。这里唯一常见的是它们在容器内的相同端口上运行,但是将它们映射到主机中的不同端口使得应用程序可以直接从主机访问。