用 registry:3 做私有镜像仓库和 Docker Hub 缓存

之前发版docker镜像一直是手工,未引入自动部署。 1 2 3 4 5 本地 build 镜像 docker save 成 tar FTP 上传到服务器 服务器 docker load 重启容器 能用,但每次都很烦。镜像稍微大一点,上传和 load 都慢,也没有一个清楚的版本记录。所以根据以上步骤整理出来的需求如下: CI 能把业务镜像推上去 生产机器能拉下来 最好还能缓存一下 Docker Hub 的基础镜像 这种场景用 registry:3 就够了。 前提 由于 registry:3 限制,一个 registry cache 只能代理一个上游,所以私有镜像仓库和 Docker Hub 缓存分开运行。 比如: 1 2 registry.example.com # 存自己的业务镜像 mirror.example.com # 缓存(加速) Docker Hub 镜像 私有 Registry 先建目录: 1 2 mkdir -p /opt/registry/{data,auth} cd /opt/registry 生成登录账号: 1 2 docker run --rm --entrypoint htpasswd httpd:2 \ -Bbn woodpecker 'your-password' > auth/htpasswd docker-compose.yml: ...

2026年7月1日 · 2 分钟 · 浅忆

docker login 执行之后的影响

当执行 docker login xxx.xxx.xxx 命令后,Docker 客户端会尝试登录到指定的镜像仓库 xxx.xxx.xxx,并提示输入用户名和密码(如果该仓库需要身份验证)。成功登录后,Docker 会将登录凭证存储在本地(通常在 ~/.docker/config.json 文件中),以便后续操作(如拉取镜像或推送镜像)可以自动使用这些凭证。 对拉取镜像的具体变化 执行 docker login xxx.xxx.xxx 后,拉取镜像时的变化取决于以下几个方面: 访问私有镜像 如果 xxx.xxx.xxx 是一个私有镜像仓库,并且之前没有登录,那么在登录之前尝试拉取该仓库中的私有镜像会失败(通常会收到 unauthorized: authentication required 的错误)。登录成功后,可以拉取该仓库中有权限访问的私有镜像。例如: 1 docker pull xxx.xxx.xxx/my-private-image:latest 在登录后,Docker 会使用存储的凭证自动完成身份验证,拉取过程会顺利进行。 加速镜像拉取(如果它是镜像代理) 如果 xxx.xxx.xxx 是一个镜像加速服务(类似于国内的镜像源,如阿里云、DaoCloud 等),登录后可能会影响从该仓库拉取镜像的速度。许多加速服务会代理 Docker Hub 的官方镜像,登录后可以通过该服务更快地下载镜像。例如: 1 docker pull xxx.xxx.xxx/library/ubuntu:latest 这里假设 xxx.xxx.xxx 代理了 Docker Hub 的 ubuntu 镜像,拉取速度可能会比直接从 registry-1.docker.io(Docker Hub 默认地址)更快,具体取决于网络环境和该服务的性能。 无变化的情况 如果登录后仍然拉取的是其他仓库的镜像(例如默认的 Docker Hub 镜像 ubuntu:latest),并且没有配置 xxx.xxx.xxx 作为镜像源,那么拉取镜像的行为不会有任何变化。登录仅对 xxx.xxx.xxx 仓库的操作生效。 拉取镜像的行为 在默认情况下,如果执行: 1 docker pull ubuntu:latest Docker 会从官方镜像仓库(即 Docker Hub,地址为 registry-1.docker.io)拉取 ubuntu:latest 镜像,而不是从 xxx.xxx.xxx 拉取。原因如下: ...

2025年6月19日 · 1 分钟 · 浅忆

Docker拉取镜像设置s5代理

目前有2种方案 方案一、在 daemon.json 配置 1 vi /etc/docker/daemon.json 1 2 3 4 5 6 7 { "proxies": { "http-proxy": "http://127.0.0.1:10808", "https-proxy": "http://127.0.0.1:10808", "no-proxy": "localhost,127.0.0.1" } } 方案二、在docker服务里配置 1 vi /lib/systemd/system/docker.service 1 2 3 4 5 [Service] Environment="HTTP_PROXY=http://127.0.0.1:10808" Environment="HTTPS_PROXY=http://127.0.0.1:10808" Environment="NO_PROXY=localhost,127.0.0.1" 1 2 systemctl daemon-reload systemctl restart docker 设置加速源(自建或使用第三方) 1 vi /lib/systemd/system/docker.service 1 2 3 { "registry-mirrors": ["https://mirror.example.com"] }

2025年6月1日 · 1 分钟 · 浅忆

Docker-安装

Linux docker、docker-compose安装命令 ...

2025年6月1日 · 1 分钟 · 浅忆

Docker-开发相关镜像

开发过程中常用镜像。 ...

2025年6月1日 · 15 分钟 · 浅忆