Ubuntu 14.04 上使用 Docker 建立新的 Images

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

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.8nameserver 8.8.4.4
  • 依次執行下面的命令:
sudo rm -rf /var/lib/apt/lists/*sudo mkdir /var/lib/apt/lists/partialsudo apt-get cleansudo 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 的開發環境鏡像:

  • xhrwang/ubuntu-nginx
# Pull base image.FROM dockerfile/ubuntu# Patch the proper apt-get sourcesADD 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
  • xhrwang/ubuntu-python
# Pull base image.FROM dockerfile/ubuntu# Patch the proper apt-get sourcesADD 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 的官方鏡像庫進行了關聯:

  • ubuntu-nginx
  • ubuntu-python

都已經在 Docker registry Hub 中 build 成功。之所以選擇 dockerfile/ubuntu 是由於其是官方提供的,而且預先安裝了 Git,curl 等常用工具。

注意: 本文主要的目的是如何建立自己的 Docker Image,使用 ubuntu-nginx Image 建立的 Container 是無法運行在 daemon 模式下的。生產環境中的 Nginx 需要在 Docker 容器中使用 -d 選項運行,這樣 Nginx 本身就不能運行在 daemon 狀態,可以參考 Github 上的這個方案 進行部署。

-- EOF --

  • 基於 Flask 實現 RESTful API→
  • ← Ubuntu 14.04 系統基於 Gunicorn 和 Nginx 部署 Flask 應用

聲明: 本文採用 BY-NC-SA 協議進行授權. 轉載請註明轉自: Ubuntu 14.04 上使用 Docker 建立新的 Images

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.