1. 官方文档:https://containrrr.dev/watchtower/
  2. 博客:https://blog.icolak.com/archives/watchtower---zi-dong-geng-xin-docker-jing-xiang-yu-rong-qi

之前感觉自己并不是很需要docker容器的自动更新功能,因为自己的容器还没有多到管理不过来的情况,而且更新并不一定是什么好事情。但是现在想法改变了,更新失败如果手动回滚的话,会非常的不方便,而有软件能够帮你做这些事情当然就舒服多了。看了许多博客,发现watch tower 的使用都喜欢用 docker run 的方式启动,而不是用更加简便的composer方式。故这篇文章想要用composer的方式来使用watch tower。

watch tower 更新失败

私有库官方文档:https://containrrr.dev/watchtower/private-registries

在docker 的 deamon.json 的中配置了镜像库,我以为watch tower 能够从docker中读取到这个配置,但是实际上是不行的,它只会连接 config.json 中配置的镜像库,而默认是连接docker官方的,在国内就连接不不上,然后更新失败。我换成了1panel提供的镜像库https://docker.1panelproxy.com,在此也要感谢1panel。

watch tower 配置

https://containrrr.dev/watchtower/linked-containers

services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      # 配置私有镜像库的认证文件
      - ./config.json:/config.json
    environment:
      - TZ=Asia/Shanghai
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_RUN_ONCE=true
    command: [ "container1", "container2" ]

config.json的配置内容,需要之前使用过registry才会生成,而且应该是由于docker的更新了有些格式上的变化,之前内容不支持了,结果就是还是采用默认的docker.1panel.dev,这里贴出最新的配置(Docker version 27.3.1)。默认的存储位置~/.docker/config.json

{
  "auths": {
    "https://docker.1panelproxy.com": {}
  },
  "credsStore": "desktop.exe"
}

Error response from daemon: Get \"https://docker.1panel.dev/v2/\": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers). Proceeding to next.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

目录