我想了解获取新的基础映像(例如 Ubuntu 16.04)和 apt 更新正在运行的容器之间有什么区别。
我是否需要自己更新容器,还是可以依赖正在更新的镜像?还是在创建容器后就将其解耦?
到目前为止,我一直在亲自更新它们。
答案1
我意识到这个答案来得晚了,但我还是想分享一下我迄今为止使用 LXD/LXC 的(有限的)经验。
我是否需要自己更新容器,还是可以依赖正在更新的镜像?还是在创建容器后就将其解耦?
请记住,容器是基于镜像的实例。但是,更新容器(例如运行sudo apt-get install <package-name>
)不会更新镜像;只会更新容器。
从这个意义上讲,容器和镜像变得“分离”(我会说“不同步”)。如果你想要一个包含你对容器所做的更改的镜像,那么我认为你需要做的是快照容器的。例如:
lxc snapshot <container-name> <snapshot-name>
一个方便的方法是按日期标记它们,这样您就可以更轻松地识别要使用哪些快照。例如,这是我这样做的方式:
tag=$(date +%g.%m.%d-%H%M)
lxc snapshot <container> <snapshot>-$tag
我认为您从新的/最近的基础图像(例如ubuntu:lts/amd64
)中获得的只是诸如最新的软件包版本、安全更新等内容。
这个观察来自于我使用从网站下载的 ISO 安装 Ubuntu 的经验(在撰写本文时,它包含 50 多个需要更新的过时软件包),而使用基础映像则似乎已经应用了更新。
话虽如此,从所述基础映像启动容器将需要您重新安装所有自定义配置、包和其他更改等等。