群晖Container Manager/Docker容器更新方法

分享两个Docker容器更新的方法,适用于大部分的容器更新。

目前碰到两个容器(postgres、tinymediamanager)大版本更新的时候需要特别的方式迁移数据,不适用以下两个方法,大版本更新的时候特别需要做好数据还有映像的备份。

方法一 手动更新

下载最新的映像

下载最新的映像,可以在套件内注册表直接下载,或者连接ssh使用docker pull命令下载。

旧容器备份

停止 旧容器,并且删除旧容器的端口映射 ,为新容器腾出端口。保存

新建新容器

右键点击停止的旧容器,选择复制设置

通过复制设置新建一个新容器,新容器将会用你下载的最新映像新建,同时保留了旧容器的设置,通过这个方法来进行容器的更新。

新容器建好后,打开新容器设置 ,把原来的端口映射 填好,保存启动新容器。

  • 启动新容器之后,查看测试一下新容器是否完全更新启动好。如果没有问题的话,就可以将旧容器删除。

旧映像删除

新容器下载后,旧印象的latest 标签(TAG)会被新容器取代,旧容器的标签(TAG)会变成none。旧容器删除之后并不能删除掉旧映像,并且在套件后台是看不到映像的,需要删除的话要按照以下的方法连接SSH删除。

启动SSH功能

打开控制面板 ,点击终端机和SNMP ,勾选启动SSH功能点击应用。

连接SSH

使用Putty或者Xshell等SSH客户端工具软件连接。本文以Xshell为例。

打开Xshell,新建连接,输入你的NAS地址和端口点击确定,在输入用户名和密码后就进入终端机界面。

查看删除映像

首先输入sudo -i,回车后在输入一次密码,获取权限。然后在输入docker images查看映像。 如上图所示,有几个TAG是none 的映像。都是之前更新下载没有删除的。复制好需要删除的映像ID,用docker rmi <image id> <image id>来删除映像,多个映像ID使用空格隔开。删除映像后可以使用docker images查看映像,看是否删除成功。

更新失败说明

  • 如果发现新容器没有安装成功,可能是容器不适用于此方法更新
  • 可以删除新容器,把旧容器的端口映射设置回来,启动旧容器,大多数时候还能使用回旧容器。
  • 然后去查看具体容器的文档,看是否有更新容器的具体方法。

方法二 一键更新

群晖DSM 7.2发布之后,Docker改名为Container Manager。全新的名字,也带来了不少的变化。其中最让我眼前一亮的是支持提醒映像更新,可以一键更新映像,还能提醒移除未使用的一键。

本方法就是采用群晖Container Manager自带的更新功能,更新起来非常方便,会自动删除旧映像,不过就没有备份旧容器的操作。使用本功能更新前建议做好备份!

查看更新

本功能需要NAS可以正常访问Dockerhub才可以使用,不然看不到更新提示。

在映像也可以看到有可用更新的提示才能进行下一步,不然无法用此方法更新。

下载映像及更新

点击可用更新的 后会跳出提示框,提示有数据清除的风险,再次建议事先做好数据备份!!!同时可以去查看一下更新的版本内容,如果是大版本更新不建议采用此方法,还是好好看看具体容器的更新文档。

确认完毕后开始更新,开始下载映像,然后就自动更新。过程非常无感。需要耐心等待一段时间,不要乱停止启动正在更新的容器。

更新完成后,可用更新的提示消失,容器正常启动就说明更新完成。

补充说明

如果容器存在链接的情况下,会出现链接的容器是连接到一个容器名.syno.bak的容器,会导致找不到正确的链接的容器的情况,此时只要去对应的容器中,重新修改链接到更新好的容器名上去就好。

也侧面可以推测该方法的更新原理应该与方法一差不多,先备份旧容器在复制新容器,只不过是一件操作完成了,不需要手动。

  • 使用体验下来的感受,此方法用于小版本的容器升级非常高效便携,不过大版本的还是自己手动做好备份更新,不然可能带来更多的不便(T_T 本人经历过惨痛的教训...
  • 一些容器更新频率高,如果看到更新提醒一定要管住自己的手,如没有需要不建议频繁更新,不然也会带来更多的不便(T_T 又是一个惨痛的教训...
相关推荐
眠りたいです5 分钟前
Docker:认识Docker镜像仓库并进行拉取推送
运维·nginx·docker·容器·busybox
计算机小手18 分钟前
使用轻量级中间件 VoidAuth 快速构建站点SSO,支持Docker一键部署与Nginx快速接入
经验分享·docker·中间件·开源软件
会飞的小蛮猪32 分钟前
K8s-1.29.2二进制安装-第三章(Node组件 及其他插件安装)
云原生·容器·kubernetes
ByteBlossom44 分钟前
Docker虚拟化技术实践
docker
weixin_462446231 小时前
【原创实践】使用 Docker 部署 IntelliJ IDEA(linuxserver/intellij-idea)完整指南
docker·容器·intellij-idea
qq_455760851 小时前
Docker - 镜像
linux·运维·docker
南山nash11 小时前
CentOs7 安装 Docker 详细步骤
linux·运维·docker·容器
杨浦老苏12 小时前
轻量级私有云音乐服务器QM-Music
docker·群晖·音乐
weixin_466812 小时前
K8S-RBAC
云原生·容器·kubernetes
咩咩大主教12 小时前
VSCode远程连接Linux部署的Docker
linux·vscode·docker