如何用以前的网络和卷升级docker容器
简介
这篇文章主要是关于容器镜像的升级机制。有各种方法可以将容器升级到其最新的镜像。这里我们使用了一些简单易行的方法。首先,我们讨论了快速测试的手动方法。然后我们尝试了一些自动方法。这些方法将监视图像,如果有任何新的更新,它们会用更新的图像创建一个新的容器。
方法
- 手动但使用CLI
-
自动但使用CLI
-
自动但使用Docker Compose
手动但使用CLI
在这里,我们将按照以下步骤来实现图像升级的目标。
- 用旧图像创建一个容器
-
在本地系统上下载更新的图像
-
用更新的镜像创建一个新的容器,但使用旧的卷和网络
-
删除旧的容器
第1步:创建一个旧的图像Docker容器
使用下面的命令来创建一个bushbox容器。
示例
输出
进入这个图像,在卷目录内创建一个文件。
第2步:用新镜像创建一个容器
这个容器有最新的bushbox的图像。
示例
输出
进入新的容器内部,检查数据是否存在。
因此,卷和网络保持不变。只有容器的图像被改变为最新的。
第3步:移除旧容器
示例
输出
在下一个方法中,我们将在 “瞭望塔 “图像的帮助下,将上述过程自动化。
自动但使用CLI
在这里,我们将从一个叫做 “watchtower “的额外图像中获得帮助。这个 “瞭望塔 “将检查版本库中是否有任何更新的镜像。一旦有任何更新被推送到版本库,这个 “瞭望塔 “就会自动下载更新的镜像,并创建一个新的更新的容器,其中包含所有链接到旧容器的旧数据。
第1步:创建一个容器
首先,我们需要用旧图像创建一个容器。
容器已经创建并运行。
第2步:现在创建瞭望塔容器
在这里创建 “watchtower “容器,并添加上述容器的名称进行升级。
示例
输出
现在这将照顾到一切,每当docker hub上的busybox:unstable被更新,watchtower就会自动将这个容器升级到更新的镜像。
自动但使用Docker Compose
我们将创建一个Docker Compose文件。这个组合文件将有多个需要被监控的容器。一个名为 “watchtower “的容器将监视所有这些容器。每当任何一个容器的镜像有更新时,它将为该镜像创建一个新的容器。
第1步:创建一个Docker Compose文件
Docker compose总共包含三个服务或容器。两个容器”old_cont“和”test_cont“被第三个容器”watch_cont“所监控。
watchtower将等待60秒,检查docker hub仓库中是否有任何更新的镜像。如果我们不给-interval选项,它将等待24小时。
第2步:启动容器
要启动所有这些容器,请使用下面的命令。
这将创建并以分离模式运行所有这些容器。
结论
我们成功的为容器创建了一个升级周期。即使在生产环境中不使用这些方法,因为我们有专门的软件来完成这项任务。一些高级工具被用于更新和升级的任务。