我知道容器是应用程序和主机(托管运行进程)之间的一种隔离形式。我也知道容器映像基本上是运行时环境的包(希望我正确了)。让我感到困惑的是,当他们说Docker映像无法保留状态时。因此,如果我使用数据库(如PostgreSQL)创建Docker映像,那么在停止容器并重新启动时是否不会清除所有数据?为什么我要在Docker容器中使用数据库?
我也很难掌握LXC。在另一个问题页面上,我看到:
LinuX容器(LXC)是操作系统级别的虚拟化 在一个服务器上运行多个隔离的Linux系统(容器)的方法 单控制主机(LXC主机)
那到底是什么意思?这是否意味着只要主机支持LXC,我就可以在同一主机上运行多个版本的Linux?还有什么呢?
答案 0 :(得分:1)
LXC和Docker,两者完全不同。但是我们都说这是容器持有者。
有两种类型的容器,
1.Application容器:其主要座右铭是提供应用程序依赖项。。它们是 Docker容器(轻量级容器)。它们在您的主机中作为进程运行,并完成您想要的所有事情。实际上,他们不需要任何操作系统映像/启动内容。他们来了,他们在几秒钟内就走了。 您不能在Docker容器中运行多个进程/服务。如果需要,可以在docker容器中运行多个进程,但这很麻烦。在这里,资源(CPU,磁盘,内存,RAM)将被共享。
2。系统容器:这些是胖容器,意味着它们很重,需要OS映像 ,但它们却不如虚拟机那么重,它们与虚拟机非常相似,但架构有所不同。
在此,让我们说Ubuntu为主机,如果在ubuntu主机中安装并配置了LXC,则可以运行Centos容器,Ubuntu(具有Differnet版本),RHEL,Fedora和任何linux在Ubuntu主机上添加风味。 您还可以在LXC容器中运行多个进程。这里也将进行资源共享。
因此,如果您有一个大型应用程序在一个LXC容器中运行,则它需要更多资源,同时,如果您有另一个应用程序在另一个LXC容器中运行,而该应用程序需要更少的资源。需求较少的容器将与需求更多的容器共享资源。
回答您的问题:
因此,如果我使用数据库(例如PostgreSQL)创建Docker映像,那么在停止容器并重新启动时是否不会清除所有数据?
您将不会创建包含某些数据的数据库docker映像(不建议这样做)。 您可以从图像运行/创建容器,然后将数据附加/装入。
因此,当您停止/重新启动容器时,如果将数据附加到卷上,则该数据将永远不会丢失,因为该卷位于docker容器以外的其他位置(可能是NFS服务器或主机本身)。
这是否意味着只要主机支持LXC,我就可以在同一主机上运行多个版本的Linux?还有什么呢?
是的,您可以这样做。我们正在生产中运行LXC容器。