Contents
hide
手动的更新容器
# == docker stop AAA; docker rm AAA docker rm -f <CONTAINER> ; \ docker pull <IMAGE>; \ docker run <ARG> ... <IMAGE>
使用WatchTower
# 自动更新所有容器,包括watchtower自己 docker run -d \ --name watchtower \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower # --cleanup, 自动清除老旧文件 # --interval 3600 每3600秒自动检查更新,或者用cron格式,每天凌晨 2 点检查一次更新: # --schedule "0 0 2 * * *" # 或者只运行一次 # --run-once docker run -d \ --name watchtower \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower \ --cleanup \ --interval 3600 \ nginx redis <CONTAINER-A> <CONTAINER-B>
我采用的标准做法
# check every container every hour; use shanghai timezone; docker rm -f watchtower; docker pull containrrr/watchtower docker run -d \ --name watchtower \ --restart unless-stopped \ -e TZ=Asia/Shanghai \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower \ --cleanup \ --interval 3600 # run once docker rm -f watchtower; docker pull containrrr/watchtower docker run -d \ --name watchtower \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower \ --cleanup \ --run-once \ bitwarden
所有的相关参数
$ docker run --rm containrrr/watchtower -h Watchtower automatically updates running Docker containers whenever a new image is released. More information available at https://github.com/containrrr/watchtower/. Usage: watchtower [flags] Flags: -a, --api-version string api version to use by docker client (default "1.24") -c, --cleanup remove previously used images after updating -d, --debug enable debug mode with verbose logging --enable-lifecycle-hooks Enable the execution of commands triggered by pre- and post-update lifecycle hooks -h, --help help for watchtower -H, --host string daemon socket to connect to (default "unix:///var/run/docker.sock") -S, --include-stopped Will also include created and exited containers -i, --interval int poll interval (in seconds) (default 300) -e, --label-enable watch containers where the com.centurylinklabs.watchtower.enable label is true -m, --monitor-only Will only monitor for new images, not update the containers --no-pull do not pull any new images --no-restart do not restart any containers --notification-email-delay int Delay before sending notifications, expressed in seconds --notification-email-from string Address to send notification emails from --notification-email-server string SMTP server to send notification emails through --notification-email-server-password string SMTP server password for sending notifications --notification-email-server-port int SMTP server port to send notification emails through (default 25) --notification-email-server-tls-skip-verify Controls whether watchtower verifies the SMTP server's certificate chain and host name. Should only be used for testing. --notification-email-server-user string SMTP server user for sending notifications --notification-email-subjecttag string Subject prefix tag for notifications via mail --notification-email-to string Address to send notification emails to --notification-gotify-token string The Gotify Application required to query the Gotify API --notification-gotify-url string The Gotify URL to send notifications to --notification-msteams-data The MSTeams notifier will try to extract log entry fields as MSTeams message facts --notification-msteams-hook string The MSTeams WebHook URL to send notifications to --notification-slack-channel string A string which overrides the webhook's default channel. Example: #my-custom-channel --notification-slack-hook-url string The Slack Hook URL to send notifications to --notification-slack-icon-emoji string An emoji code string to use in place of the default icon --notification-slack-icon-url string An icon image URL string to use in place of the default icon --notification-slack-identifier string A string which will be used to identify the messages coming from this watchtower instance (default "watchtower") -n, --notifications strings notification types to send (valid: email, slack, msteams, gotify) --notifications-level string The log level used for sending notifications. Possible values: panic, fatal, error, warn, info or debug (default "info") --remove-volumes remove attached volumes before updating --revive-stopped Will also start stopped containers that were updated, if include-stopped is active -R, --run-once Run once now and exit -s, --schedule string the cron expression which defines when to update -t, --stop-timeout duration timeout before a container is forcefully stopped (default 10s) -v, --tlsverify use TLS and verify the remote