事实上 Docker 容器不存在更新一说,只有替换,用新的替换旧的以达到“更新”的目的
群晖 Docker“更新”操作步骤如下:
- 打开 Docker“注册表”,搜索想要“升级”的docker并双击下载最新版
- 回到“容器”,停止正在运行的容器,并“编辑”,将其重命名为“原名称-backup”
- 检查第一步下载是否完成,完成后进入下一步
- 回到“容器”,点击已停止的容器,点击“设置”,点击“复制设置”,名称改为原有名称。应用。
- 启动新复制出来的容器。
如果出现问题,可以以旧容器运行,如果没有问题,一段时间后删除旧容器即可。
1 端口
如果旧的容器有 本地端口–>容器端口 的端口映射,复制出*来的新容器会因为端口与旧容器相同而不能完
成端口映射,此时应将旧容器端口修改成另外一个,再把新容器端口填上正确的,即可。*
2 冗余镜像
当从 docker.io 拉取新版本的镜像后,群晖的 Docker 镜像仓库里会多出一个名称一样,但版本号为 None 的镜像。
使用 SSH 连接群晖后,用
sudo -i
切换到管理员身份,再运行以下命令可以查看到所有镜像:
docker images
返回如下:
REPOSITORY TAG IMAGE ID CREATED SIZE
jellyfin/jellyfin latest d791368d5d98 3 days ago 927MB
syncthing/syncthing latest 80fd74f28b88 5 weeks ago 30.4MB
jellyfin/jellyfin none b70459cca2d3 9 months ago 746MB
REPOSITORY TAG IMAGE ID CREATED SIZE jellyfin/jellyfin latest d791368d5d98 3 days ago 927MB syncthing/syncthing latest 80fd74f28b88 5 weeks ago 30.4MB jellyfin/jellyfin none b70459cca2d3 9 months ago 746MB
REPOSITORY TAG IMAGE ID CREATED SIZE
jellyfin/jellyfin latest d791368d5d98 3 days ago 927MB
syncthing/syncthing latest 80fd74f28b88 5 weeks ago 30.4MB
jellyfin/jellyfin none b70459cca2d3 9 months ago 746MB
可以看到,jellyfin 多出一个同名,但版本号为 none 的镜像。重复的镜像不仅占用空间,而且在群晖图形界面无法看到。
其原因是拉取 Docker 镜像没有指定版本号的话,默认会拉取版本号(tag)为“latest”的镜像,老的镜像和新的镜像版本号都是 latest,就会把老镜像版本号挤掉,变成 none。我们只需要保留 tag 为 latest 的即可。
解决方法是按上文步骤先完成 Docker 容器的更新,确定新容器正常运行,删除备份容器,再在命令行删除 none 版本镜像。因为旧容器和旧镜像是关联的,如果不先删除旧容器,是无法删除 none 这个镜像的。
按上述例子,删除了旧容器后,SSH 执行如下命令,即可删除无用的镜像:
docker rmi b70459cca2d3
命令为 docker rmi [镜像 ID]
如果不记得镜像 ID,可以用 docker images
命令查看。
记住一定要先备份容器,以免有些镜像拉取的不是'最新的版本
切记备份自己数据
#!/bin/bash
backup_dir=/volume1/Backup/SQL-Backup
dd=`date +%Y-%m-%d_%H:%M:%S`
tool=mysqldump
username=root
password=123456
database_name=wordpress
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql
find $backup_dir -mtime +5 -type f | xargs rm -f
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于