Docker Hub blocks access from Russia: bypassing the restriction via mirrors (registry-mirrors)

Hi everyone! Docker Hub has restricted access to images for users from the Russian Federation — when attempting to download an image, the daemon returns an error 403 Forbidden. In this note I will show two simple ways to work around the block using Docker Hub mirrors.

What the error looks like

Today we started seeing messages with this error:

Error response from daemon: pull access denied for nginx, repository does not exist or may require ‘docker login’: denied:

403 Forbidden

Since Docker is a US company, we must comply with US export control regulations. In an effort to comply with these, we now block all IP addresses that are located in Cuba, Iran, North Korea, Republic of Crimea, Sudan, and Syria. If you are not in one of these cities, countries, or regions and are blocked, please reach out to https://hub.docker.com/support/contact/

The error is related to the restriction regarding the RF (Russia).

Method 1. Mirrors in the Docker configuration (daemon.json)

The first option is to specify mirrors for docker.io in the daemon configuration. Locate the daemon.json file:

  • Linux (standard installation) → /etc/docker/daemon.json
  • Linux (rootless) → ~/.config/docker/daemon.json
  • WindowsC:\ProgramData\docker\config\daemon.json

Make the adjustments:

{
  "registry-mirrors": [
    "https://mirror.gcr.io",
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://hub.openode.xyz"
  ]
}

Method 2. Explicitly specify the mirror address

In Docker itself or in docker-compose, when you specify image:, instead of the classic library/alpine:latest you can write the same thing but with the mirror address from the list above: hub.openode.xyz/library/alpine:latest.

Detailed page: https://hub.openode.xyz/


The article was first published on 30.05.2024 on openode.xyz; migrated and updated on 04.08.2026.