Sha*_*eel 1 setup-project docker
有人可以用一些例子解释一下吗?为什么要构建多容器 Docker 应用程序?而您可以将您的应用程序包含在单个 Docker 容器中。当您制作多容器应用程序时,您必须进行网络连接。运行单个容器的单个映像而不是两个容器的两个映像不是很容易吗?
这样做有几个很好的理由:
重用预构建的图像更加容易。 如果您需要 MySQL、Redis 或 Nginx 反向代理,这些都作为 Docker Hub 上的标准映像存在,您只需将它们包含在多容器 Docker Compose 设置中即可。如果您尝试将它们放入单个映像中,则必须自行安装和配置它们。
Docker 工具是为单一用途容器构建的。 如果你想要多进程容器的日志,docker logs一般会打印出supervisord日志,这不是你想要的;如果您想重新启动其中一个容器,该docker stop; docker rm; docker run序列将删除整个容器。相反,使用多进程容器,您需要使用调试工具docker exec来执行任何操作,这更难管理。
您可以升级其中一部分而不影响其余部分。 升级容器中的代码通常涉及构建新映像、停止和删除旧容器以及从新映像运行新容器。“删除旧容器”部分很重要,而且是例行公事;如果您需要删除数据库来升级应用程序,则可能会面临丢失数据的风险。
您可以缩放一部分而不影响其余部分。 更适用于 Docker Swarm 或 Kubernetes 等集群环境。如果您的应用程序过载(尤其是在生产中),您希望运行它的多个副本,但很难运行标准关系数据库的多个副本。这本质上要求您单独运行这些服务器,这样您就可以运行一个代理、五台应用程序服务器和一个数据库。
设置多容器应用程序应该不会特别困难;最简单的方法是使用 Docker Compose,它将处理诸如创建网络之类的事情。