资讯专栏INFORMATION COLUMN

在国内 docker build 的正确姿势

frolc / 1324人阅读

摘要:由于某些原因,在国内构建第三方镜像是一件考验耐心的事情。国内有不少的镜像源,比如中科大阿里云。以中科大的镜像源为例,可以这样指定镜像源通常作为一个服务由系统在开机时启动,所以我们需要把上面的指令加到服务的配置中。

由于某些原因,在国内构建第三方docker镜像是一件考验耐心的事情。在神奇的国度生活,自然也要用神奇的生活方式。跟解决其他同类问题一样,解决这个问题常用两种方法,一曰换源,二曰代理。

换源

我们使用 docker 的时候,其实是启动一个 docker client 来跟后台运行的 docker daemon 通讯。docker daemon --help 显示,可以通过 --registry-mirror= 指定 docker 的镜像源。国内有不少 docker 的镜像源,比如中科大LUG、阿里云、DaoCloud。以中科大的镜像源为例,可以这样指定镜像源:

--registry-mirror=https://docker.mirrors.ustc.edu.cn

docker daemon 通常作为一个服务由系统在开机时启动,所以我们需要把上面的指令加到服务的配置中。

如果你的Linux发行版(较旧)使用 SysVinit 来启动,你需要打开 /etc/default/docker 这个文件,修改下面内容:

# Use DOCKER_OPTS to modify the daemon startup options.
DOCKER_OPTS="" # 把镜像的选项加在这里

如果你的Linux发行版较新,应该是使用 Systemd 来启动,需要使用 sudo systemctl edit docker.service 打开配置文件。如果你的 Systemd 版本不够高,不支持edit命令,就需要手动打开 /lib/systemd/system/docker.service 或其他 docker.service 所在的位置。然后在 ExecStart=/usr/bin/docker daemon -H fd:// 这一行后面加上镜像的选项。

如果你使用的是 OS X,docker Beta 提供了图形化界面来修改镜像源:
先选择 preferences... 菜单,

然后在 Advanced 一栏下应该能看到:

Windows 上的 docker Beta 估计也提供了相似的图形化修改界面。

值得注意的是,由于 docker daemon 默认用 HTTPS 通讯,如果你选用的源不支持 HTTPS,需要同时在 --insecure-registry= 选项中指定镜像源的域名,以作豁免。

现在 docker pull 的时候,就会去拉国内的镜像,速度改善了不少呢。

代理

尽管现在 docker pull 的速度上去了,docker build 的速度依然挺慢的。毕竟比起花在第一个 FROM 指令的时间,后面一层层构建才是耗时的大头。由于第三方 Dockerfile 通常不会设定成用国内的源,更新软件包的速度一直是龟速,而且还经常出错。看来光换源还是不够的,还要挂个代理。

幸运的是,docker 提供了对 HTTP 代理的支持。你所需的,不过是在启动 docker daemon 的时候设置下 HTTP_PROXY 环境变量,比如 HTTP_PROXY=xxx.com:xxxx docker daemon。修改的方式请参考上面的“换源”一节。(注:设置 http_proxy 也是可以的, docker 会先查找 HTTP_PROXY 环境变量,如果找不到再继续查找全小写的版本)

一般大一点的公司会提供可以跟国际互联网互联的 HTTP 代理。如果贵司不提供,抑或你是在家里使用 docker,可以用 cow 做转发,用 ss 作为二级代理来实现 HTTP 代理。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26655.html

相关文章

  • Docker简介、常用命令与实践(一)

    摘要:获取阿里云加速器地址进入登录阿里云进入后台配置加速器点击后就会重启并应用配置的镜像地址了检查加速器是否生效配置加速器之后,如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行执行,如果从结果中看到了如下内容,说明配置成功。 一、为什么要使用Docker以及与虚拟机的区别? 1.1 为什么要使用Docker Docker的思想来自于集装箱。集装箱解决了什么问题?在一艘大船上,...

    Ocean 评论0 收藏0
  • 使用Kubernetes 1.2.0正确姿势

    摘要:升级注意事项使用推荐使用,但仍然支持和。如果内核不支持,会包含一个无法使用的警告。在使用创建对象时,如果不指定,使用读取该字段会显示中指定的默认值。如果要,推荐使用中的命令。分配相关的问题。 之前,我们介绍了kubernetes 1.2.0的新特性,还不清楚的童鞋查看这里。 本文讨论的是使用 kubernetes 1.2.0 的注意事项,包括对周边组件的要求(比如docker的兼容性)...

    LucasTwilight 评论0 收藏0
  • Docker初体验——踩过那些坑!

    摘要:原因其实这个报错不需要下载最新文件,而是文件没有放到正确的位置。重启电脑后按或进入界面不同主板型号进入所需按键不同。端口映射环境下可能不存在这个问题坑在下部署了应用服务并进行了端口映射。 2018‎年‎3‎月‎6‎日 Docker安装 环境:windows7 安装包:DockerToolbox-17.10.0-ce.exe (下载地址:http://mirrors.aliyun.co...

    Jrain 评论0 收藏0
  • 新视界 | 也许这才是大规模分发容器镜像正确姿势

    摘要:负责承载操作系统的分布式文件系统只需要使用必要的文件,而且事实上只需要下载并在本地缓存这部分必要数据。而第二项原则在于元数据即与文件存在相关的信息,而非文件内容被优先对待。这套镜像随后可进行任意分发,并被用于启动该项任务。 随着Docker技术的日渐火热,一些容器相关的问题也浮出水面。本文就容器数量激增后造成的分发效率低下问题进行了探讨,并提出了一种新的解决方法。发现问题,解决问题,正...

    hufeng 评论0 收藏0
  • docker 应用系列(一)--- 一步步搭建虚拟机 docker 环境 附有 vue-cli +

    摘要:为确保系统里面没有自带的软件的残留,我们要清除一下旧版本的,虽然新系统一般都不会有就是了。更新软件包缓存。 showImg(https://segmentfault.com/img/remote/1460000015914895?w=1240&h=819); 小剧场 测试:裤裆你这页面刷新就白屏啊,怎么了啊,而且你看这 network,怎么这些 js 这么大啊,很耗流量而且加载速度还很...

    hatlonely 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<