如何防止 docker 镜像更新(最佳实践)

时间:2021-05-06 14:33:01

标签: docker docker-compose

我正在本地 linux 服务器中从 docker 映像运行我的家庭 wifi 控制器 (TP-Link Omada)。不幸的是,图像已更新,新的控制器版本似乎无法识别我退出的“站点”/设备。无线接入点和交换机仍然以其设置在独立模式下工作,但在我将它们重新采用到我使用“新”控制器生成的新站点之前,我无法触摸/更改任何内容。

我想防止图像在未来更新,或者至少有一种方法可以在它们再次中断时恢复。什么是防止这种情况发生的好方法?这是我的 docker-compose 的一个片段

# Omada Controller for TP-Link switches and APs
omada-controller:
  container_name: omada-controller
  image: mbentley/omada-controller
  restart: unless-stopped
  environment:
    - TZ=$TZ
  volumes:
    - $DOCKERDIR/apps/omada/data:/opt/tplink/EAPController/data'
    - $DOCKERDIR/apps/omada/work:/opt/tplink/EAPController/work'
    - $DOCKERDIR/apps/omada/logs:/opt/tplink/EAPController/logs'
  networks:
    - t2_proxy
  security_opt:
    - no-new-privileges:true
  ports:
    - '8088:8088'
    - '$OMADA_PORT:8043'
    - '27001:27001/udp'
    - '27002:27002'
    - '27017:27017'
    - '29810:29810/udp'
    - '29811:29811'
    - '29812:29812'
    - '29813:29813'

1 个答案:

答案 0 :(得分:1)

如果您不为图像使用标签,那么 docker 会使用 latest 标签。几乎总是这指的是最新版本。只需使用图像的定义标记版本。您可以找到 mbentley/omada-controller here 的可用标签。 所以如果你想使用 4.1 版本,那么撰写文件中的那部分应该是:

 image: mbentley/omada-controller:4.1

也就是说,通常它不应该神奇地更新图像本身。只有在您启动容器并且标记的图像在本地不可用时,它才会更新。或者您运行 docker-compose pull 以强制拉取撰写文件中指定的图像。