Ubuntu 14.04 上使用 Docker 创建新的 Images

Xiaohui Wang · · 951 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Ubuntu 14.04 上使用 Docker 创建新的 Images

环境准备

Ubuntu 14.04.1 LTS 发布后,我欢快地去官网下载并创建了一个虚拟机,但是在在执行下面命令的时候:

sudo apt-get update

一直会遇到下面的错误

W: 无法下载 http://extras.ubuntu.com/ubuntu/dists/trusty/main/binary-amd64/Packages  Hash 校验和不符
W: 无法下载 http://extras.ubuntu.com/ubuntu/dists/trusty/main/binary-i386/Packages  Hash 校验和不符

Google 找解决方案,尝试了个遍,问题依旧。最让人不解的是 Ubuntu 官方源里面这个地址是存在的,里面的内容也是存在的,在浏览器中也可以访问但就是无法 Update。最后进行了如下尝试:

  • 将下面的内容添加入 /etc/resolv.conf,使用 Google 的 DNS 解析:
nameserver 8.8.8.8
nameserver 8.8.4.4	
  • 依次执行下面的命令:
sudo rm -rf /var/lib/apt/lists/*
sudo mkdir /var/lib/apt/lists/partial
sudo apt-get clean
sudo apt-get update

遗憾的是问题还是存在,而且由于使用的是官方源,速度很慢。换国内源吧,幸好 Ubuntu 的更新管理器可以检测当前网络环境中最快的第三方源,进行检测后,换成对我的网络来说最快的 yun-idc.com 的镜像。再次清理缓存并重新更新,然后。。。


重复地做相同的事情,但是却期待不一样的结果 ————爱因斯坦


结果还是一样的,就像更新速度快了些。虽然已经不影响正常安装软件和日常工作,但是想到上面那个 Warning 还是很郁闷。更关键的是,在使用 Dockerfile 来 Build 新的 Image 的时候,由于 Base Image 都是官方的干净系统,所以都需要 apt-get update 的步骤,上面提到的错误会导致这条命令返回 100 而不是 0,Docker 的 Build 过程也会因此中断,实在郁闷。

由于还是没有有效的解决方案,就想想 Workaround 吧。既然 extras.ubuntu 这个地址的包不一定用得上,那就暂时不更新这个地址了,之后如果需要可以通过添加 ppa 来解决。于是从 /etc/apt/sources.list 里面去掉 extras.ubuntu 地址相关的内容,再次更新终于没有错误了。

创建 Nginx 和 Python 镜像

基于上面提到的解决方案,我创建了两个 Dockerfiles,分别用来创建自己的 Nginx 和 Python 的开发环境镜像:

# Pull base image.
FROM dockerfile/ubuntu

# Patch the proper apt-get sources
ADD assert/sources.list /etc/apt/sources.list

# Install Nginx.
RUN \
  add-apt-repository -y ppa:nginx/stable && \
  apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 16126D3A3E5C1192 && \
  apt-get update && \
  apt-get install -y nginx && \
  rm -rf /var/lib/apt/lists/* && \
  chown -R www-data:www-data /var/lib/nginx

# Define mountable directories.
VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/conf.d", "/var/log/nginx"]

# Expose ports.
EXPOSE 80
# Pull base image.
FROM dockerfile/ubuntu

# Patch the proper apt-get sources
ADD assert/sources.list /etc/apt/sources.list

# Install Python Dev Env.
RUN \
  apt-get update && \
  apt-get install -y python python-dev python-virtualenv

# Expose ports.
EXPOSE 8080

这两个 repositories 和我在 Docker 的官方镜像库进行了关联:

都已经在 Docker registry Hub 中 build 成功。之所以选择 dockerfile/ubuntu 是由于其是官方提供的,而且预先安装了 Git,curl 等常用工具。

注意: 本文主要的目的是如何创建自己的 Docker Image,使用 ubuntu-nginx Image 创建的 Container 是无法运行在 daemon 模式下的。生产环境中的 Nginx 需要在 Docker 容器中使用 -d 选项运行,这样 Nginx 本身就不能运行在 daemon 状态,可以参考 Github 上的这个方案 进行部署。

-- EOF --

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: Ubuntu 14.04 上使用 Docker 创建新的 Images


有疑问加站长微信联系(非本文作者)

本文来自:Ross's Page

感谢作者:Xiaohui Wang

查看原文:Ubuntu 14.04 上使用 Docker 创建新的 Images

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

951 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传