5、Docker容器应用打包与运行全解析

Docker容器应用打包与运行全解析

1. 临时容器与镜像状态问题

在使用Docker时,我们会遇到一些有趣的现象。比如在浏览容器内运行的IIS响应页面时,页面显示的主机名(实际为容器ID)与我们实际的容器ID不一致。这是因为Docker在构建镜像时,每条构建指令都会在临时的中间容器中执行。

以生成HTML的RUN指令为例,它在临时容器中运行,PowerShell脚本会将该临时容器的ID作为主机名写入HTML文件。虽然这个中间容器随后会被Docker移除,但它创建的HTML文件会被持久化到镜像中。这就导致从该镜像运行的所有容器都会显示HTML文件中保存的相同主机名,因为镜像在所有容器间是共享的。

不过,我们也可以在单个容器中存储状态,这些状态不属于镜像,因此不会在容器间共享。接下来,我们将深入探讨Docker中数据的处理方式。

2. Docker镜像与容器中的数据处理

Docker容器中的应用程序会看到一个单一的文件系统,它们可以像在操作系统中一样进行读写操作。但实际上,这是一个虚拟文件系统,其底层数据可能存储在多个不同的物理位置。

容器C盘可访问的文件可能存储在镜像层、容器自身的存储层或映射到主机特定位置的卷中。Docker会将这些位置合并为一个虚拟文件系统。

2.1 层与虚拟C盘的数据

虚拟文件系统使Docker能够将一组物理镜像层视为一个逻辑容器镜像。镜像层在容器的文件系统中以只读方式挂载,因此不能被修改,这使得它们可以被多个容器安全共享。

每个容器在所有只读层之上都有自己的可写层,这样每个容器都可以修改自己的数据而不影响其他容器。以下是一个简单的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值