docker compose 配置文件可以很方便的配置和运行 docker 容器,但每次更新容器都需要运行多条命令。可以通过在 compose 文件中设置 watchtower 来定期自动拉取最新镜像并启动容器,同时可以配置删除旧镜像和容器。

在 docker-compose.yml 文件中增加以下内容:

version: '3'
services:

  ...

  watchtower:
    image: containrrr/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --interval 3600 --cleanup --remove-volumes
    environment:
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_REMOVE_VOLUMES=true

以下是主要的配置说明:

  • --interval 参数设置为 3600。这意味着 Watchtower 将每 3600 秒(即每小时)检查一次更新。
  • --cleanupWATCHTOWER_CLEANUP=true 确保在更新后清理旧的镜像。
  • --remove-volumesWATCHTOWER_REMOVE_VOLUMES=true 确保删除与旧容器关联的匿名卷。

使用这个配置,Watchtower 将:

  • 每小时检查一次你的容器是否有更新
  • 如果发现更新,它会停止旧容器,启动新容器
  • 删除旧的容器和相关的匿名卷
  • 删除旧的镜像

这个配置应该能满足大多数用例的需求,既能保持你的容器相对最新,又不会过于频繁地进行检查和更新操作。

需要注意的是:

  • Watchtower 只会删除它更新的容器的旧版本。它不会删除系统中的其他未使用的容器或镜像。
  • 它只删除匿名卷,不会删除命名卷。
  • 如果你想删除所有未使用的镜像(不仅仅是 Watchtower 更新的),你可能需要定期运行 docker image prune 命令。

标签:无

你的评论