解决国内无法下载docker镜像问题(外网方案)

编程教程 > Docker Case (25) 2025-02-24 10:59:26

问题

国区现在已经完全访问不了docker hub的镜像了,对于使用来说很不方便。各个大厂的公共镜像站也陆续下降,除了收费镜像服务外,稍有几个能稳定用的。这里用一个便宜的vps把要常用到的镜像都harbor缓存过来或者直当接镜像库使用

条件

  • 首先你的有一台国外能访问的服务器

安装docker

外网服务器安装docker服务,docker安装参考:

 

部署 docker的仓库镜像

docker-compose.yml配置文件

version: '3.8'

services:
  registry-server:
    image: registry:2.8.2
    restart: always
    ports:
      - 5000:5000
    environment:
      REGISTRY_HTTP_HEADERS_Access-Control-Allow-Origin: '[http://registry-ui.example.com]'
      REGISTRY_HTTP_HEADERS_Access-Control-Allow-Methods: '[HEAD,GET,OPTIONS,DELETE]'
      REGISTRY_HTTP_HEADERS_Access-Control-Allow-Credentials: '[true]'
      REGISTRY_HTTP_HEADERS_Access-Control-Allow-Headers: '[Authorization,Accept,Cache-Control]'
      REGISTRY_HTTP_HEADERS_Access-Control-Expose-Headers: '[Docker-Content-Digest]'
      REGISTRY_STORAGE_DELETE_ENABLED: 'true'
    volumes:
      - ./registry/data:/var/lib/registry
      - ./registry-config.yml:/etc/docker/registry/config.yml
      - ./registry-htpasswd:/etc/docker/registry/htpasswd
    container_name: registry-server

registry-config.yml 配置

version: 0.1
log:
 fields:
   service: registry
storage:
 delete:
   enabled: true
 cache:
   blobdescriptor: inmemory
 filesystem:
   rootdirectory: /var/lib/registry
http:
 addr: :5000
 headers:
   X-Content-Type-Options: [nosniff]
   Access-Control-Allow-Origin: ['http://127.0.0.1:8000']
   Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE']
   Access-Control-Allow-Headers: ['Authorization', 'Accept', 'Cache-Control']
   Access-Control-Max-Age: [1728000]
   Access-Control-Allow-Credentials: [true]
   Access-Control-Expose-Headers: ['Docker-Content-Digest']
auth:
 htpasswd:
   realm: basic-realm
   path: /etc/docker/registry/htpasswd
proxy:
 remoteurl: https://docker.1ms.run

这里的proxy.remoteurl: 配置成官网的仓库地址即可

 

registry-htpasswd 参考(账号:admin/密码:admin123):

admin:$2y$05$c8x6RzaYl27VK7Vqi2SJC.nBrMQ1pp.X4/7puDPy98jlRlZmoNfpm

 

registry-htpasswd 密码本生成方式:

【默认文件的账号密码为:admin/admin123】
# 生成新的密码文件,-c参数即创建文件, -B参数使用bcrypt对文件进行加密
htpasswd -B -c ${htpasswd_file_path} ${user_name_1}

# 在已有的密码文件中追加新的用户密码
htpasswd -B ${htpasswd_file_path} ${user_name_2}

# 删除已有用户
htpasswd -D ${htpasswd_file_path} ${user_name_2}

 

使用镜像

配置docker的daemon.json,添加服务器地址和端口

编辑docker配置文件 /etc/docker/daemon.json (如果没有则创建一个)

内容:

{
 "registry-mirrors":["http://外网ip:端口"],
 "insecure-registries":["外网ip"]
}

重启docker服务

sudo systemctrl docker restart

拉取镜像

sudo docker pull 镜像名

 

 

关联内容:

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
问题国区现在已经完全访问不了docker hub的镜像了,对于使用来说很不方便。各个大厂的公共镜像站也陆续下降,除了收费镜像服务外,稍有几个能稳定用的。这里用一
背景Docker 对于新手开发者部署一些中间件或者开发环境比较友好,可惜官方image hub已被F...。内部使用必须依赖三方的镜像库,例如阿里云的https
概述接前几篇harbor 2.10.x离线安装Harbor 镜像复制后,这里简述docker配合harbor私服镜像pull(拉取)和push(上传)操作示例。
Docker中容器/镜像的备份、恢复和迁移今天,我们将学习如何快速地对docker容器进行快捷备份、恢复和迁移。Docker是一个开源平台,用于自动化部署应用,
Docker Nodejs 18.20.4 环境编译vue项目 sudo docker run --rm --name node18c -v /your/pro
接上一篇harbor安装,这里讲解如何上传镜像到harbor。因上篇安装的是基于http,所以在上传端的docker需要添加一个配置。 情况一 没有/etc/d
在执行多次docker-compose build 之后,我们通过命令`docker images`可以看到很多的REPOSITORY 为<none&gtl; 且tag 也是<non...
官方命令docker system prune -a特别注意:该命令会删除没有被使用的镜像 over
问题用闲置设备装了Ubuntu Server安装过程中可以选择预装docker装完发现是snap版本,无法通过常规方法配置/etc/docker/daemon
Docker简介Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可
Docker MySQL官方镜像启动默认初始化创建数据库,docker MySQL初始化sql脚本执行,初始化用户sql脚本version: "3.8"netw
docker 常用命令整理(持续更新)docker运行容器资源相关查看所有运行docker的资源消耗情况docker stats查看指定运行容器资源消耗情况do
Ubuntu 系统安装DockerUbuntu 在线安装 Docker-XQLEE'Blog (在线安装,需外网好)Ubuntu 安装Docker 国内适用-X
Docker报错Error running DeviceCreate (createPool) dm_task_run failed,无法启动问题解决 由于我这
snap 简介如果你在使用 Ubuntu 18.04/20.04 LTS 版本的 Ubuntu 系统,会发现系统里面多了一个应用格式包—— .snap 包。 S