如果我在docker image中运行sudo apt-get update并将其作为容器运行,我是否还需要在机器上进行sudo apt-get update?我仍然试图了解Docker究竟是如何工作的,因为我的大脑的一部分告诉我Docker容器中运行的所有东西都依赖于Docker容器本身内部的所有内容,所以没有必要对apt-get update进行更新。机器也是,我脑子的另一部分告诉我这不对,所以我现在很困惑。
答案 0 :(得分:0)
每当你在docker apt-get update
或container
内运行Dockerfile
时,它实际上是创建它自己的隔离空间,它将在该特定空间中运行所有命令仅影响您的物理服务器/环境容器和您的物理服务器/环境共享kernel
。因此,如果您运行apt-get update
或任何其他命令,而不是在您正在创建的docker容器或docker镜像中运行。
我强烈建议您阅读此答案以了解您对码头工作者的理解。 docker and virtual machine
希望这会对你有帮助!
谢谢!
答案 1 :(得分:0)
这些依赖关系并不像你期望的那样硬连接到docker主机(只要你没有为它安装任何卷)。
您可以使用几行代码验证您的建议。让我们使用普通的ubuntu映像:
docker run --rm ubuntu apt-get install git
结果为E: Unable to locate package git
。这是因为从未使用apt-get update
更新包。
如果我们提供一个由以下几行组成的Dockerfile:
FROM ubuntu
RUN apt-get update
并构建它以获取新图像
docker build -t myubuntu .
我们可以像这样执行新图像
docker run --rm myubuntu apt-get install git
然后尝试从官方存储库安装git,因为之前的图像已执行apt-get update
。
但是,我并不建议通过apt-get
依赖容器图像已过时。