Docker安装+可用镜像收集

Docker安装+可用镜像收集
狂犬主子由于众所周知的原因,Docker 和 Docker Hub 无法访问,为了解决在运维和部署中的安装和拉取容器问题,避免对业务造成影响,我们需要合理配置使用镜像。
安装
手动安装
官方安装脚本 get.docker.com 可能无法访问,只能手动安装,实际上官方文档中也建议在生产环境中通过手动的方式来安装 Docker。
由于系统在不断更新,这边直接提供 CERNET MirrorZ 的帮助(根据 官方文档 修改而来):
https://help.mirrors.cernet.edu.cn/docker-ce/
需要注意的是,在该帮助提供的命令中,默认的 gpg 密钥下载地址仍为 download.docker.com
,这么做可以增加安全性,但如果你无法访问,可以将其替换为 mirrors.cernet.edu.cn/docker-ce
。
1 | # Uninstall all conflicting packages: for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done # Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://mirrors.cernet.edu.cn/docker-ce/linux/debian/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.cernet.edu.cn/docker-ce/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update # Install the latest version: sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
如果您使用其他类 Debian 系统,如 Kali Linux,请将上面的 $(. /etc/os-release && echo "$VERSION_CODENAME")
替换成 bookworm
。
注意,官方 Docker CE 与 Debian 仓库里的 docker.io
不同:官方 Docker 用 docker compose
来 compose,compose 作为一个插件;Debian 仓库中的 docker.io
用 docker-compose
来 compose。
对于桌面使用,为了避免每次执行 docker 都需要在前面加上 sudo,可能需要给普通用户添加 docker 权限(使用 Docker Desktop 安装的无需进行此操作):
1 | # 查看docker用户组 getent group docker # 确保有输出,如果不存在,则使用以下命令创建docker用户组 #sudo groupadd docker # 将当前添加到 Docker 用户组 sudo usermod -aG docker $USER # 或者 # sudo gpasswd -a $USER docker # 更新用户组 newgrp docker # 重启 Docker 服务 sudo systemctl restart docker # 验证是否能够使用 docker ps # 如果不行的话,注销试试 |
第三方脚本
如果是图方便,或者碰到不熟悉的系统,可以使用以下命令安装:
1 | bash <(curl -sSL https://linuxmirrors.cn/docker.sh) |
使用CERNET MirrorZ 302 优选 Docker-CE 镜像:
1 | bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --source mirrors.cernet.edu.cn |
面板安装
如 1Panel,安装脚本可以帮你自动安装好 Docker,并配置 Docker Hub 镜像,非常省心。
Docker Desktop
官方最新版安装包,自行想办法下载:
https://docs.docker.com/desktop/release-notes/
福利: 这边我们提供 Docker Desktop 安装包镜像,版本见
Version.txt
:https://dl.xrgzs.top/软件/Docker/Desktop
密码:为了避免滥用,访问 url.xrgzs.top/pswd 页面最底下获取
Windows 安装 Docker 有三种后端,分别为 Hyper-V
、WSL2
、Windows
,推荐使用 WSL2
。
先安装WSL2:
1 | wsl.exe --install |
然后再装 Docker Desktop 即可。
注册表镜像
不定期更新
-
国内 Docker 服务状态 & 镜像加速监控:https://status.1panel.top/status/docker
-
CNIX 粤港澳大湾区一体化算力服务平台:https://m.ixdev.cn
建议设置多个镜像,优先设置速度快的,拉取失败会自动换下一个
请先测试链接是否能够打开(报40x正常),然后再使用
注意事项:
- 部分镜像的
latest
标签可能较老,请尽量带版本号拉取。 - 不建议用于生产环境,且生产环境建议固定版本号并备份镜像到本地。
- 对于使用第三方镜像造成的后果,与本人无关,请尽量选择可信镜像。
搭建
薅得多会跑路,能自建更好,此处不提供方法,自行 GitHub / 谷歌 / 必应 / 微信搜一搜。
设置方法
从面板修改
1Panel、DSM、fnOS等可从面板修改:
fnOS 的做法是将你设置的镜像 unshift
插入到 registry-mirrors
这个 Array
的首位。
其他管理面板大同小异,如果没找到就是不能直接改。
直接改配置文件
iStoreOS(OpenWrt)的 docker 配置文件可能在到 /etc/config/dockerd
,并且格式与上方不相同,请自行修改!
部分 docker 配置文件可能还包含其他内容,如工作路径等,需要自行修改,请勿直接替换!
如果未安装管理面板,或管理面板改不了,可以执行以下命令:
1 | sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<EOF { "registry-mirrors": [ "https://m.ixdev.cn", "https://docker.1ms.run", "https://dockerpull.cn", "https://docker.1panel.live", "https://hub.rat.dev" ] } EOF sudo systemctl daemon-reload sudo systemctl restart docker |
Podman
Podman 和 Docker 的区别:
对比项 | Podman | Docker |
---|---|---|
架构 | 无守护进程,直接与容器运行时(如 runc )交互 |
客户端-服务端架构,依赖后台守护进程 dockerd |
Root 权限 | 默认支持 Rootless 模式(普通用户可直接运行容器) | 传统模式需 Root 权限,后续支持 Rootless(需配置) |
安全性 | 更高(无守护进程 + Rootless 默认),减少攻击面 | 守护进程以 Root 运行,存在潜在风险(Rootless 需手动启用) |
镜像管理 | 完全兼容 Docker 镜像,支持 Docker Hub/私有仓库 | 原生支持 Docker 镜像,生态成熟 |
CLI 兼容性 | 命令与 Docker CLI 高度兼容(如 podman run ≈ docker run ) |
CLI 为行业标准,Podman 反向兼容其语法 |
Systemd 集成 | 原生支持生成 Systemd 单元文件(podman generate systemd ) |
需第三方工具或手动配置 Systemd 服务 |
镜像构建 | 支持 Dockerfile 及 podman build ,集成 Buildah(更灵活的构建) |
使用 docker build ,依赖 Dockerfile |
容器编排 | 依赖 Podman Compose 或 Kubernetes(无内置 Swarm) | 内置 Docker Swarm,成熟但逐渐被 Kubernetes 取代 |
资源消耗 | 无后台进程,空闲时资源占用更低 | 守护进程常驻,占用一定内存/CPU |
网络模型 | 使用 CNI(容器网络接口),与 Kubernetes 兼容 | 自有网络模型(如 bridge 、host 等) |
存储 | Rootless 模式下,数据存储在用户目录(如 ~/.local/share/containers ) |
默认使用 /var/lib/docker (需 Root 权限) |
Pod 支持 | 原生支持 Pod(多容器组,类似 Kubernetes Pod) | 需通过 Docker Compose 模拟多容器组 |
日志管理 | 依赖 Systemd Journal 或第三方工具 | 内置多种日志驱动(如 json-file 、syslog ) |
Windows/macOS | 通过虚拟机或 WSL2 支持,体验有限 | 提供 Docker Desktop,原生支持良好 |
生态系统 | 社区增长中,红帽(Red Hat)主导,适合 RHEL/CentOS 环境 | 成熟,广泛支持,第三方工具丰富 |
文档:https://podman.io/docs/installation#registriesconf
由于支持 rootless 模式,会涉及到两种配置文件路径:
全局配置文件:
/etc/containers/registries.conf
用户配置文件:
~/.config/containers/registries.conf
Podman 比 Docker 更智能,可以对镜像的前缀进行自动替换:
1 | cp -f /etc/containers/registries.conf /etc/containers/registries.conf.bak sudo tee /etc/containers/registries.conf <<EOF unqualified-search-registries = [ "docker.io" ] # Docker Hub [[registry]] prefix = "docker.io" location = "docker.m.ixdev.cn" [[registry.mirror]] location = "docker.1ms.run" [[registry.mirror]] location = "dockerpull.cn" [[registry.mirror]] location = "docker.1ms.run" [[registry.mirror]] location = "docker.1panel.live" [[registry.mirror]] location = "hub.rat.dev" [[registry.mirror]] location = "docker.mirrorify.net" [[registry.mirror]] location = "docker-pull.rat.dev" # GitHub Container Registry [[registry]] prefix = "ghcr.io" location = "ghcr.m.ixdev.cn" [[registry.mirror]] location = "ghcr.nju.edu.cn" [[registry.mirror]] location = "ghcr.mirrorify.net" [[registry.mirror]] location = "ghcr-pull.ygxz.in" # GitLub Container Registry [[registry]] prefix = "registry.gitlab.com" location = "glcr.nju.edu.cn" # Red Hat Quay Registry [[registry]] prefix = "quay.io" location = "quay.m.ixdev.cn" [[registry.mirror]] location = "quay.nju.edu.cn" [[registry.mirror]] location = "quay.mirrorify.net" [[registry.mirror]] location = "quay-pull.ygxz.in" # Google Container Registry [[registry]] prefix = "gcr.io" location = "gcr.nju.edu.cn" [[registry.mirror]] location = "gcr.mirrorify.net" [[registry.mirror]] location = "gcr-pull.ygxz.in" # Kubernetes Container Registry (Google) [[registry]] prefix = "k8s.gcr.io" location = "gcr.nju.edu.cn/google-containers" [[registry.mirror]] location = "k8s-gcr.mirrorify.net" [[registry.mirror]] location = "k8s-gcr-pull.ygxz.in" # Kubernetes Container Registry [[registry]] prefix = "registry.k8s.io" location = "k8s.m.ixdev.cn" [[registry.mirror]] location = "k8s.nju.edu.cn" [[registry.mirror]] location = "k8s.mirrorify.net" [[registry.mirror]] location = "k8s-pull.ygxz.in" # Microsoft Container Registry # [[registry]] # prefix = "mcr.microsoft.com" # location = "mcr.microsoft.com" # [[registry.mirror]] # location = "mcr.mirrorify.net" # [[registry.mirror]] # location = "mcr-pull.ygxz.in" # Elastic Docker registry [[registry]] prefix = "docker.elastic.co" location = "elastic.m.ixdev.cn" [[registry.mirror]] location = "elastic.mirrorify.net" [[registry.mirror]] location = "elastic-pull.ygxz.in" # NVIDIA GPU Cloud Container Registry [[registry]] prefix = "nvcr.io" location = "nvcr.m.ixdev.cn" [[registry.mirror]] location = "nvcr.nju.edu.cn" [[registry.mirror]] location = "nvcr.mirrorify.net" [[registry.mirror]] location = "nvcr-pull.ygxz.in" EOF |
(可选)CF 优选 IP
CF Workers 默认分配的部分线路可能较差,导致单线程拉取镜像较慢(不能只看延迟),需要自行优选
不会优选可以直接 ping download.yunzhongzhuan.com
,选择一个延迟低的 IP 添加到 Hosts 中:
1 | cat >> /etc/hosts << EOT # Best IP for CF Workers Docker hub mirror 172.67.64.150 docker.1panel.live 172.67.64.150 hub.rat.dev EOT |
旁路由劫持
如果懒得配置镜像,且有旁路路由,可以通过主路由 DNS劫持 + 静态路由 的方式实现免镜像加速,下层设备无需更改网关
关键参数:
1 | domain:docker.io 54.236.113.205 domain:hub.docker.com 54.236.113.205 production.cloudflare.docker.com 104.16.97.215 |
KSpeeder
多镜像并发下载,动态负载均衡,断点续传支持,Docker镜像代理服务
Docker镜像加速专家KSpeeder:https://kspeeder.istoreos.com/