docker在哪里安装依赖项?

时间:2020-01-23 14:01:48

标签: docker

这是一个初学者的问题,但是我开始学习docker以及如何将每个容器与另一个容器隔离。

在本课程的一个示例中,该视频说,关于docker的妙处是我们可以忽略依赖项冲突,因此,如果我们有image A需要dependency A v1.0image B dependency A v2.0,就像在docker映像中指定它一样简单,我们不必担心版本和其他方面的冲突。

现在我的问题是:

  1. 当我运行docker容器时,那些依赖项安装在哪里?例如,如果我的主机没有dependency A,那么当我运行需要它的docker容器时,它将在哪里安装该容器以运行该容器?

  2. 如果已安装,是否仅隔离到该Docker容器?如果我想在主机上使用dependency A,是否可以从docker容器中安装已安装的版本,还是必须在主机上再次安装它?

  3. 每个Docker容器是否已多次安装依赖项?如果我有5个正在运行的image A容器和10个image B容器,它不会安装dependency A v1.0 5次和dependency A v2.0 10次,对吗?

    < / li>

1 个答案:

答案 0 :(得分:4)

运行docker容器时,这些依赖项安装在哪里?例如,如果我的主机不具有依赖项A,那么当我运行需要它的docker容器时,它将在哪里安装它来运行该容器?

主机上安装的软件与容器内运行的软件无关。容器在隔离的文件系统环境中运行,并且无权访问主机。如果在容器中运行的程序包具有依赖项,则在构建映像时安装该依赖项,而不是在容器运行时安装该依赖项,并且依赖项将与显式安装的所有内容一起安装到映像中。 / p>

如果已安装,是否仅隔离到该Docker容器?如果要在主机上使用依赖项A,是否可以从Docker容器中安装已安装的版本,还是必须在主机上再次安装它?

如上所述,您的容器与主机隔离。主机上的软件将无法利用容器中安装的依赖项。

每个Docker容器是否已多次安装依赖项?如果我有5个正在运行的映像A容器和10个映像B容器,它不会安装5次依赖A v1.0和10次依赖A V2.0,对吗?

运行容器时,除了必要的Docker映像(如果主机上尚不可用)之外,什么都不会“安装”。也就是说,当您docker run <something> ...

  • 如果不存在,Docker将提取必要的图像,然后
  • Docker将从该映像启动一个容器。

构建映像时发生任何软件安装。

如果您有5个正在运行的映像A容器,则仍然仅安装了一个基础映像的副本。