3

对程序员来说,阻碍幸福感最大的因素应该是那个伟大的墙了。

本文对 docker 系统配置过程中,国内使用的一些加速的办法做一些记录和总结,希望能给有需要的人带来微小的帮助。

Docker for mac

下载 Docker for mac 安装包,需要焚香沐浴,三拜九叩,等待网速最快的时候,点击下载链接,如果再配上一个好点的梯子,可能运气好的话,能顺利下载到。

当然我一般会选择去找土豪同事用他的超级梯子下载好 U盘拷过来。

Docker Docs

使用 Docker 最佳教程应该是 Docker 官方文档 了,但是没梯子的状态下访问速度基本上很慢,还好这份文档是开源的 docker-docs ,可以自己 clone 下来,然后执行 docker-compose up 便可以在localhost:4000离线浏览了。

docker pull

如果你想使用 docker hub 官方镜像,很明显直接是使用不了的。所幸国内有 Daocloud 或者阿里云这样的云服务商提供镜像加速服务,可直接 Google 搜索“daocloud 镜像加速”,添加这些服务商提供的 registry-mirror 地址即可。

docker build

如果是直接依赖基础的操作系统镜像来构建,例如 Ubuntu,一般默认的软件源都是会受到干扰的,所以可以在 Dockerfile 中加入:

COPY sources.list /etc/apt/sources.list

然后把阿里云或者中科大的源地址写入 sources.list 中,放置在 Dockerfile 同一目录下即可。

国内的源虽然加速,但是有时候不稳定,所以 build 的时候如果发现是源的问题,可以切换成另外的多次尝试。

注:不同的操作系统可能sources.list的路径不尽相同

Rails 环境配置

如果是直接以来基础的操作系统镜像构建 Rails 环境,可能会在多处遇到速度被干扰的问题。

1. 安装 rbenv

安装 rbenv,由于 github 速度不稳定,可能会导致出错,解决办法就是先将 git://github.com/sstephenson/rbenv.git 仓库clone 到本地,然后在 Dockerfile 中加入:

COPY rbenv /root/.rbenv

2. 使用 rbenv

rbenv 的源也基本上是没法使用的,可以使用 Rubychina 的加速镜像:

RUN git clone https://github.com/andorchen/rbenv-china-mirror.git /root/.rbenv/plugins/rbenv-china-mirror

当然如果发现 github clone 不了也可以先 clone 到本地再 COPY 的办法。

3. gem 源

gem 的源国内也是没法用的,可以使用淘宝的源,在执行 gem install 之前加上这句

gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/

PHP 环境配置

一般 php 环境还是需要安装一些扩展的,但是过程还是很曲折的。

1. memcached 扩展

目前 pecl 站还没有适配 php7 的 memcached 的安装包,所以只能自己手动从 github 上 clone 编译了,当然 memcached 扩展这么大的体量,想直接在 build 过程中从 github 上 clone 几乎是不可能的,解决办法还是 clone 到本地,然后 COPY 进去,或者如果有自己的 gitlab 仓库的话,可以在 gitlab 中创建一个项目,然后 import form github,这样以后就可以直接从自己的仓库中 clone, 相当于做了一个镜像。

2. pecl

像 redis,mongodb,imagick 这种扩展,是可以用 pecl 安装的,但是,还是不稳定,时不时的就报错某个扩展找不到,具体原因大家都清楚,应该是网络请求超时了。

解决办法就是把这些扩展的源代码下载到本地,COPY 到容器中,然后用 pear 安装。

# 注意这里的 path 指的是容器里面的 path
pear install /path/to/ext.tgz

注:pear 是 PHP 扩展的离线安装工具

3. composer 加速

在执行 composer update 的前面加上这句:

composer config -g repo.packagist composer https://packagist.phpcomposer.com 

以上所有问题的根源都来源于一个大家都知道的原因,总之解决办法就是:

  1. 找国内镜像

  2. 用梯子下载到本地,想办法离线安装

希望本文能为你的 Docker 之路提升幸福感。


Tairy
3.1k 声望404 粉丝

一介书生