Docker中是否有名称空间的概念或类似的概念?
不是真的,不是(但继续阅读)。
使用虚拟机[…]可以解决我的问题吗?…这不是一种过度杀戮吗?会不会增加额外的麻烦?
这是一个相当合理的解决方案。如果您希望进一步自动化部署,这尤其正确:您应该能够模拟启动一个干净的虚拟机,然后在其上运行配置脚本,然后将其移植到实际的生产环境中。
Vagrant
是一个非常典型的工具来尝试这个。最大的问题将是网络连接到各个虚拟机,这不是什么大问题。
也许有一种
--hostname
对于
docker run
允许使用此名称从其他容器访问容器的命令?
docker run --network-alias
非常简单地提到
in the
docker run
documentation
并且有这种效果。
docker network connect --alias
is slightly more documented
并影响已创建的容器。
对于我想要实现的目标,有没有专门的开源解决方案?
码头工人组成
主要地
如果您想离开现有的shell脚本解决方案,可以为您管理这个:它在创建的所有网络和卷上放置一个名称前缀,并为每个容器在yaml文件中匹配其名称创建网络别名。如果主机卷装载与当前目录相关,那么该内容也相当独立。有一件事是您不能轻易地在单独的主机端口上启动堆栈的每个副本,因此您必须解决这些冲突。
Kubernetes有一个名称空间的概念,它实际上正是您所要求的,但是采用它是一项巨大的投资,它将涉及到重写部署序列,甚至比Docker撰写还要多。