[TOC] #### 1. Docker Hub 镜像 --- Docker 官方镜像仓库(Docker Hub):<https://hub.docker.com> + 该网站需要使用代理软件才能访问,或者配置 Docker 镜像加速器 + Docker Hub 是全球最大的容器镜像仓库,用于存储、管理和分发 Docker 镜像 + 它是 Docker 官方精心策划和维护的一组高质量容器镜像,托管在 Docker Hub 上 常见的几个域名: | 用途 | 域名 | | ------------ | ------------ | | Docker 官网 | `docker.com` | | Docker Hub 网站 | `hub.docker.com` | | Docker 默认仓库域名 | `docker.io` | | Docker Registry API | `registry-1.docker.io` | 例如: ```bash docker pull nginx ``` 实际上等价于: ```bash docker pull docker.io/library/nginx:latest ``` 你在使用时会遇到报错:无法连接到 Docker Hub 官方仓库,网络连接超时,这是在国内访问 Docker Hub 的常见问题 ```plaintext $ docker pull nginx Using default tag: latest Error response from daemon: failed to resolve reference "docker.io/library/nginx:latest": failed to do request: Head "https://registry-1.docker.io/v2/library/nginx/manifests/latest": dial tcp 174.37.243.85:443: i/o timeout ``` #### 2. 配置守护进程代理 --- 对于经常使用终端代理加速 Github 或其它需要从国外网站下载软件的用户,你可能会运行以下命令: + 然后你就会发现,这种方式并不能加速从 Docker Hub 下载镜像 + 因为代理环境变量只对当前终端的普通命令有效,而 Docker 守护进程(dockerd)不读取这些环境变量 ```bash export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 ``` 配置 Docker 守护进程的代理 ```bash # 1. 创建 Docker 代理配置目录 sudo mkdir -p /etc/systemd/system/docker.service.d # 2. 创建代理配置文件(使用你提供的 IP 和端口) sudo tee /etc/systemd/system/docker.service.d/proxy.conf <<-'EOF' [Service] Environment="HTTP_PROXY=http://192.168.3.6:7890" Environment="HTTPS_PROXY=http://192.168.3.6:7890" Environment="NO_PROXY=localhost,127.0.0.1" EOF # 3. 重新加载 systemd 并重启 Docker sudo systemctl daemon-reload sudo systemctl restart docker # 4. 验证代理是否生效 sudo systemctl show --property=Environment docker ``` 取消代理(镜像下载完成后,不需要使用代理了,建议将代理删除掉) ```bash # 删除 proxy.conf 文件 sudo rm /etc/systemd/system/docker.service.d/proxy.conf # 重新加载 systemd 配置 sudo systemctl daemon-reload # 重启 Docker 服务 sudo systemctl restart docker # 验证代理已取消(应该显示为空) sudo systemctl show docker --property Environment ``` #### 3. 配置 Docker 镜像加速器 --- 创建配置目录 ```bash # 这是 Docker 守护进程配置文件的默认存放位置 mkdir -p /etc/docker ``` 写入镜像加速器配置 ```bash # 配置 Docker 镜像加速器 cat > /etc/docker/daemon.json <<'EOF' { "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.1ms.run", "https://docker.xuanyuan.me" ] } EOF # 如果 cat 命令无法使用,可以使用 tee 命令配置镜像加速器(Ubuntu) sudo tee /etc/docker/daemon.json > /dev/null <<'EOF' { "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.1ms.run", "https://docker.xuanyuan.me" ] } EOF ``` 运行以下命令使镜像加速器配置立即生效 ```bash # 重载系统服务配置 sudo systemctl daemon-reload # 重启 Docker 服务,使新的配置生效 sudo systemctl restart docker ```