群晖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 又是一个惨痛的教训...
相关推荐
想学习java初学者22 分钟前
Docker compose部署elasticsearch(单机版)
运维·docker·容器
微刻时光2 小时前
Docker部署Nginx
运维·nginx·docker·容器·经验
小安运维日记2 小时前
CKA认证 | Day3 K8s管理应用生命周期(上)
运维·云原生·容器·kubernetes·云计算·k8s
陈小肚2 小时前
k8s 1.28.2 集群部署 docker registry 接入 MinIO 存储
docker·容器·kubernetes
A陈雷3 小时前
springboot整合elasticsearch,并使用docker desktop运行elasticsearch镜像容器遇到的问题。
spring boot·elasticsearch·docker
小扳3 小时前
Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
运维·spring boot·后端·mysql·spring cloud·docker·容器
politeboy4 小时前
关于k8s中镜像的服务端口被拒绝的问题
云原生·容器·kubernetes
weixin_438197384 小时前
K8S创建云主机配置docker仓库
linux·云原生·容器·eureka·kubernetes
南猿北者11 小时前
docker Network(网络)
网络·docker·容器
sam-12312 小时前
k8s上部署redis高可用集群
redis·docker·k8s