Community-maintained Docker image for mc, the MinIO
client, built from source.
MinIO deleted the minio/mc repository from Docker Hub entirely — not just its tags,
the whole repository. Pull-by-digest fails too, so existing digest pins are
unrecoverable from Docker Hub. dl.min.io returns 410 Gone for binaries, and
github.com/minio/mc is archived upstream.
This image is compiled from a full mirror of that source at
netvark/mc.
mc is a one-shot CLI, not a daemon — no ports, no volumes required.
docker run --rm netvark/mc --version
docker run --rm netvark/mc alias set myminio \
http://minio:9000 admin secretpassword
Because each docker run is a fresh container, aliases do not persist between runs.
Either do it in one invocation:
docker run --rm netvark/mc sh -c \
'mc alias set my http://minio:9000 admin pass && mc ls my'
...or mount a config directory (see below).
| Variable | Description | Default |
|---|---|---|
MC_CONFIG_DIR | Where aliases are stored | /tmp/.mc |
The default is /tmp/.mc so the image works read-only and as a non-root user.
To persist aliases:
docker run --rm -v mc_config:/tmp/.mc netvark/mc alias list
Typical use is a one-shot init container that provisions buckets:
services:
minio:
image: netvark/minio:latest
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: your-secure-password-here
volumes:
- minio_data:/data
createbuckets:
image: netvark/mc:latest
depends_on:
- minio
entrypoint: >
/bin/sh -c "
until mc alias set my http://minio:9000 admin your-secure-password-here; do
echo 'waiting for minio...'; sleep 2;
done;
mc mb --ignore-existing my/uploads;
mc anonymous set download my/uploads;
"
volumes:
minio_data:
Note the entrypoint override — the image's entrypoint is mc itself, so a shell
is needed for multi-step provisioning.
| Tag | Description |
|---|---|
latest | Most recent build |
YYYYMMDD | Build from a specific date |
<commit-sha> | Build from a specific mc commit |
linux/amd64linux/arm64Upstream also shipped ppc64le; this image does not. Pull the mirror below if you
need it.
This image is compiled by us and therefore has a different digest from the
minio/mc image you may have pinned previously. If you need the original bytes —
same digest, bit-identical to what MinIO shipped — use the mirror instead:
docker pull ghcr.io/netvark/mc@sha256:a7fe349ef4bd8521fb8497f55c6042871b2ae640607cf99d9bede5e9bdf11727
Those are copies of MinIO's own images, preserved with their digests intact.
uid=100 mc)/opt/bin/mc, also on PATHca-certificates for TLSBuilt on demand via manual workflow trigger, from
netvark/mc.
Upstream minio/mc is archived and frozen at commit 77f82e18 (2025-11-06), so
there is no scheduled build — there is nothing new to pick up. The workflow accepts
an mc_ref input to build any branch, tag, or commit.
⚠️ Always verify the source of your Docker images. This one is built in public via GitHub Actions with full logs: build-mc.yml
mc is licensed under GNU AGPLv3.
Content type
Image
Digest
sha256:e3f00efe7…
Size
14.3 MB
Last updated
about 2 months ago
docker pull netvark/mc