9.3 Debian/Ubuntu

Debian和Ubuntu都是目前较为流行的Debian系的服务器操作系统,十分适合研发场景。Docker Hub上提供了官方镜像,国内各大容器云服务也基本都提供了相应的支持。

1.Debian系统简介及使用

Debian是由GPL和其他自由软件许可协议授权的自由软件组成的操作系统,由Debian Project组织维护。Debian计划是一个独立、分散的组织,由3000个志愿者组成,接受世界多个非盈利组织的资金支持,Software in the Public Interest提供支持并持有商标作为保护机构。Debian以其坚守Unix和自由软件的精神,以及给予用户的众多选择而闻名。现在Debian包括了超过25000个软件包并支持12个计算机系统结构。

9.3 Debian/Ubuntu - 图1

作为一个大的系统组织框架,Debian下面有多种不同操作系统核心的分支计划,主要为采用Linux核心的Debian GNU/Linux系统,其他还有采用GNU Hurd核心的Debian GNU/Hurd系统、采用FreeBSD核心的Debian GNU/kFreeBSD系统,以及采用NetBSD核心的Debian GNU/NetBSD系统,甚至还有利用Debian的系统架构和工具,采用OpenSolaris核心构建而成的Nexenta OS系统。在这些Debian系统中,以采用Linux核心的Debian GNU/Linux最为著名。

众多的Linux发行版,例如Ubuntu、Knoppix和Linspire及Xandros等,都基于Debian GNU/Linux。

可以使用docker search搜索Docker Hub,查找Debian镜像,结果如下所示:


  1. $ docker search debian
  2. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  3. debian Debian is... 1565 [OK]
  4. neurodebian NeuroDebian... 26 [OK]
  5. armbuild/debian port of debian 8 [OK]
  6. ...

官方提供了大家熟知的debian镜像以及面向科研领域的neurodebian镜像。

可以使用docker run直接运行debian镜像:


  1. $ docker run -it debian bash
  2. root@668e178d8d69:/# cat /etc/issue
  3. Debian GNU/Linux 8

debian镜像很适合作为基础镜像,用于构建自定义镜像。

2.Ubuntu系统简介及使用

Ubuntu是一个以桌面应用为主的GNU/Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词。Ubuntu意思是“人性”以及“我的存在是因为大家的存在”,是非洲的一种传统价值观。Ubuntu基于Debian发行版和GNOME/Unity桌面环境,与Debian的不同在于它每6个月会发布一个新版本,每2年会推出一个长期支持(Long Term Support,LTS)版本,一般支持3年。

9.3 Debian/Ubuntu - 图2

Ubuntu相关的镜像有很多,在Docker Hub上使用-s 10参数进行搜索,只搜索那些被收藏10次以上的镜像:


  1. $ docker search -s 10 ubuntu
  2. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  3. ubuntu Official Ubuntu base image 840 [OK]
  4. Dockerfile/ubuntu Trusted automated Ubuntu (http://www.ubunt... 30 [OK]
  5. crashsystems/gitlab-docker A trusted, regularly updated build of GitL... 20 [OK]
  6. sylvainlasnier/memcached This is a Memcached 1.4.14 docker images b... 16 [OK]
  7. ubuntu-upstart Upstart is an event-based replacement for ... 16 [OK]
  8. mbentley/ubuntu-django-uwsgi-nginx 16 [OK]
  9. ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 15 [OK]
  10. clue/ttrss The Tiny Tiny RSS feed reader allows you t... 14 [OK]
  11. Dockerfile/ubuntu-desktop Trusted automated Ubuntu Desktop (LXDE) (h... 14 [OK]
  12. tutum/ubuntu Ubuntu image with SSH access. For the root... 12 [OK]

注意,Docker 1.12版本中已经不支持—stars参数了,可以使用-f stars=N参数。

根据搜索出来的结果,读者可以自行选择下载镜像并使用。

下面以Ubuntu 14.04为例,演示如何使用该镜像安装一些常用软件。

首先使用-ti参数启动容器,登录bash,查看ubuntu的发行版本号:


  1. $ docker run -ti ubuntu:14.04 /bin/bash
  2. root@7d93de07bf76:/# lsb_release -a
  3. No LSB modules are available.
  4. Distributor ID: Ubuntu
  5. Description: Ubuntu 14.04.1 LTS
  6. Release: 14.04
  7. Codename: trusty

当试图直接使用apt-get安装一个软件的时候,会提示E:Unable to locate package:


  1. root@7d93de07bf76:/# apt-get install curl
  2. Reading package lists... Done
  3. Building dependency tree
  4. Reading state information... Done
  5. E: Unable to locate package curl

这并非系统不支持apt-get命令。Docker镜像在制作时为了精简清除了apt仓库信息,因此需要先执行apt-get update命令来更新仓库信息。更新信息后即可成功通过apt-get命令来安装软件:


  1. root@7d93de07bf76:/# apt-get update

安装curl工具:


  1. root@7d93de07bf76:/# apt-get install curl -y
  2. Reading package lists... Done
  3. Building dependency tree
  4. Reading state information... Done
  5. ...
  6. root@7d93de07bf76:/# curl
  7. curl: try 'curl --help' or 'curl --manual' for more information

接下来,再安装apache服务:


  1. root@7d93de07bf76:/# apt-get install -y apache2

启动这个apache服务,然后使用curl来测试本地访问:


  1. root@7d93de07bf76:/# service apache2 start

配合使用-p参数对外映射服务端口,可以允许外来容器访问该服务。