资讯专栏INFORMATION COLUMN

Docker 实践(七):提升幸福感

qingshanli1988 / 2026人阅读

摘要:对程序员来说,阻碍幸福感最大的因素应该是那个伟大的墙了。所幸国内有或者阿里云这样的云服务商提供镜像加速服务,可直接搜索镜像加速,添加这些服务商提供的地址即可。

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

本文对 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 

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

找国内镜像

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

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

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

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

相关文章

  • Docker 实践系列文章

    摘要:使用有一段时间了,打算把自己实践过程中的一些理解和感悟记录下来。目录实践一了解架构实践二使用教程实践三下构建开发环境实践四环境容器化实践五生产环境容器化实践六容器监控实践七提升幸福感实践八构建开发环境实践九生产环境优化参考源码分析系列文章 使用 docker 有一段时间了,打算把自己实践过程中的一些理解和感悟记录下来。 系列文章发布在 SegmentFault 上我的专栏 Tairy,...

    VincentFF 评论0 收藏0
  • Docker 实践(五):生产环境容器化

    摘要:不要用百度搜索中文资料,一定要看最新的英文资料。感谢感谢能容忍我无数次搞挂生产环境的老板。群蜗牛大神所建中文交流群,基本配置过程中遇到的问题都能得到解决。 前言 最近花了将近一个月的时间研究了 Docker 在生产环境中的使用,作为新手,期间走了无数的弯路,这里纪录一下,希望给别人带来微小的帮助。 前面几部分,介绍了在搭建集群之前需要做的一些工作,后面 一块结合实际应用,介绍如何架构...

    sydMobile 评论0 收藏0
  • React开发中提升幸福度的一些小技巧

    摘要:又一篇来自日常开发的汇总各位客官请对号入席,店小二逐一上菜。解决方案有很多种,例如把字符串数组等重组对象数组,每个元素设置一个唯一等。另外有个方式推荐使用生成唯一的数组,和数据数组一起使用,省去提交数据时再重组数组。 又一篇来自日常开发的汇总:各位客官请对号入席,店小二逐一上菜。 第一道菜:回锅肉 react数组循环,基本都会设置一个唯一的key,表格的对象数组循环一般没什么问题,数据...

    smartlion 评论0 收藏0
  • 2018 小回顾

    摘要:不过今儿与往年不同的是昨晚突然发高烧,今儿都没能去上班,感谢我的小可爱在照顾我。尤其要感谢小可爱,给了我很多支持。在这一年里小可爱的厨艺越来越棒,美滋滋,嘿嘿。 年底了,惯例做个小回顾,对这一年做个总结,也对下一年大致做个规划。 不过今儿与往年不同的是昨晚突然发高烧,今儿都没能去上班,感谢我的小可爱在照顾我。这篇文章也是躺在床上用手机编辑的。 还是按照惯例从工作,生活两方面来说。先聊聊...

    BaronZhang 评论0 收藏0
  • 2018 小回顾

    摘要:不过今儿与往年不同的是昨晚突然发高烧,今儿都没能去上班,感谢我的小可爱在照顾我。尤其要感谢小可爱,给了我很多支持。在这一年里小可爱的厨艺越来越棒,美滋滋,嘿嘿。 年底了,惯例做个小回顾,对这一年做个总结,也对下一年大致做个规划。 不过今儿与往年不同的是昨晚突然发高烧,今儿都没能去上班,感谢我的小可爱在照顾我。这篇文章也是躺在床上用手机编辑的。 还是按照惯例从工作,生活两方面来说。先聊聊...

    HelKyle 评论0 收藏0

发表评论

0条评论

qingshanli1988

|高级讲师

TA的文章

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