docker 如何管理容器新文件?
How does docker manage container new files?
当 运行 来自同一图像的两个容器时,容器 A 和 B
假设在容器A中,我们安装了包AA,在容器B中,我们安装了包BB,没有使用任何驱动。
问题是,容器是完全无状态的吗?只要我们还在使用那些容器,安装包存储在哪里?我能否从容器 B 访问包 AA,反之亦然?
容器不是无状态的,而是有状态的。每个容器在基础镜像之上都有自己独有的覆盖文件系统。这些每个容器的更改(状态)彼此隔离,因此您不能从容器 B 访问包 AA。当您 docker rm container-a
时,您只是删除容器 A 的独特覆盖,而基本图像保持不变。这是 docker start
和 docker run
是不同命令的部分原因,run
意味着创建一个新容器并因此创建一个新的每个容器状态(最初除了基本图像之外什么都没有),而 start
意味着 "execute the container using the persisted state from when it was last stopped".
当 运行 来自同一图像的两个容器时,容器 A 和 B
假设在容器A中,我们安装了包AA,在容器B中,我们安装了包BB,没有使用任何驱动。
问题是,容器是完全无状态的吗?只要我们还在使用那些容器,安装包存储在哪里?我能否从容器 B 访问包 AA,反之亦然?
容器不是无状态的,而是有状态的。每个容器在基础镜像之上都有自己独有的覆盖文件系统。这些每个容器的更改(状态)彼此隔离,因此您不能从容器 B 访问包 AA。当您 docker rm container-a
时,您只是删除容器 A 的独特覆盖,而基本图像保持不变。这是 docker start
和 docker run
是不同命令的部分原因,run
意味着创建一个新容器并因此创建一个新的每个容器状态(最初除了基本图像之外什么都没有),而 start
意味着 "execute the container using the persisted state from when it was last stopped".