Docker運行操作系統環境(BusyBox&Alpine&Debian/Ubuntu&CentOS/Fedora)


目前常用的Linux發行版主要包括Debian/Ubuntu系列和CentOS/Fedora系列。前者以自帶軟件包版本較新而出名;后者則宣稱運行更穩定一些。選擇哪個操作系統取決於讀者的具體需求。同時,社區還推出了完全基於Docker的Linux發行版CoreOS。

使用Docker,只需要一個命令就能快速獲取一個Linux發行版鏡像,這是以往包括各種虛擬化技術都難以實現的。這些鏡像一般都很精簡,但是可以支持完整Linux系統的大部分功能。

BusyBox

BusyBox是一個集成了一百多個最常用Linux命令和工具(如cat、echo、grep、mount、telnet等)的精簡工具箱,它只有幾MB的大小,很方便進行各種快速驗證,被譽為“Linux系統的瑞士軍刀”。BusyBox可運行於多款POSIX環境的操作系統中,如Linux(包括Android)、Hurd、FreeBSD等。

在Docker Hub中搜索busybox相關的鏡像:

$ docker search busybox

NAME                 DESCRIPTION                       STARS    OFFICIAL  AUTOMATED

busybox              Busybox base image.             755        [OK]

...

讀者可以看到最受歡迎的鏡像。帶有OFFICIAL標記說明是官方鏡像。

$ docker pull busybox:latest

下載后,可以看到busybox鏡像只有2.433MB:

啟動一個busybox容器,並在容器內查看掛載信息,如下所示:

busybox鏡像雖然小巧,但包括了大量常見的Linux命令,可以用它快速熟悉Linux命令。

Alpine

Alpine操作系統是一個面向安全的輕型Linux發行版。它不同於通常的Linux發行版,Alpine采用了musl libc和BusyBox以減小系統的體積和運行時資源消耗,但功能上比BusyBox又完善得多。在保持瘦身的同時,Alpine還提供了自己的包管理工具apk,可以通過https://pkgs.alpinelinux.org/packages查詢包信息,也可以通過apk命令直接查詢和安裝各種軟件。

Alpine Docker鏡像也繼承了Alpine Linux發行版的這些優勢。相比於其他Docker鏡像,它的容量非常小,僅僅只有5MB左右(Ubuntu系列鏡像接近200MB),且擁有非常友好的包管理機制。官方鏡像來自docker-alpine項目。

目前Docker官方已開始推薦使用Alpine替代之前的Ubuntu作為基礎鏡像環境。這樣會帶來多個好處,包括鏡像下載速度加快,鏡像安全性提高,主機之間的切換更方便,占用更少磁盤空間等。

1.使用官方鏡像

由於鏡像很小,下載時間往往很短,可以使用docker run指令直接運行一個alpine容器,並指定運行的Linux指令,例如:

$ docker run alpine echo '123'

使用time工具測試在本地沒有提前pull鏡像的情況下,執行echo命令的時間,僅需要3秒左右。

$ time docker run alpine echo '123'

Unable to find image 'alpine:latest' locally latest:
Pulling from library/alpine
e110a4a17941: Pull completeDigest: sha256:3dcdb92d7432d56604d4545cbd324b14e647b
313626d99b889d0626de158f73aStatus: Downloaded newer image for alpine:latest123
real 0m3.367s user 0m0.040s sys 0m0.007s

2.遷移至Alpine基礎鏡像

目前,大部分Docker官方鏡像都已經支持Alpine作為基礎鏡像,因此可以很容易地進行遷移。

例如:

ubuntu/debian -> alpine

python:2.7 -> python:2.7-alpine

ruby:2.3 -> ruby:2.3-alpine

另外,如果使用Alpine鏡像替換Ubuntu基礎鏡像,安裝軟件包時需要用apk包管理器替換apt工具,如  $ apk add --no-cache

Alpine中軟件安裝包的名字可能會與其他發行版有所不同,可以在https://pkgs.alpinelinux.org/packages網站搜索並確定安裝包的名稱。如果需要的安裝包不在主索引內,但是在測試或社區索引中,那么可以按照以下方法使用這些安裝包:

echo "http://dl-4.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories

$ apk --update add --no-cache

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個計算機系統結構。

作為一個大的系統組織框架,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鏡像,結果如下所示:

$ docker search debian

NAME         DESCRIPTION    STARS     OFFICIAL   AUTOMATED

debian        Debian is...        1565      [OK]

...

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

可以使用docker run直接運行debian鏡像:

$ docker run -it debian bash

root@668e178d8d69:/# cat /etc/issue

Debian GNU/Linux 8

debian鏡像很適合作為基礎鏡像,用於構建自定義鏡像。

2.Ubuntu系統簡介及使用

Ubuntu是一個以桌面應用為主的GNU/Linux操作系統,其名稱來自非洲南部祖魯語或豪薩語的“ubuntu”一詞。Ubuntu意思是“人性”以及“我的存在是因為大家的存在”,是非洲的一種傳統價值觀。Ubuntu基於Debian發行版和GNOME/Unity桌面環境,與Debian的不同在於它每6個月會發布一個新版本,每2年會推出一個長期支持(Long Term Support,LTS)版本,一般支持3年。

Ubuntu相關的鏡像有很多,在Docker Hub上使用-s 10參數進行搜索,只搜索那些被收藏10次以上的鏡像:

$ docker search -s 10 ubuntu

NAME                         DESCRIPTION              STARS           OFFICIAL  AUTOMATED

ubuntu                       Official Ubuntu base image                    840    [OK]

Dockerfile/ubuntu            Trusted automated Ubuntu (http://www.ubunt...   30    [OK]

crashsystems/gitlab-docker   A trusted, regularly updated build of GitL...  20    [OK]

注意,Docker 1.12版本中已經不支持--stars參數了,可以使用-f stars=N參數。

下面以Ubuntu 14.04為例,演示如何使用該鏡像安裝一些常用軟件

首先使用-it參數啟動容器,登錄bash,查看ubuntu的發行版本號:

$ docker run -it ubuntu:14.04 /bin/bash

root@7d93de07bf76:/# lsb_release -a

No LSB modules are available.

Distributor ID: Ubuntu

Description:    Ubuntu 14.04.1 LTS

Release:        14.04

Codename:       trusty

當試圖直接使用apt-get安裝一個軟件的時候,會提示E:Unable to locate package:

root@7d93de07bf76:/# apt-get install curl

Reading package lists... Done

Building dependency tree

Reading state information... Done

E: Unable to locate package curl

這並非系統不支持apt-get命令。Docker鏡像在制作時為了精簡清除了apt倉庫信息,因此需要先執行apt-get update命令來更新倉庫信息。更新信息后即可成功通過apt-get命令來安裝軟件:

root@7d93de07bf76:/# apt-get update

安裝curl工具:

root@7d93de07bf76:/# apt-get install curl -y

Reading package lists... Done

Building dependency tree

Reading state information... Done

...

root@7d93de07bf76:/# curl

curl: try 'curl --help' or 'curl --manual' for more information

接下來,再安裝apache服務:

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

啟動這個apache服務,然后使用curl來測試本地訪問:

root@7d93de07bf76:/# service apache2 start

配合使用-p參數對外映射服務端口,可以允許外來容器訪問該服務。

CentOS/Fedora

1.CentOS系統簡介及使用

CentOS和Fedora都是基於Redhat的常見Linux分支。CentOS是目前企業級服務器的常用操作系統;Fedora則主要面向個人桌面用戶。

CentOS(Community Enterprise Operating System,社區企業操作系統)是基於Red Hat Enterprise Linux源代碼編譯而成的。由於CentOS與Redhat Linux源於相同的代碼基礎,所以很多成本敏感且需要高穩定性的公司就使用CentOS來替代商業版Red Hat Enterprise Linux。CentOS自身不包含閉源軟件。

在Docker Hub上使用docker search命令來搜索標星至少為25的CentOS相關鏡像,如下所示:

$ docker search -f stars=25 centos

NAME      DESCRIPTION      STARS     OFFICIAL   AUTOMATED

centos    The official...  2543      [OK]

jdeathe/centos-ssh         27        [OK]

使用docker run直接運行最新的CentOS鏡像,並登錄bash:

$ docker run -it centos bash

[root@43eb3b194d48 /]# cat /etc/redhat-release

CentOS Linux release 7.2.1511 (Core)

2.Fedora系統簡介及使用

Fedora是由Fedora Project社區開發,紅帽公司贊助的Linux發行版。它的目標是創建一套新穎、多功能並且自由和開源的操作系統。對用戶而言,Fedora是一套功能完備的、可以更新的免費操作系統,而對贊助商Red Hat而言,它是許多新技術的測試平台,被認為可用的技術最終會加入到Red Hat Enterprise Linux中。

在Docker Hub上使用docker search命令來搜索標星至少為2的Fedora相關鏡像,結果如下:

$ docker search -f stars=2 fedora

NAME                    DESCRIPTION                           STARS  OFFICIALAUTOMATED

fedora                  Official Docker builds of Fedora    433     [OK]

使用docker run命令直接運行Fedora官方鏡像,並登錄bash:

$ docker run -it fedora bash

[root@196ca341419b /]# cat /etc/redhat-release

Fedora release 24 (Twenty Four)

 

總結意見

在Docker Hub上還有許多第三方組織或個人上傳的Docker鏡像。可以根據具體情況來選擇。一般來說注意如下幾點:

  1. 官方鏡像體積都比較小,只帶有一些基本的組件。精簡的系統有利於安全、穩定和高效運行,也適合進行定制。
  2. 個別第三方鏡像(如tutum,已被Docker收購)質量也非常高。這些鏡像通常針對某個具體應用進行配置,比如,包含LAMP組件的Ubuntu鏡像。
  3. 出於安全考慮,幾乎所有官方制作的鏡像都沒有安裝SSH服務,無法使用用戶名和密碼直接登錄

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM