在国内想要下载镜像比较困难,因此很多公司都构建自己的私有仓库。如何搭建私有仓库,请参考《docker私有仓库从无到有》。然而即使私有仓库服务构建完成,但是里面没有镜像,一样很苦恼。今天介绍一下如何利用国内云服务商提供的镜像加速器,来快速下载镜像。

目前国内docker镜像加速器服务商,质量比较好的有阿里云、DaoCloud以及Docker中国。

它们配置都是相同,获取专属加速地址,然后将地址写到docker配置文件/etc/docker/daemon.json中。

一、阿里云加速地址:

1、注册阿里云账号,如果有淘宝号也是可以的。https://dev.aliyun.com/search.html

2、注册并登陆成功之后,进入之后点击管理中心

3、进入管理中心,默认业务就是下图,然后在选择镜像加速器,里面就是专属加速地址,并且有配置方法。

DaoCloud配置方式与阿里云类似,只是服务商不一样罢了。

二、 Docker 中国

如果不想注册阿里云,那么可以使用Docker中国提供的服务。

可以将https://registry.docker-cn.com,设置到registry-mirrors中即可(与阿里云设置方式一样)。具体方法,可参考https://www.docker-cn.com/registry-mirror。

以上设置好镜像之后,不需要docker login进行登录。

三、遇到问题

问题1:设置完加速地址之后,输入如下命令:

[root@localhost docker]# docker pull mysql
Using default tag: latest
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
[root@localhost docker]#
[root@localhost docker]# 

查看具体日志信息:

[root@localhost docker]# grep docker /var/log/messages
Mar  7 15:59:06 localhost dockerd: time="2018-03-07T15:59:06.551882623+08:00" level=warning msg="Error getting v2 registry: Get https://6jwksk60.mirror.aliyuncs.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)"
Mar  7 15:59:06 localhost dockerd: time="2018-03-07T15:59:06.551997545+08:00" level=error msg="Not continuing with pull after error: Get https://6jwksk60.mirror.aliyuncs.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)"
Mar  7 15:59:06 localhost dockerd: time="2018-03-07T15:59:06.552080576+08:00" level=error msg="Handler for POST /v1.35/images/create returned error: Get https://6jwksk60.mirror.aliyuncs.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)"
Mar  7 15:59:08 localhost dockerd: time="2018-03-07T15:59:08.441427015+08:00" level=debug msg="Calling GET /_ping"
Mar  7 15:59:08 localhost dockerd: time="2018-03-07T15:59:08.449887376+08:00" level=debug msg="Calling GET /v1.35/info"
Mar  7 15:59:08 localhost dockerd: time="2018-03-07T15:59:08.485088164+08:00" level=debug msg="Calling POST /v1.35/images/create?fromImage=mysql&tag=latest"
Mar  7 15:59:08 localhost dockerd: time="2018-03-07T15:59:08.547151332+08:00" level=debug msg="hostDir: /etc/docker/certs.d/6jwksk60.mirror.aliyuncs.com"
Mar  7 15:59:08 localhost dockerd: time="2018-03-07T15:59:08.547231472+08:00" level=debug msg="Trying to pull mysql from https://6jwksk60.mirror.aliyuncs.com/ v2"
Mar  7 15:59:23 localhost dockerd: time="2018-03-07T15:59:23.548000137+08:00" level=warning msg="Error getting v2 registry: Get https://6jwksk60.mirror.aliyuncs.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)"
Mar  7 15:59:23 localhost dockerd: time="2018-03-07T15:59:23.548084051+08:00" level=info msg="Attempting next endpoint for pull after error: Get https://6jwksk60.mirror.aliyuncs.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)"
Mar  7 15:59:23 localhost dockerd: time="2018-03-07T15:59:23.548133902+08:00" level=debug msg="Trying to pull mysql from https://registry-1.docker.io v2"
Mar  7 15:59:38 localhost dockerd: time="2018-03-07T15:59:38.548628804+08:00" level=warning msg="Error getting v2 registry: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)"
Mar  7 15:59:38 localhost dockerd: time="2018-03-07T15:59:38.548715275+08:00" level=info msg="Attempting next endpoint for pull after error: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)"
Mar  7 15:59:38 localhost dockerd: time="2018-03-07T15:59:38.548798878+08:00" level=error msg="Handler for POST /v1.35/images/create returned error: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)"

实际错误是:

Get https://6jwksk60.mirror.aliyuncs.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)"

【定位过程】

通过curl进行验证:curlhttps://6jwksk60.mirror.aliyuncs.com/v2/_catalog 是可以正常返回结果,说明服务没有问题

通过谷歌翻墙(百度不行,解决不了这个问题),一共大概有两种方式

1、设置dns,在/etc/resolv.conf,以及/etc/docker/daemon.json中增加dns。例如dns地址:8.8.8.8

2、设置docker代理(centos和ubuntu同样设置)

   [root@localhost docker]# mkdir -p /etc/systemd/system/docker.service.d[root@localhost docker]# cat > /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF> [Service]> Environment="HTTP_PROXY=http://proxy.example.com:80/" "HTTPS_PROXY=https://proxy.example.com:443/"> EOF[root@localhost docker]#

然后重启服务

   [root@localhost docker]# systemctl daemon-reload[root@localhost docker]# systemctl restart docker

查看配置

   [root@localhost docker]# systemctl show --property=Environment dockerEnvironment=HTTP_PROXY=http://proxy.example.com:80/ HTTPS_PROXY=https://proxy.example.com:443/[root@localhost docker]# 

设置完成后再进行docker pull就可以下载了。

【分析一下原因】

1、通过curl来判断服务是正常的,所以肯定是docker配置问题。

2、当前环境在公司内网,公司是有代理的,因此可以肯定是公司网络问题,通过谷歌搜索,最终确定需要为docker指定代理。

docker构建国内镜像服务相关推荐

  1. Docker使用国内镜像仓库

    Docker使用国内镜像仓库 {"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"] } 找到 ...

  2. docker构建hadoop镜像、docker-compose启动hdfs

    之前使用镜像singularities/hadoop:2.8安装过hdfs,但鉴于这个镜像已经很久没更新了,今天就手动安装一下hadoop,并构建成镜像,方便以后使用. 参考文档:docker构建ha ...

  3. Docker构建MySQL镜像并初始化

    文章目录 Docker构建MySQL镜像并初始化 Dockerfile 的一些常用语法 FROM RUN CMD ENV COPY ADD WORKDIR EXPOSE 构建自带初始化的 MySQL ...

  4. Docker切换国内镜像下载源

    Docker切换国内镜像下载源--配置国内免费registry mirror 转载 2016年09月30日 21:51:17 标签:Docker切换国内镜像 /Docker加速下载 30933 转载: ...

  5. Docker构建JDK 镜像

    Docker构建JDK 镜像 在 Docker官网中的openJDK 镜像中,默认不是使用的北京时间,会导致启动jar应用程序时时区不对的情况,这里在 openJDK镜像的基础上,设置使用中国北京时间 ...

  6. docker 配置国内镜像地址

    https://www.cnblogs.com/cocoajin/p/15513348.html 为docker配置国内镜像地址,用于在pull镜像下载加速 1. 创建配置文件daemon.json ...

  7. 使用docker构建jenkins镜像并运行容器

    https://my.oschina.net/donhui/blog/470372?p={{currentPage+1}}   摘要: 使用docker构建jenkins镜像并运行容器 目录: 1.基 ...

  8. ubuntu下docker添加国内镜像

    ubuntu下docker添加国内镜像 第一步: 更换镜像地址 到etc/docker目录中设置daemon.json文件(值得注意的是,如果是首次安装,理论上是不会有 cd /etc/docker ...

  9. Windows Docker 配置国内镜像源的两种方法

    Windows Docker配置国内镜像源的两种方法 更新时间 2022.04.14 通过Docker-Desktop界面操作和修改daemon.json两种方法配置国内镜像源 方法一:通过Docke ...

最新文章

  1. 函数的相关操作——利用函数翻转任意数组||利用函数冒泡排序||利用函数判断闰年
  2. Groovy 设计模式 -- 保镖模式
  3. 如何成为SSP offer收割机|独家经验分享!
  4. android拍照图片如何存储空间不足,拍照时手机存储空间提示不足? OPPO云服务太贴心了...
  5. 94女,大厂程序员,收入50w+
  6. 作品拍卖价碾压毕加索,没有灵魂的 AI 灵魂画手有怎样的未来?
  7. 条形图设置颜色Java_java – 如何在条形图中显示每个条形的条形值?
  8. Altium Designer 18安装教程
  9. rapidminer java,rapidminer 数据导入及几个算子简单应用
  10. java前缀表达式二叉树课程设计_表达式构建二叉树(中缀,前缀,后缀)
  11. 一切成功源于积累——20140928 认识货币——加元
  12. 深入浅出 SSL/TLS 协议
  13. 年轻人,不要太浮躁,静下心来听听【钢琴曲】
  14. 笔记本怎么用android,电脑上如何使用Android系统
  15. 我分析了上万个微信红包数据,得到了这些发现(附数据集)
  16. python,你也和小猪佩奇一样社会了!
  17. 定时器 setTimeout(),setInterval() 清除定时器
  18. 连接ARM设备的两种方式
  19. 美团点评2017秋招笔试真题-安全工程师卷
  20. vue uni-app 裁剪图片(裁剪头像)插件vue-image-cropper

热门文章

  1. Android 11---WMS之横竖屏切换流程详解之一
  2. Findora区块链培训课程重磅上线!(附视频)
  3. poj 3084(最小割)
  4. 音频文件如何转换成MP3格式?一分钟教你搞定
  5. 利用网络信息减少因果推断中的confounding bias--结合两种思路的新方法
  6. 对英特尔在嵌入式市场的几个猜想
  7. js 触发 change 事件
  8. 艾伟:WCF从理论到实践(13):事务投票
  9. web2——影评网页
  10. [转载]JavaMail API简介