docker os 容器与应用程序容器
docker os container vs app container
我不确定使用 docker 容器的最佳做法是什么。当我使用 VM 时,比如 ubuntu,对于 运行 网络应用程序,我安装了 运行 应用程序所需的所有软件,例如数据库、网络服务等,并像独立的一样使用操作系统。
但是,Docker 可以用不同的方式使用。
鉴于我想要 运行 网络应用程序的场景,我有两个选择:
将所有软件安装在一个容器上;安装数据库,java,以及 运行 所需的所有其他必要软件(即像我使用 VM 一样使用)。
将每个应用程序安装在单独的容器上;一个容器中的数据库,另一个容器中的 Web 服务,并让它们相互通信。
选项 1) 似乎更容易部署全栈应用程序,但如果包之间存在一些依赖性复杂问题或为每个软件分配 OS 资源,则可能更难扩展。
选项 2) 似乎更难部署,但每个容器都可以轻松升级。
Docker 用户的常见做法是什么?
中也注明了对此的回答
最好的方法是为每个服务(应用程序)使用一个单独的容器。通过这种方式,您可以 upgrade/modify 每个服务独立于其他容器。 Docker 非常适合微服务架构。
使用 Docker Compose 运行 只需一个命令即可连接所有容器:docker-compose up
。在 Docker Compose 中,您可以定义容器之间的依赖关系。所以,他们会自动连接。
如果你想 运行 每个容器都在一个单独的 Linux 主机上,你可以使用 Docker Swarm 这样你就不必关心网络了。
我不确定使用 docker 容器的最佳做法是什么。当我使用 VM 时,比如 ubuntu,对于 运行 网络应用程序,我安装了 运行 应用程序所需的所有软件,例如数据库、网络服务等,并像独立的一样使用操作系统。
但是,Docker 可以用不同的方式使用。
鉴于我想要 运行 网络应用程序的场景,我有两个选择:
将所有软件安装在一个容器上;安装数据库,java,以及 运行 所需的所有其他必要软件(即像我使用 VM 一样使用)。
将每个应用程序安装在单独的容器上;一个容器中的数据库,另一个容器中的 Web 服务,并让它们相互通信。
选项 1) 似乎更容易部署全栈应用程序,但如果包之间存在一些依赖性复杂问题或为每个软件分配 OS 资源,则可能更难扩展。
选项 2) 似乎更难部署,但每个容器都可以轻松升级。
Docker 用户的常见做法是什么?
中也注明了对此的回答最好的方法是为每个服务(应用程序)使用一个单独的容器。通过这种方式,您可以 upgrade/modify 每个服务独立于其他容器。 Docker 非常适合微服务架构。
使用 Docker Compose 运行 只需一个命令即可连接所有容器:docker-compose up
。在 Docker Compose 中,您可以定义容器之间的依赖关系。所以,他们会自动连接。
如果你想 运行 每个容器都在一个单独的 Linux 主机上,你可以使用 Docker Swarm 这样你就不必关心网络了。