<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>飞牛OS on 魔都水滴</title>
		<link>https://blog.margrop.net/tag/%E9%A3%9E%E7%89%9Bos/</link>
		<description>Recent content in 飞牛OS on 魔都水滴</description>
		<generator>Hugo</generator>
		<language>zh-CN</language>
		
		
		
		
			<lastBuildDate>Wed, 15 Jul 2026 19:30:00 +0800</lastBuildDate>
		
			<atom:link href="https://blog.margrop.net/tag/%E9%A3%9E%E7%89%9Bos/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Docker 拉不动别急着换 DNS：国内镜像加速源挑选、配置与避坑全指南</title>
				<link>https://blog.margrop.net/post/docker-mirror-source-selection-guide/</link>
				<pubDate>Wed, 15 Jul 2026 19:30:00 +0800</pubDate>
				<guid>https://blog.margrop.net/post/docker-mirror-source-selection-guide/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;国内网络环境下，Docker 拉取镜像失败，往往不是镜像不存在，也不一定是 DNS 的锅。更常见的原因是：公共仓库的访问链路拥堵、某个加速源临时故障，或者配置文件改对了却没有重启 Docker。&lt;/p&gt;&#xA;&lt;p&gt;我的建议是：先打开 &lt;a href=&#34;https://status.anye.xyz/&#34;&gt;status.anye.xyz&lt;/a&gt;，把它当作“镜像源天气预报”，看多个源最近是否可用；再根据自己的系统改对配置文件；改完先校验 JSON，再重启 Docker，最后用一个小镜像做真实拉取验证。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;一问题背景为什么昨天能拉今天就超时&#34;&gt;一、问题背景：为什么昨天能拉，今天就超时？&lt;/h2&gt;&#xA;&lt;p&gt;很多人第一次遇到这个问题，是在部署一个很普通的服务：&lt;code&gt;nginx&lt;/code&gt;、&lt;code&gt;redis&lt;/code&gt;、&lt;code&gt;postgres&lt;/code&gt;，或者 NAS 上的媒体服务。命令可能只有一句：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker pull nginx:alpine&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;但终端却出现了超时、&lt;code&gt;context deadline exceeded&lt;/code&gt;、&lt;code&gt;TLS handshake timeout&lt;/code&gt;、&lt;code&gt;connection reset by peer&lt;/code&gt;，甚至长时间停在下载层。换一个镜像标签、重启路由器、修改本地 DNS，有时能暂时恢复，于是大家容易得出一个结论：Docker 太玄学。&lt;/p&gt;&#xA;&lt;p&gt;其实 Docker 拉镜像像是“从仓库借书”：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Docker 客户端先找到仓库地址；&lt;/li&gt;&#xA;&lt;li&gt;再通过网络连接仓库；&lt;/li&gt;&#xA;&lt;li&gt;仓库返回镜像清单；&lt;/li&gt;&#xA;&lt;li&gt;客户端逐层下载内容；&lt;/li&gt;&#xA;&lt;li&gt;最后校验每一层是否完整。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;这条链路中任何一段堵住，都会表现为“拉不下来”。所以，镜像加速源不是魔法按钮，而是给这条路增加一条更顺畅的入口。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://blog.margrop.net/post-images/docker-mirror-source-selection-guide/02-docker-config.svg&#34; alt=&#34;Docker 镜像加速示意图：监控站、配置文件与 Docker 服务&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;二问题表现不要只看网页能不能打开&#34;&gt;二、问题表现：不要只看网页能不能打开&lt;/h2&gt;&#xA;&lt;p&gt;一个镜像源网页能打开，不等于 Docker 一定能用。选择加速源时，至少要看四件事：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://blog.margrop.net/post-images/docker-mirror-source-selection-guide/03-how-to-choose.svg&#34; alt=&#34;镜像源挑选的四个问题&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-地址是否真的可达&#34;&gt;1. 地址是否真的可达&lt;/h3&gt;&#xA;&lt;p&gt;浏览器打开首页，只能证明首页响应了。Docker 还要访问 Registry API、鉴权接口和镜像层下载接口。网页正常、拉取失败，是完全可能的。&lt;/p&gt;&#xA;&lt;h3 id=&#34;2-是否支持完整的-docker-hub-加速链路&#34;&gt;2. 是否支持完整的 Docker Hub 加速链路&lt;/h3&gt;&#xA;&lt;p&gt;有些地址只是一个网页代理或搜索页面，并不是 Docker Registry mirror。配置到 &lt;code&gt;registry-mirrors&lt;/code&gt; 后，如果 &lt;code&gt;docker info&lt;/code&gt; 看不到它，或者 &lt;code&gt;docker pull&lt;/code&gt; 仍然直接访问默认仓库，就要怀疑它并非真正的加速服务。&lt;/p&gt;&#xA;&lt;h3 id=&#34;3-是否持续稳定而不是刚好今天在线&#34;&gt;3. 是否持续稳定，而不是刚好今天在线&lt;/h3&gt;&#xA;&lt;p&gt;镜像源很像城市道路：今天通车，不代表明天不施工。稳定性比某一次测速的峰值更重要。家用 NAS 可以接受偶尔切换，CI 构建和生产环境则应该准备备用方案。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
