Docker Hub access for servers in Iran; without changing your pull commands
Direct Docker Hub access is effectively blocked from servers in Iran. FluxCDN removes that restriction from public image pulls. Keep the same image names, tags, docker pull commands, Compose files, and CI/CD jobs.
docker pullNormal pull commands
Public HTTPS registry
Works with docker pull
Read-only access
Pull the original image with its content digest intact
Removing the Docker Hub access barrier does not mean trusting an unknown image. Docker receives the manifest and layers of the public image you requested.
- Current tags and releasesNew public image versions remain available through the same registry route.
- No image renaming or content changesThe repository name, tag, manifest, and layers stay aligned with Docker Hub.
- HTTPS and digest verificationDocker verifies manifests and layers against their content-addressed digests.
Choose your current Docker configuration
Create the complete file when daemon.json does not exist. If it already contains settings, add only the registry mirror key so every existing option remains intact.
Create a new configuration
Use this command on a system without a custom daemon.json file.
sudo install -d -m 0755 /etc/docker
sudo tee /etc/docker/daemon.json >/dev/null <<'EOF'
{
"registry-mirrors": [
"https://registry.fluxcdn.cloud"
]
}
EOF
sudo systemctl restart dockerMerge with the existing configuration
Place this property inside the root JSON object and check the surrounding commas carefully.
"registry-mirrors": [
"https://registry.fluxcdn.cloud"
]Do not overwrite an existing file with the complete example. Keep options such as Log Driver, Storage Driver, and Proxy.
docker info | sed -n '/Registry Mirrors/,+5p'Keep using the same docker pull commands
For public Docker Hub images, you do not need to add a registry name to everyday commands. Docker reads the mirror from its configuration.
- Existing CI/CD and Compose commands stay unchanged.
- Official Docker Hub images use the library namespace.
- The mirror is intended for public Docker Hub images.
docker pull busybox:latest
docker pull alpine:latest
docker pull nginx:latest
docker pull redis:latest
docker pull mysql:latestYou can also test the Registry Mirror with its full path:
docker pull registry.fluxcdn.cloud/library/alpine:latestA familiar path from image name to running container
Keep image names, tags, Compose files, and deployment commands as they are. The mirror becomes part of Docker’s configuration rather than a new step in your workflow.
- Name the image
Use the same repository name and tag your deployment already expects.
- Pull normally
Run docker pull, Docker Compose, or your current deployment pipeline.
- Run the container
The downloaded image behaves exactly like the Docker Hub image you requested.
After configuration, verify the listed mirror once and keep your existing deployment commands unchanged.
The service boundary is clear
This service pulls public Docker Hub images. It is not a public registry for publishing private or custom images.
If Docker Engine is not installed, choose a distribution
Docker CE packages use a repository separate from the Registry Mirror. Choose Ubuntu or Debian to get the matching installation command.
Install Docker CE on Ubuntu
The official Docker signing key is retained; only the package base URL points to FluxCDN.
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://mirror.fluxcdn.cloud/docker/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
. /etc/os-release
CODENAME="${UBUNTU_CODENAME:-$VERSION_CODENAME}"
ARCH="$(dpkg --print-architecture)"
sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <<EOF
Types: deb
URIs: https://mirror.fluxcdn.cloud/docker/linux/ubuntu
Suites: ${CODENAME}
Components: stable
Architectures: ${ARCH}
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-pluginInstall Docker CE on Debian
The official Docker signing key is retained; only the package base URL points to FluxCDN.
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://mirror.fluxcdn.cloud/docker/linux/debian/gpg \
-o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
. /etc/os-release
CODENAME="$VERSION_CODENAME"
ARCH="$(dpkg --print-architecture)"
sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <<EOF
Types: deb
URIs: https://mirror.fluxcdn.cloud/docker/linux/debian
Suites: ${CODENAME}
Components: stable
Architectures: ${ARCH}
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-pluginDocker Mirror questions
Practical answers for configuration, verification, and safe rollback.
Do I need to change docker pull commands?
No. Keep using normal commands for public Docker Hub images. Docker reads the mirror address from daemon.json.
Can I push my own images?
No. The Registry Mirror is read-only. Pull is supported and public push requests return 403.
Are private Docker Hub images available?
The public service and this guide are intended for public images. Access to private images should not be assumed.
Do GHCR or Quay use this mirror?
No. registry.fluxcdn.cloud is for Docker Hub and does not cover GHCR, Quay, ECR, or GAR.
How do I confirm Docker is using the mirror?
Run docker info and inspect the Registry Mirrors section. It should list https://registry.fluxcdn.cloud.
How do I disable the mirror?
Remove registry-mirrors from daemon.json, leave every other setting intact, and restart Docker.
One short configuration; everyday pull commands stay the same
Choose the state of daemon.json, copy the matching configuration, and verify the Registry Mirror connection.