fender-ci · Actions · GitHub Marketplace · GitHub
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
fender-ci<br>Actions
About
Transparent Docker registry proxy. Rewrites unqualified image references to any registry with a single action step.<br>v0.1.2<br>Latest
By fender-proxy
Star0 (0)You must be signed in to star a repositoryUse latest version<br>Choose a version
Tags<br>2 (2)<br>securitycontainer-ci
fender
fender is a transparent Docker Unix socket proxy that frees you from the implicit Docker Hub registry lock-in — without touching Dockerfiles, CI scripts, or CLI habits.
It works by sitting between the Docker CLI and the Docker daemon. On startup it registers itself as a Docker context and activates it, so all Docker tooling routes through fender automatically. When you shut fender down it removes its context and restores whatever you had before.
docker pull nginx:latest # you type this<br>▼ Docker context: "fender" (~/.fender/fender.sock)<br>┌─────────────────────────────────────────────────────────┐<br>│ fender │<br>│ docker.io/library/nginx:latest │<br>│ ↓ rewrite │<br>│ registry.example.com/library/nginx:latest │<br>└─────────────────────────────────────────────────────────┘<br>▼ upstream: active Docker context before fender started<br>Docker Daemon
GitHub Actions
steps:<br>- uses: fender-proxy/fender@v1<br>with:<br>default-registry: registry.example.com
- run: docker pull nginx # → registry.example.com/library/nginx
No DOCKER_HOST export needed — fender registers itself as the active Docker<br>context automatically.
Inputs
Input<br>Description<br>Default
version<br>fender release tag<br>latest
default-registry<br>Registry for unqualified images
registry-map<br>Newline-separated source: target remappings
log-level<br>debug|info|warn|error<br>info
Outputs
Output<br>Description
socket<br>Absolute path to the fender Unix socket
version<br>The fender version that was installed
Example: private registry mirror
- uses: fender-proxy/fender@v1<br>with:<br>registry-map: |<br>docker.io: nexus.corp/dockerhub-proxy<br>ghcr.io: nexus.corp/ghcr-proxy
GitLab CI
include:<br>- component: gitlab.com/fender-proxy/fender/fender@~latest<br>inputs:<br>default-registry: registry.example.com
build:<br>extends: .fender<br>script:<br>- docker pull nginx # → registry.example.com/library/nginx
DOCKER_HOST is automatically set in the job — no manual configuration needed.
Inputs
Input<br>Description<br>Default
version<br>fender release tag<br>latest
default-registry<br>Registry for unqualified images
registry-map<br>Newline-separated source: target remappings
log-level<br>debug|info|warn|error<br>info
Requires Go 1.21+
go install github.com/fender-proxy/fender@latest
Or from source:
git clone https://github.com/fender-proxy/fender<br>cd fender<br>make install # → $GOPATH/bin/fender
Quick start
fender --default-registry registry.example.com
That's it. fender will:
Detect your active Docker context and use its socket as the upstream
Create a "fender" Docker context pointing to its own socket
Set "fender" as the active context
time=… level=INFO msg="fender ready"<br>upstream_source="Docker context \"desktop-linux\""<br>upstream=/Users/you/.docker/run/docker.sock<br>default_registry=registry.example.com<br>context_watching=true
✓ Docker context "fender" is now active — no DOCKER_HOST export needed.
All Docker tooling now routes through fender. No shell exports, no config changes.
docker pull nginx:latest # → registry.example.com/library/nginx:latest<br>docker run ubuntu:22.04 id # → registry.example.com/library/ubuntu:22.04<br>docker pull ghcr.io/org/app # → unchanged (explicit registry)
On shutdown (Ctrl-C or SIGTERM), fender removes the "fender" context and restores your previous context automatically.
Context awareness
fender reads the active Docker context the same way the Docker CLI does:
/meta.json<br>→ platform default (/var/run/docker.sock or ~/.docker/run/docker.sock)">DOCKER_HOST env var<br>→ ~/.docker/config.json (currentContext field)<br>→ ~/.docker/contexts/meta//meta.json<br>→ platform default (/var/run/docker.sock or ~/.docker/run/docker.sock)
It also watches ~/.docker/ with fsnotify. If you switch contexts while fender is running, fender detects the change and updates its upstream socket live — no restart needed.
# fender is running…<br>docker context use my-other-context
# fender logs:<br># level=INFO...