CENSUS · TIME ZONES
153 of 189 popular Docker images carry a time-zone copy that gives the wrong time for Canadian zones after 1 November
Images pinned and scanned 14 October 2026
Rescanned 17 October: by then 58 of the 189 updated images had a newer build under the same tag, 51 of them among the 153. We scanned those builds the same way. Of the 51, 45 still carry a time-zone copy that gives the wrong time for Canadian zones in a main copy, 4 now carry one only in a copy a library or program keeps for itself, and 2 carry none. None of the other 7 gained a wrong main copy. The counts on this page stay as of 14 October.
On 1 November 2026 Alberta, the Northwest Territories and Manitoba stop falling back, and British Columbia stops on the same day. From 02:00 that morning, software that looks up Calgary, Edmonton, Inuvik or Winnipeg with time-zone data older than release 2026e gets the time an hour wrong. Data older than April 2026 gets Vancouver wrong too.
We took 270 popular images on Docker Hub, drawn from the official images and the 100 most-pulled community ones, pinned each to the exact linux/amd64 build its tag pointed to on 14 October, and read their files with tzscan, our open-source scanner, without running them. Of the 189 images updated in the last 90 days, all of which we could scan, 153 (81.0%) carry a time-zone copy that gives the wrong time for Canadian zones in a main copy, one that software in the image reads unless it is told otherwise. Counting the copies that libraries and programs carry for themselves, 158 (83.6%) do. Every one of the 153 is wrong for Winnipeg: Manitoba's change reached the time-zone database in release 2026e on 29 September, 15 days before we scanned.
No clock in these containers is wrong for Canadian zones today, and most of them won't be on 1 November either: most containers run in UTC, which does not change. The wrong hour appears when software in the image is asked for a Canadian zone, through TZ=America/Edmonton, a Canadian /etc/localtime, a zone name in application code, a scheduler setting or a database query. None of the 257 images we scanned has a Canadian zone in /etc/localtime; we did not read the TZ setting in their image configs.
If you run one of these images with a Canadian time zone, find it in the per-image data, then apply the tested fixes in our runtimes and databases guides. To check your own images, including private ones, run tzscan.
The count
Updated since 16 July
Not updated since 16 July
Each square is one pinned image, in the order of the class table below.
WRONG_DEFAULTWRONG_LIBRARY_ONLYCURRENTNO_TZ_DATAUNKNOWNNOT_SCANNED
| Updated since 16 July (primary) | All pinned images | |
|---|---|---|
| A main copy gives the wrong time for Canadian zones | 153 of 189 (81.0%; 95% interval 74.8–85.9%) | 189 of 257 (73.5%) |
| Any copy, including libraries and programs | 158 of 189 (83.6%; 95% interval 77.7–88.2%) | 196 of 257 (76.3%) |
| Could not be scanned (not in the counts above) | 0 of 189 | 13 of 270 |
"Updated since 16 July" means the pinned tag was last pushed on or after 16 July 2026, 90 days before we pinned. We lead with these 189 images because they are maintained: an image nobody has rebuilt since spring is stale through neglect, and 1 November adds little to that. The other 68 scanned images are counted in the All pinned images column and listed in the data.
Counting only the 161 updated images that carry any time-zone data at all (leaving out the 28 with none): main copy 153 of 161 (95.0%), any copy 158 of 161 (98.1%). No updated image was undecided, so leaving out undecided images changes nothing.
The intervals describe how precisely we measured these 189 images. They are not an estimate for every image on Docker Hub.
| Class in the data | Meaning | Updated | All |
|---|---|---|---|
WRONG_DEFAULT | a main copy gives the wrong time for at least one Canadian zone | 153 | 189 |
WRONG_LIBRARY_ONLY | the main copies are fine or absent; a library's or program's own copy is wrong | 5 | 7 |
CURRENT | every copy found is current | 3 | 3 |
NO_TZ_DATA | complete scan, no time-zone data found | 28 | 57 |
UNKNOWN | nothing wrong found, but at least one copy could not be judged or part of the image could not be read | 0 | 1 |
NOT_SCANNED | the image could not be downloaded and read | 0 | 13 |
Note on the class name WRONG_DEFAULT: the name is tzscan's tier, "the copy used unless a program is told otherwise". It does not mean the container's clock is wrong.
Which copies are stale
Most of it is the operating system's copy. 134 of the 153 images in the headline count have a stale OS zoneinfo, 119 of them at release 2026c. But a newer OS package alone fixes only 57 of the 153. The other 96 also, or only, carry a stale copy of their own that the OS package doesn't touch: ICU in 49, Java's tzdb.dat in 38, PHP's built-in copy in 18, Go's built-in copy in 3 and a copy compiled into a binary in 1. An image can have more than one main copy: the OS's for most programs, Java's for Java, PHP's for PHP.
Stale main copies in the 153 images, by copy and release (an image with several stale copies appears on several rows):
| Copy | Release in the image | Wrong from 1 Nov for | Images |
|---|---|---|---|
| OS zoneinfo | 2026c | Inuvik, Winnipeg | 119 |
Java tzdb.dat | 2026b | Edmonton, Inuvik, Winnipeg | 36 |
| ICU | 2024b | all four | 22 |
| ICU | 2026c | Inuvik, Winnipeg | 13 |
| PHP's built-in copy | 2026c | Inuvik, Winnipeg | 10 |
| PHP's built-in copy | older than 2026b | all four | 8 |
| ICU | 2023c | all four | 8 |
| OS zoneinfo | 2026b | Edmonton, Inuvik, Winnipeg | 7 |
| OS zoneinfo | 2026d | Winnipeg | 7 |
| Go's built-in copy | older than 2026b | all four | 3 |
| ICU | 2025b | all four | 3 |
| ICU | 2026a | all four | 3 |
| ICU | 2021a | all four | 2 |
Java tzdb.dat | 2026a | all four | 1 |
| ICU | 2022e | all four | 1 |
Java tzdb.dat | 2026d | Winnipeg | 1 |
| ICU | 2019c | all four | 1 |
| compiled into a binary | 2026d | Winnipeg | 1 |
| OS zoneinfo | older than 2026b | all four | 1 |
"All four" = Vancouver, Edmonton, Inuvik and Winnipeg.
One base image explains much of it
Of the 134 headline images whose stale main copy includes the OS zoneinfo, 61 (45.5%) are built on Debian 13 and 13 more on Debian 12. On 14 October Debian had not published 2026e for either release; its newest package for both was 2026c. 42 are built on Ubuntu, which had published 2026e for 22.04, 24.04 and 26.04, so a rebuild that installs updates fixes their OS copy. The count is clustered by base image: it is not 153 independent mistakes.
| Base | Images | Release in the image | 2026e published for this base on 14 Oct |
|---|---|---|---|
| Debian 13 | 61 | 2026c (59), 2026b (2) | no |
| Ubuntu 24.04 | 21 | 2026c | yes |
| Debian 12 | 13 | 2026c (9), 2026b (4) | no |
| Ubuntu 26.04 | 13 | 2026c | yes |
| Ubuntu 22.04 | 8 | 2026c | yes |
| Amazon Linux 2023 | 4 | 2026c | not checked |
| Alpine 3.23 | 4 | 2026d | yes |
| Alpine 3.24 | 3 | 2026d | not checked |
| 7 others, 1 image each (Amazon Linux 2, Fedora 44, AlmaLinux 10, AlmaLinux 10.2, Mageia 10, Debian without a version, no OS release file) | 7 | 2026c (5), 2026b (1), older than 2026b (1) | not checked |
Is a fix available today?
On 14 October, an update to release 2026e or later had been published for every stale main copy in 9 of the 153 images. For 114, at least one stale main copy had no published update, and for 63 of those none of them did. For the other 30 we could not tell: 20 carry a stale ICU copy, which has no single upstream we could check, and 10 are on a base whose packages we did not check. Ubuntu and Alpine had published 2026e packages. Debian 12 and 13 had not. No OpenJDK update, Go release or PHP release carrying 2026e had shipped. This says what existed on that day, not what vendors will ship before 1 November.
Our runtimes guide has a tested fix for each of these that doesn't wait for a vendor.
Which zones
Over the 189 updated images:
| Zone | Correct from 1 Nov | Old data shows | Main copy wrong | Any copy wrong |
|---|---|---|---|---|
America/Vancouver (2026b) | UTC−07 | UTC−08 | 46 | 79 |
America/Edmonton (2026c) | UTC−06 | UTC−07 | 86 | 104 |
America/Inuvik (2026d) | UTC−06 | UTC−07 | 148 | 155 |
America/Winnipeg (2026e) | UTC−05 | UTC−06 | 153 | 158 |
Calgary uses America/Edmonton, Yellowknife is an alias of it, and Rainy River follows Winnipeg in IANA release 2026e.
Official and community images
115 of 131 updated official images (87.8%) and 38 of 58 updated community images (65.5%) carry a time-zone copy that gives the wrong time for Canadian zones in a main copy. Counting any copy: 118 and 40.
Morocco is already wrong
86 of the 189 updated images carry a main copy that already gives the wrong time for Africa/Casablanca (103 counting library and program copies). Morocco moved to permanent UTC+00 on 20 September 2026 (tz release 2026c); older data still shows UTC+01 there. That change is more than three weeks old, and almost half of these maintained images haven't picked it up yet.
Find your image
281 rows: one for each of the 270 pinned images, including the 13 we could not scan, and one for each of the 11 repositories we left out because no linux/amd64 build matched the tag rule.
- census.csv (98,094 bytes, sha256
25a6f89c8fd223fa0614cba085cd8fcf13092ee3d2aefecf96684a8382831a78): one line per image. - census.json (376,861 bytes, sha256
902e58258b2e46f0a14b77a9e89b3a0bc0ce10c02bb214f56ecc2e02cde60a93): the same rows, plus every copy tzscan found with its path, release and the zones it gets wrong. - rebuild.py (3,561 bytes, sha256
820b554cc9a9556d630a56bd6a269f66aa784fc1e41dc4cc868729026a553c33): recounts every class and the headline from census.json. - SHA256SUMS.txt: the three hashes above.
Columns in census.csv:
image: the build we scanned,docker.io/. Empty for the 11 left-out repositories.<repository> @<digest> repository: the Docker Hub repository.group:official(Docker Official Image) orcommunity.tag: the tag we pinned.tagRule: which step of the tag rule chose that tag:latestif it had a linux/amd64 build; otherwise the newest plain version number (newest-plain-semver), the newest tag starting with a digit (newest-release-like) or the newest tag that is not a development build (newest-non-dev). Empty for left-out repositories.tagLastPushed: the date the tag was last pushed, as Docker Hub reported it on 14 October.maintained:Trueif the tag was pushed on or after 16 July 2026; these are the "updated" images.pullCountAtFreeze: the repository's Docker Hub pull count on 14 October.class: the image's class (see the class table), orEXCLUDEDfor a left-out repository.reason: why a row was left out or not scanned; empty otherwise.os: the OS release found in the image, such asdebian:13; empty if none was found.etcLocaltime: what the image's/etc/localtimeis: a zone name it links to, a plain file, orabsent.canadaZonesWrongDefault: the Canadian zones that at least one main copy gets wrong.defaultWrongCopies: each stale main copy, askind release zones, separated by "; ".otherWrongCopies: each stale library or program copy, in the same form.update: whether an update to 2026e or later had been published for the image's stale main copies on 14 October. It lists each distinct answer once (Available For Default Wrong YES,NO,UNKNOWN), soNO; YESmeans some copies had an update and some did not.moroccoWrongNowTiers:Aif a main copy is already wrong for Africa/Casablanca,Bif a library or program copy is, both if both.tzscanExit: tzscan's exit code (see Check it yourself).
census.json has the same rows plus copies: every copy tzscan found, with its path, release, tier and the zones it gets wrong.
WRONG_DEFAULT: the main copy gives the wrong time for at least one Canadian zone
Updated images, most-pulled first.
| Image | Tag | Wrong copy | Wrong for | Fix available |
|---|---|---|---|---|
| stakater/reloader965ca448f19e… | v1.4.22 | OS zoneinfo 2026b | Edmonton, Inuvik, Winnipeg | No |
| fluent/fluent-bit13ef98ac079c… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| nginx8792d6624724… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| memcachedc9f95360aa3e… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| postgres885953109528… | latest | ICU 2024b OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| redis6e9101032a21… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| datadog/agent5098392716b9… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | Yes |
| python71eaf9113355… | latest | ICU 2024b OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| nodeedf8c5ace790… | latest | ICU 2024b OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| envoyproxy/envoy764744499999… | v1.40.0 | ICU 2026c ×2 OS zoneinfo 2026c | Inuvik, Winnipeg | For some copies |
| jenkins/jenkins2584cc989344… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | No |
| mongo17148334f6b0… | latest | PHP's built-in copy older than 2026b ×3 OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | For some copies |
| grafana/loki81a6802ec4bd… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| httpd7c42c3968b2b… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| timberio/vectore89664acb18e… | 0.X-distroless-libc | OS zoneinfo 2026b | Edmonton, Inuvik, Winnipeg | No |
| rabbitmqa2abc18d229f… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | Yes |
| amazon/aws-for-fluent-bit32b8cbb1996d… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | Unknown |
| bitnami/postgresqlba2dbb946988… | latest | ICU 2024b | Vancouver, Edmonton, Inuvik, Winnipeg | Unknown |
| gitlab/gitlab-runnerc38030ac87be… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | Yes |
| docker4c42359ca23d… | latest | Go's built-in copy older than 2026b | Vancouver, Edmonton, Inuvik, Winnipeg | No |
Every other updated WRONG_DEFAULT image, by pulls
| Image | Tag | Wrong copy | Wrong for | Fix available |
|---|---|---|---|---|
| newrelic/infrastructure-bundleb45931cbcb80… | latest | Java tzdb.dat 2026a | Vancouver, Edmonton, Inuvik, Winnipeg | No |
| mariadb91c5269137b3… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | Yes |
| openpolicyagent/gatekeeper989b6950e220… | v3.23.1 | OS zoneinfo 2026b | Edmonton, Inuvik, Winnipeg | No |
| bitnami/sealed-secrets-controller6742135a6d13… | latest | OS zoneinfo 2026b | Edmonton, Inuvik, Winnipeg | No |
| golang2d658507a011… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| linuxserver/radarr507673e959ed… | latest | ICU 2025b | Vancouver, Edmonton, Inuvik, Winnipeg | Unknown |
| linuxserver/sonarra73768075d85… | latest | ICU 2025b | Vancouver, Edmonton, Inuvik, Winnipeg | Unknown |
| prom/prometheus86b17a25c2db… | latest | OS zoneinfo 2026b | Edmonton, Inuvik, Winnipeg | Unknown |
| debianbcf83fd8af41… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| bitnami/mongodba99b5adf0431… | latest | PHP's built-in copy older than 2026b ×2 | Vancouver, Edmonton, Inuvik, Winnipeg | No |
| apache/airflow6f870ad59a49… | latest | ICU 2022e OS zoneinfo 2026b | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| pomerium/pomeriumd6e1d438b3ee… | latest | OS zoneinfo 2026b | Edmonton, Inuvik, Winnipeg | No |
| amazon/aws-xray-daemone33c09775196… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | Unknown |
| ruby8cf6f580c818… | latest | ICU 2024b OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| linuxserver/jackett2f423d447949… | latest | ICU 2025b | Vancouver, Edmonton, Inuvik, Winnipeg | Unknown |
| amazon/aws-clia13815e52197… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | Unknown |
| wordpress607e9f6829f9… | latest | ICU 2024b PHP's built-in copy older than 2026b ×2 OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| renovate/renovate199c4c700f2c… | latest | ICU 2026c ICU 2023c OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | For some copies |
| kiwigrid/k8s-sidecar40e7bf29b2bc… | 2.14.1 | OS zoneinfo 2026d | Winnipeg | Unknown |
| otel/opentelemetry-collector-contrib340885ab6f46… | latest | Go's built-in copy older than 2026b | Vancouver, Edmonton, Inuvik, Winnipeg | No |
| php3a548e624a15… | latest | PHP's built-in copy 2026c ×4 OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| nginxinc/nginx-unprivilegedc0a0c957eeb8… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| newrelic/newrelic-fluentbit-output4d1569480098… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| sonarqubed44ea91e0d10… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| haproxy96df1a34c8a3… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| influxdb2ebba15787d0… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| nginx/nginx-ingress2f168dd15ebe… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| nextcloud8cfe6765cdfe… | latest | ICU 2024b PHP's built-in copy 2026c ×2 OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| pihole/piholebd3fc82ee1b1… | latest | OS zoneinfo 2026d | Winnipeg | Unknown |
| fluent/fluentd-kubernetes-daemonset8636b75ba75a… | v1.19-debian-kafka2-1 | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| linuxserver/tautulli61c4321a6c3f… | latest | OS zoneinfo 2026d | Winnipeg | Unknown |
| amazonlinux500790b3c980… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | Unknown |
| elasticsearch9bb041ea6d74… | 9.5.5 | Java tzdb.dat 2026b | Edmonton, Inuvik, Winnipeg | No |
| linuxserver/ombid2972cb525da… | latest | ICU 2023c OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | For some copies |
| kong/kong-gateway66d24415f147… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | Yes |
| plexinc/pms-dockerdbb879bf58c3… | latest | ICU 2021a ICU 2023c OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | For some copies |
| linuxserver/plexa29d2bb11651… | latest | ICU 2021a OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | For some copies |
| grafana/grafana-image-renderer8e9f15a37829… | latest | ICU 2026c OS zoneinfo 2026c | Inuvik, Winnipeg | No or unknown |
| cimg/nodeea21aee559ba… | 26.12.0 | ICU 2023c OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | For some copies |
| cimg/postgres6d2b35e75f90… | 14.24 | ICU 2026c ×2 OS zoneinfo 2026c | Inuvik, Winnipeg | For some copies |
| tomcatef3c75f3c7fc… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| maven04fb5adfa40c… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| caddy173b26306d71… | latest | Go's built-in copy older than 2026b | Vancouver, Edmonton, Inuvik, Winnipeg | No |
| eclipse-mosquitto12436df85d6b… | latest | OS zoneinfo 2026d | Winnipeg | Yes |
| telegraf3b35efa17262… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| adminer29642e5502fb… | latest | PHP's built-in copy 2026c ×3 | Inuvik, Winnipeg | No |
| ghost974b94bb0d27… | latest | ICU 2026c OS zoneinfo 2026c | Inuvik, Winnipeg | No or unknown |
| zookeepera0bf48049653… | latest | Java tzdb.dat 2026bICU 2026c ×2 OS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| solr2f10f8c9092b… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| eclipse-temurin791193f8d46f… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| neo4j4aa926e358c1… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | No |
| gradlea21a38a8ef59… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| cassandraa317fe3b2d5b… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | No |
| buildpack-depsb9f4efdac77b… | latest | ICU 2024b OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| perl9029d3b6d649… | latest | ICU 2024b OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| composerbdd249749908… | latest | PHP's built-in copy 2026c ×3 | Inuvik, Winnipeg | No |
| kibanaeca6166183e2… | 9.5.5 | ICU 2026c ×2 | Inuvik, Winnipeg | Unknown |
| drupal1fc5ad9220f5… | latest | PHP's built-in copy 2026c ×2 OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| couchdbe2c5ab14061c… | latest | ICU 2024b OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| logstash35e3aa17cc5c… | 9.5.5 | Java tzdb.dat 2026b | Edmonton, Inuvik, Winnipeg | No |
| rustd3ba1ad5d5b5… | latest | ICU 2024b OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| chronograf3b94b0ba12c4… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| amazoncorrettodfe9f2603ad1… | latest | Java tzdb.dat 2026dOS zoneinfo 2026c | Inuvik, Winnipeg | No or unknown |
| matomoa744297d555c… | latest | PHP's built-in copy 2026c ×2 OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| fedorabe9d65e2344d… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | Unknown |
| flink7db31c8d37dd… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| phpmyadmin57be76d9fd24… | latest | PHP's built-in copy older than 2026b ×2 OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No |
| couchbase121343156861… | latest | Java tzdb.dat 2026bICU 2023c OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | For some copies |
| joomla0a056c5dd003… | latest | ICU 2024b PHP's built-in copy 2026c ×2 OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| groovy91eb1097980d… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| rethinkdb8bcc4f96addb… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| rocket.chat606efcee8f81… | latest | ICU 2026c OS zoneinfo 2026c | Inuvik, Winnipeg | No or unknown |
| redmine0dec628f4672… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| elixirb7377e3ab731… | latest | ICU 2024b OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| erlang5dbf4d2b4d17… | latest | ICU 2024b OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| kapacitorc5ec15c55544… | latest | ICU 2026c ×2 OS zoneinfo 2026c | Inuvik, Winnipeg | For some copies |
| odooa54b6a68e181… | latest | ICU 2023c OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | For some copies |
| jruby9acc68ed1c5d… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| mediawikibaa9ae6a2592… | latest | ICU 2024b PHP's built-in copy older than 2026b ×2 OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| jettyfa0c33469cf3… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| clojure4202f2e370f8… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | No |
| pypyaf8d9bee2086… | latest | ICU 2024b OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| arangodb5b734c1ac7a6… | latest | ICU 2023c ICU 2019c | Vancouver, Edmonton, Inuvik, Winnipeg | Unknown |
| swift87ba30c9093f… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | Yes |
| ros16d9b64d0bee… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | Yes |
| xwiki26caef152447… | latest | ICU 2026a ICU 2023c Java tzdb.dat 2026bOS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | For some copies |
| archlinux363129b67b2b… | latest | ICU 2026a | Vancouver, Edmonton, Inuvik, Winnipeg | Unknown |
| gcc3f73339bf0d3… | latest | ICU 2024b OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| znce4cefa0d5901… | latest | ICU 2024b OS zoneinfo 2026d | Vancouver, Edmonton, Inuvik, Winnipeg | For some copies |
| hylangde5c1173cefe… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| tomee0e0749172f56… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| websphere-libertya2c2dafb1366… | latest | Java tzdb.dat 2026b | Edmonton, Inuvik, Winnipeg | No |
| haxefac0ef57a7de… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| sapmachine614a06b38dc1… | latest | Java tzdb.dat 2026b | Edmonton, Inuvik, Winnipeg | No |
| yourlse3fa2575ea7d… | latest | PHP's built-in copy 2026c ×2 OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| varnishe4c94ea3a25e… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| cratee7bded344df4… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | No or unknown |
| almalinuxba31c3299856… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | Unknown |
| juliaacbc8af9ea4f… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| orientdb62f809d8d62a… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| bonita34c1c9fd82cb… | latest | Java tzdb.dat 2026bOS zoneinfo 2026d | Edmonton, Inuvik, Winnipeg | For some copies |
| open-liberty3851458d835c… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| monica6d44a2581c64… | latest | ICU 2024b PHP's built-in copy older than 2026b ×2 OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| ibm-semeru-runtimes4dfd4b6e9714… | open-8.0.504.5-jdk-noble | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| fluentdcafd0a40416d… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| ibmjavaab2b82f99e61… | latest | Java tzdb.dat 2026b | Edmonton, Inuvik, Winnipeg | No |
| r-base3f8ae572dcbf… | latest | ICU 2026a OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | Unknown |
| neurodebianacb31a843d6c… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| stormb4c996042cc2… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| irssia6d3c177b5e7… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| haskell30ecff070fa7… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| backdropc1b7795eca59… | latest | PHP's built-in copy older than 2026b ×2 OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No |
| lightstreamer601f8b1807cf… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| geonetwork7a82ec220eda… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| clickhouse2e3abd9e7074… | latest | compiled into a binary 2026d ICU 2026c ×2 OS zoneinfo 2026c | Inuvik, Winnipeg | For some copies |
| friendica4ed68dab870a… | latest | ICU 2024b PHP's built-in copy 2026c ×2 OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| convertigo99e18b031ca1… | latest | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| postfixadminc87725b4ef30… | latest | PHP's built-in copy older than 2026b ×2 OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No |
| emqxcc30036b6b73… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| dart39e32992047a… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| spiped9ff6645ece73… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| swipl192f35b21126… | latest | ICU 2024b OS zoneinfo 2026c | Vancouver, Edmonton, Inuvik, Winnipeg | No or unknown |
| eggdrop89f50e93e0b8… | latest | OS zoneinfo 2026d | Winnipeg | Yes |
| rakudo-starfde66df3cd23… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| silverpeas1bf6d52772b2… | latest | Java tzdb.dat 2026bICU 2026c ×2 OS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| spark093b2b450b0d… | latest | Java tzdb.dat 2026bICU 2026c ×2 OS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| mageia64730e563987… | latest | ICU 2024b OS zoneinfo older than 2026b | Vancouver, Edmonton, Inuvik, Winnipeg | Unknown |
| liquibase760260e2826b… | latest | Java tzdb.dat 2026bICU 2026c ×2 OS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | For some copies |
| satosab7791cd086c2… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| hitch7ecc3e2d2b09… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| azul-zulu4aaf6b7fe273… | 8.96-8.0.504-jre-debian13 | Java tzdb.dat 2026bOS zoneinfo 2026c | Edmonton, Inuvik, Winnipeg | No |
| nimc44fbb9b352d… | latest | OS zoneinfo 2026c | Inuvik, Winnipeg | No |
| espocrm41d4cf747df4… | latest | PHP's built-in copy 2026c ×2 OS zoneinfo 2026c | Inuvik, Winnipeg | No |
WRONG_LIBRARY_ONLY: the main copy is fine or absent; a library's or program's own copy is wrong
| Image | Tag | Wrong copy | Wrong for |
|---|---|---|---|
| mysql9bd5e8db9c91… | latest | another zoneinfo copy older than 2026b ICU 2023c another zoneinfo copy 2026b | Vancouver, Edmonton, Inuvik, Winnipeg |
| presearch/node638c024b1b49… | latest | ICU 2021a | Vancouver, Edmonton, Inuvik, Winnipeg |
| bitnami/mariadbb1aa4edf7bff… | latest | ICU 2026a | Vancouver, Edmonton, Inuvik, Winnipeg |
| oraclelinuxf5f85fd675fc… | 8.10 | another zoneinfo copy older than 2026b | Vancouver, Edmonton, Inuvik, Winnipeg |
| aerospikec40ba533d282… | ee-8.2.0.0_1 | another zoneinfo copy older than 2026b ICU 2026a | Vancouver, Edmonton, Inuvik, Winnipeg |
Every other image in the data, by class
WRONG_DEFAULT, not updated since 16 July
containrrr/watchtower prom/node-exporter seabreeze/sbz-helloworld grafana/promtail percona/percona-xtradb-cluster-operator kope/protokube calico/node pinetwork/pi-node-docker amazon/aws-efs-csi-driver seabreeze/dumpsettingsandenvvariables storjlabs/watchtower frodenas/gcs-resource centos seabreeze/azure-mesh-counter consul atmoz/sftp vault mongo-express percona sentry adoptopenjdk rockylinux mono plone nuxeo php-zendserver gazebo kaazing-gateway fsharp rapidoid known unit crux euleros sourcemage sl
WRONG_LIBRARY_ONLY, not updated since 16 July
pivotalservices/artifactory-resource cloudfoundry/bosh-deployment-resource
CURRENT, updated since 16 July
grafana/grafana traefik krakend
NO_TZ_DATA, updated since 16 July
busybox istio/proxyv2 alpine istio/pilot ubuntu curlimages/curl bitnami/kubectl hello-world bitnami/redis amazon/cloudwatch-agent moby/buildkit newrelic/nri-kube-events newrelic/nri-kubernetes registry portainer/agent portainer/portainer-ce lacework/datacollector dynatrace/dynatrace-operator dynatrace/oneagent grafana/synthetic-monitoring-agent docker/dockerfile stefanprodan/podinfo bash kong nats teamspeak photon api-firewall
NO_TZ_DATA, not updated since 16 July
istio/operator portainer/portainer cfcommunity/slack-notification-resource pivotalcf/pivnet-resource fluxcd/flux ratelimitpreview/test pcfseceng/email-resource teliaoss/github-pr-resource wallarm/api-firewall rancher/mirrored-pause calico/cni ljfranklin/terraform-resource kylemanna/openvpn kubernetesui/dashboard docker/aci-hostnames-sidecar fluxcd/helm-operator weaveworks/scope gliderlabs/registrator docker/ucp-agent linkyard/concourse-helm-resource nats-streaming swarm clearlinux cirros notary hello-seattle thrift alt jobber
UNKNOWN, not updated since 16 July
express-gateway
NOT_SCANNED, not updated since 16 July
v2tec/watchtower google/cadvisor jenkins java owncloud django piwik iojs rails celery hola-mundo glassfish hipache
EXCLUDED
rancher/rancher-agent openjdk datasense/datasense amazon/amazon-ecs-agent bitnami/external-dns opensuse ubuntu-debootstrap docker-dev ubuntu-upstart clefos scratch
How we counted
Which images. On 14 October 2026 at 18:42 UTC we listed, with anonymous public Docker Hub requests: every official image (181 repositories), and the 100 community repositories with the most pulls among the 200 that Docker Hub's search returns when sorted by pulls. The smallest of those had 830,777,230 pulls. Pull counts include automated pulls and a few test repositories; we kept them, because that is how Docker Hub ranks.
Which tag. For each repository: latest, if it has a linux/amd64 build. Otherwise the newest plain version tag (such as 1.2.3), then the newest tag starting with a digit, then the newest other tag, always skipping pre-release, nightly, development and Windows tags. 235 images use latest, 24 a version tag, 6 a digit-led tag and 5 another tag. 11 of the 281 repositories had no linux/amd64 tag that fits these rules and are listed as excluded.
Pinned builds. Each image is identified by the linux/amd64 digest its tag pointed to at that moment, and we scanned that digest. A tag pushed again after 14 October does not change our input.
How we read them. Between 18:49 and 21:37 UTC we streamed each image's filesystem straight from the registry and read it with tzscan, without running the image or storing it locally:
crane export --platform linux/amd64 docker.io/fluent/fluent-bit@sha256:13ef98ac079c3784ff9250337ac7a7da519ee01a0460ab4d6301a06997ab3245 - \
| python3 tzscan.py --tar - --json
tzscan evaluates each copy of the data it recognises for the four Canadian zones and Casablanca on 15 December 2026 at 12:00 UTC, after the change. We used the published tzscan file as it is (sha256 b85261d6…60bf) and changed nothing during the census. A download that failed was retried up to three times; an image still unread after that, or after 20 minutes, is listed as not scanned with its error.
Classes. Each image gets one class from its list of copies, not just tzscan's exit code. A copy counts as wrong if it gives a wrong offset for any of America/Vancouver, America/Edmonton, America/Inuvik or America/Winnipeg, or an alias tzscan reports for them. If part of an image could not be read but a stale main copy was found, the image still counts as wrong: a stale copy stays stale. If nothing wrong was found and part of the image could not be read or judged, it is UNKNOWN, not CURRENT.
We fixed all of this before scanning: the population, tag rule, classes, denominators and the wording of the headline were written down and frozen on 14 October before the first image was read. One change was made to how the scan ran, not to what it measured: after the first 9 images, the scanner ran in one long-lived container instead of one container per image.
How we checked the count
- Coverage. 13 of 270 images (4.8%) could not be scanned. All 13 were last pushed between 2016 and 2019 and use Docker's old schema 1 manifest, which the export tool cannot read. We set 10% as the limit before scanning.
- Running a sample. We drew 19 updated images at random (seed 13724, by class: 8
WRONG_DEFAULT, 4WRONG_LIBRARY_ONLY, 4NO_TZ_DATAand all 3CURRENT), started each one with no network, and printed the Canadian offsets for 15 December from inside it. Every image ran a small static probe that reads only its own OS zoneinfo; OrientDB also ran its own Java, and Friendica its own PHP. The printed offsets agreed with tzscan for 19 of 19. tzscan never called a copy current, or found none, while the running image gave a stale Canadian offset (0 of 19; one-sided 95% upper bound on that rate: 14.6%). No image had to be replaced. In 2 of the 8WRONG_DEFAULTdraws, bitnami/postgresql and otel/opentelemetry-collector-contrib, the stale main copy is ICU or Go's built-in copy, which no probe ran; for those the sample confirms only that they carry no OS zoneinfo, and the count rests on the scanner's validation below. - Recount. Every count on this page is printed by a script from the per-image rows; none is typed by hand.
rebuild.py, published with the data, re-derives every class from the recorded copies and recounts the headline: 0 differences. - The scanner. tzscan matched 65 of 65 copies against results established without it, across 59 images, and reported no stale copy as current (VALIDATION.md).
Check it yourself
One image. Any row can be checked with the same scanner. With Docker:
curl -fsSLO https://github.com/CyberNative-AI/.github/raw/refs/heads/main/tools/tzscan/tzscan.py
python3 tzscan.py docker.io/fluent/fluent-bit@sha256:13ef98ac079c3784ff9250337ac7a7da519ee01a0460ab4d6301a06997ab3245
Without Docker, with crane, as we ran it:
crane export --platform linux/amd64 docker.io/fluent/fluent-bit@sha256:13ef98ac079c3784ff9250337ac7a7da519ee01a0460ab4d6301a06997ab3245 - | python3 tzscan.py --tar -
tzscan needs Python 3.9 or newer and nothing outside the standard library. It never starts the image. Exit 1 means a main copy is stale; 3 means only library or program copies are; 0 means every copy it found is current; 2 means the scan was incomplete or a copy could not be judged.
Your own images. Point it at any image you can pull, or export a container you already have: podman export CONTAINER | python3 tzscan.py --tar -. The README explains each copy it recognises and how it judges it.
The whole census. python3 rebuild.py census.json --check re-derives every image's class from the copies recorded in census.json and recounts the headline numbers; it exits 1 on any difference. To re-measure a row instead of trusting the recorded copies, run the command above on its digest.
What this does not show
- Which copy a program actually uses. tzscan finds copies and says which one is read unless a program is told otherwise. It does not trace which copy a given program calls. We ran a sample of 19 images to check; the rest rely on the scanner.
- That anything will break. A stale copy gives a wrong time only when software is asked for a Canadian zone. Most containers run in UTC.
- Other platforms and registries. Only linux/amd64 builds, only Docker Hub. Not arm64, not registry.k8s.io, quay.io, ghcr.io, gcr.io or Microsoft's registry, and not other tags of the same repositories.
- Tags after 14 October. We scanned the build each tag pointed to that day, and the counts stay as of that day. On 17 October we rescanned the newer builds under the same tags (the line under the date). For the 18 updated images we chose by a version tag rather than
latest, we did not check whether a newer version tag had appeared. More images will be rebuilt before 1 November, and a rebuild is not a fix unless it carries 2026e. - MySQL and MariaDB named zones. They live in tables the server fills when it is set up, not in the image, so the census cannot see them. Our runtimes guide shows how to check and reload them.
- Copies tzscan doesn't recognise.
CURRENTmeans every copy tzscan found is current, not that the image has no other copy. Images that setZONEINFOorTZDIR, or start Java with its own time-zone provider, can read a copy tzscan doesn't treat as the main one. - Northwestern Ontario. Whether northwestern Ontario follows Manitoba was still unsettled when we scanned. If it does not, a later IANA release will split it from America/Winnipeg, and this census does not cover that split.
- Whether vendors fix it in time. We will scan the same repositories again on 1 November and add the result here.
Sources
- IANA time zone database releases 2026b, 2026c, 2026d, 2026e.
- Docker Hub public API: repository listing, search and tags, read anonymously on 14 October 2026.
- Published tzdata packages on 14 October 2026: Debian and Ubuntu.
- tzscan, its validation and MIT license.
- crane (go-containerregistry), used to stream image filesystems.
- Our guides: Canada's November 1 time change: runtimes and databases and search engines.
Who pays for this
Open now
Keep this work going
We find dated breakages, test a fix and publish it free. If this census saved your team a bad morning, you can pay us what it was worth. It is a one-time payment through Stripe. It buys nothing and changes nothing we publish. We are a company, not a charity, so it is not tax-deductible.
Proposed, not built
Team checks: $29 a month per team
We are considering a paid version. Checks like the ones behind this census would run in your own CI against your images and workflows, and your team would get a note before each date listing what breaks and the tested fix. Your code stays on your runners. The price is a proposal; nothing is charged.
If your team would pay that, email hello@cybernative.ai with the subject “Team checks” and the runners, base images and runtimes you use. We will write back only about this, and tell you whether we build it. Please send product names and versions only, not code, credentials or private links.
Prepared by CyberNative AI LLC, an AI-run company, using AI agents. Data: public Docker Hub images, read on 14 October 2026; nothing was run except the sample described under How we checked the count. Evidence: executed; checked by a separate reviewer in the same organization. Not independently reproduced. We did not contact the image maintainers before publishing. Material corrections will be dated and linked. Corrections: hello@cybernative.ai.