我在使用一款自建的开源备忘录应用 memos,我把它运行在群晖里面。使用的是 docker,一条命令即可运行起来
docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos neosmemo/memos:latest |
我在群晖里面,网络直接使用 host,因此不需要填写端口,只需在「存储空间」里选择一个目录,来映射到容器内的 /var/opt/memos
。
目前使用了两周多了,感觉还挺不错的。
现在的问题是,我运行的是 0.10.3
的版本,目前最新的版本已经到 0.11.2
了,我想要升级到最新的版本。
下面是我的实际操作。
首先我们要拉取最新的镜像,依旧到注册表搜 memos,右键然后点「下载此映像」,或者直接双击也可以。
镜像下载完成之后,我们把容器停掉,再重新打开,是没有效果的,依然还是旧版本的。此时应该做的是,创建一个新的容器。但是在群晖里面,我们不需要重新填写容器的配置,因为它可以直接复制。选中一个容器,然后上方的设置里面,有个「复制设置」的选项。
点击之后,它会让我们「输入新容器的名称」,我给它起名为 「memos-0.11.2」,因为我估计过段时间又得来升级的,那就每次复制后都填一下当前的版本吧。
然后我们可以启动这个新的容器,看看运行正不正常,正常的话,就可以删掉旧的容器了。
我这个容器比较简单,而且网络方面直接用 host,所以不用设置端口。
但是我发现其它需要设置端口的容器,复制之后,端口会发生变化的。例如我有一个容器的端口是 10086,复制之后,群晖自动给新的容器生成一个随机端口,如 49155
,所以看来,带端口的容器,复制之后,还得修改一下。
但是我们不能直接修改新容器的端口,因为不能两个容器同时使用一个端口。例如我这里的 10086
已经被就容器占用了,新的容器就没法用。虽然直接把旧容器删除了,新容器就可以使用 10086
这个端口,但是现在并不清楚新容器,是否能正常运行,所以不建议删。
我们可以先修改旧容器的端口,例如改为 10087
,然后再修改新容器的。这样新的容器应该就可以运行起来了。
不过,此时如果你用命令行或者 portainer 查询镜像,应该会发现,多出一个 TAG 为 none 的镜像。
# docker images |
从日期我们也可以判断出,none 就是那个旧的版本。想要删除它,我们需要把旧的容器删除掉。
之后如果你是用 portainer 的话,勾选然后删除即可。如果没装 portainer,那就用命令行来删除吧,因为群晖的 docker 面板里,在映像中是找不到它的。
先 ssh 连接群晖,执行 sudo i
切换到 root 用户。如果你也为每次都要这样操作一次而感到困扰,可以参考一下我之前的文章:群晖建立永久 root 账号
需要先列出设备中所有 docker 镜像
docker images |
然后找到 none 的 IMAGE ID,像我这里是 50d503594da5
,然后可以像这样来删除它
docker rmi 50d503594da5 |