1. 程式人生 > >第2章 Docker核心概念與安裝--2.2 Linux 各發行版核心升級與Docker 安裝

第2章 Docker核心概念與安裝--2.2 Linux 各發行版核心升級與Docker 安裝

Docker 支援在主流的作業系統平臺上使用,包括Ubuntu、Centos、Windows以及MacOS系統等。當然,在Linux系列平臺上是原生支援,使用體驗也是最好。

官方網站上有各種環境下的 安裝指南,這裡主要介紹下 Ubuntu、Debian 和CentOS 系列的安裝。

Ubuntu、Debian 、CentOS系列安裝 Docker

系統要求

Docker 支援以下版本的 Ubuntu 和 Debian 作業系統:

  • Ubuntu Xenial 16.04 (LTS)
  • Ubuntu Trusty 14.04 (LTS)
  • Ubuntu Precise 12.04 (LTS)
  • Debian testing stretch (64-bit)
  • Debian 8 Jessie (64-bit)
  • Debian 7 Wheezy (64-bit)(必須啟用 backports)
  • CentOS 6 及更高的版本CentOS 7

Ubuntu 發行版中,LTS(Long-Term-Support)長期支援版本,會獲得 5 年的升級維護支援,這樣的版本會更穩定,因此在生產環境中推薦使用 LTS 版本。

Docker 目前支援的 Ubuntu 版本最低為 12.04 LTS,但從穩定性上考慮,推薦使用14.04 LTS 或更高的版本。

Docker 需要安裝在 64 位的 x86 平臺或 ARM 平臺上(如樹莓派),並且要求核心版本不低於 3.10。但實際上核心越新越好,過低的核心版本可能會出現部分功能無法使用,或者不穩定。

使用者可以通過如下命令檢查自己的核心版本詳細資訊:

$ uname -a 
Linux centos 3.10.0-693.21.1.el7.x86_64 #1 SMP Wed Mar 7 19:03:37 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

升級核心

如果核心版本過低,可以用下面的命令升級系統核心。這塊廢話有點多,不需要升級核心的直接跳過:)

Ubuntu 12.04 LTS

sudo apt-get install -y --install-recommends linux-generic-lts-trusty

Ubuntu 14.04 LTS

sudo apt-get install -y --install-recommends linux-generic-lts-xenial

CentOS 7

更新:

$ yum -y update

啟用ELRepo  倉庫:

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

倉庫啟用後,你可以使用下面的命令列出可用的核心相關包:

# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

安裝最新核心:

# yum --enablerepo=elrepo-kernel install kernel-ml

--enablerepo 選項開啟 CentOS 系統上的指定倉庫。預設開啟的是 elrepo,這裡用 elrepo-kernel替換。

最後,重啟機器並應用最新核心,接著執行下面的命令檢查最新核心版本:

$ uname -sr

為了讓新安裝的核心成為預設啟動選項,你需要如下修改 GRUB 配置:

開啟並編輯 /etc/default/grub 並設定 GRUB_DEFAULT=0。意思是 GRUB 初始化頁面的第一個核心將作為預設核心。

GRUB_TIMEOUT=5
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

接下來執行下面的命令來重新建立核心配置。

# grub2-mkconfig -o /boot/grub2/grub.cfg

重啟並驗證最新的核心已作為預設核心。

Debian 7 Wheezy

Debian 7 的核心預設為 3.2,為了滿足 Docker 的需求,應該安裝  backports  的核心。
執行下面的命令新增  backports  源:

$ echo "deb http://http.debian.net/debian wheezy-backports main" | sudo tee /etc/apt/sources.list.d/backports.list

升級到  backports  核心:

$ sudo apt-get update
$ sudo apt-get -t wheezy-backports install linux-image-amd64

Debian 8 Jessie

Debian 8 的核心預設為 3.16,滿足基本的 Docker 執行條件。但是如果打算使用 overlay2  儲存層驅動,或某些功能不夠穩定希望升級到較新版本的核心,可以新增  backports  源,升級到新版本的核心。
執行下面的命令新增  backports  源:

$ echo "deb http://http.debian.net/debian jessie-backports main" | sudo tee /etc/apt/sources.list.d/backports.list

升級到  backports  核心:

$ sudo apt-get update
$ sudo apt-get -t jessie-backports install linux-image-amd64

需要注意的是,升級到  backports  的核心之後,會因為  AUFS  核心模組不可用,而使用預設的  devicemapper  驅動,並且配置為  loop-lvm  ,這是不推薦的。因此,不要忘記安裝 Docker 後,配置  overlay2  儲存層驅動。

配置 GRUB 引導引數
在 Docker 使用期間,或者在  docker info  資訊中,可能會看到下面的警告資訊:

WARNING: Your kernel does not support cgroup swap limit. WARNING:
Your kernel does not support swap limit capabilities. Limitation disc arded.

或者

WARNING: No memory limit support
WARNING: No swap limit support
WARNING: No oom kill disable support

如果需要這些功能,就需要修改 GRUB 的配置檔案  /etc/default/grub  ,在GRUB_CMDLINE_LINUX  中新增核心引導引數 cgroup_enable=memory
swapaccount=1  。
然後不要忘記了更新 GRUB:

$ sudo update-grub
$ sudo reboot

安裝 Docker

Ubuntu

  • Ubuntu 14.04 及以上版本

Ubuntu 14.04 版本官方軟體源中已經自帶了 Docker 安裝包,可以直接安裝:

$ sudo apt-get update
$ sudo apt-get install -y docker.io
$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
$ sudo sed -i '$ acomplete -F _docker docker' /etc/bash_completion.d/docker.io

以上流程使用Ubuntu 14.04系統預設自帶 docker.io 安裝包安裝docker ,顯然安裝的Docker版本相對交舊。

顯然,有另一種方式:

$ sudo apt-get install docker-engine

如果系統中存在舊版本的 Docker ( lxc-docker  ,  docker.io  ),會提示是否先刪除,選擇是即可。這種方式適用於 Debian 系統安裝Docker。

  • Ubuntu 14.04 以下的版本

若果使用較低版本的Ubuntu系統,則需要先進行核心升級並重啟系統後再進行安裝。

$ sudo apt-get update
$ sudo apt-get install -y linux-image-generic-lts-raring linux-headers-generic-lts-raring
$ sudo reboot

重啟後,重複在Ubuntu 14.04系統的安裝步驟即可。就是上述的另一種方式。

CentOS

Docker 支援CentOS 6 及以後的版本。

對於CentOS 6 系統使用 EPEL 庫安裝Docker ,命令如下:

   首先關閉selinux:

# setenforce 0

# sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config

在Fedora EPEL源中已經提供了docker-io包,下載安裝epel :

$ sudo rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm

$ sudo sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum.repos.d/epel.repo

yum安裝docker-io:

$ sudo yum -y install docker-io

對於 CentOS 7 系統,由於 CentOS-Extras 源中已內建Docker,我們可以直接使用 yum 命令進行安裝:

$ sudo yum install -y docker

目前在 CentOS 系統中更新Docker 軟體有兩種方法,一是自行通過原始碼編譯安裝,二是下載二進位制檔案進行更新。

其他安裝方式

指令碼安裝

Docker 官方為了簡化安裝流程,提供了一套安裝指令碼,Ubuntu 和 Debian 系統可以使用這套指令碼安裝:

$ sudo curl -sSL https://get.docker.com/ | sh

國內使用的話,可能被牆,連線超時...,在國內可以使用修改的指令碼:

阿里雲的安裝指令碼

$ sudo curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

DaoCloud 的安裝指令碼

$ sudo curl -sSL https://get.daocloud.io/docker | sh

手動安裝

這部分以後有時間再弄吧。。。也是找文件來部署。

後文中使用 $ 作為終端引導符時,表示非 root 許可權使用者;# 表示是 root 使用者。

另外,Windows 和MacOS系統的Docker 安裝不更了。。。因為本人主要是在CentOS 7 上進行docker 操作的。

啟動 Docker 引擎

Ubuntu 12.04/14.04、Debian 7 Wheezy、CentOS 6

$ sudo service docker start

Ubuntu 16.04、Debian 8 Jessie/Stretch、CnetOS 7

$ sudo systemctl enable docker
$ sudo systemctl start docker

建立 docker 使用者組

預設情況下, docker  命令會使用 Unix socket 與 Docker 引擎通訊。而只有 root  使用者和  docker  組的使用者才可以訪問 Docker 引擎的 Unix socket。出於安全考慮,一般 Linux 系統上不會直接使用  root  使用者。因此,更好地做法是將需要使用  docker  的使用者加入  docker  使用者組。

建立  docker  組:

$ sudo groupadd docker

將當前使用者加入  docker  組:

$ sudo usermod -aG docker $USER

參考文件

相關推薦

2 Docker核心概念安裝--2.2 Linux 發行核心升級Docker 安裝

Docker 支援在主流的作業系統平臺上使用,包括Ubuntu、Centos、Windows以及MacOS系統等。當然,在Linux系列平臺上是原生支援,使用體驗也是最好。 官方網站上有各種環境下的 安裝指南,這裡主要介紹下 Ubuntu、Debian 和CentOS 系列

Java程式設計題解上機指導( Java語言的高階特性 7.2藉助泛型定義一個線性表

線性表:由相同型別的物件組成的一個線性結構360百科: 定義 線性表(linear list)是資料結構的一種,一個線性表是n個具有相同特性的資料元素的有限序列。資料元素是一個抽象的符號,其具體含義在不同的情況下一般不同。 在稍複雜的線性表中,一個數據元素可由多個數據項(

6-2 鄰接表儲存圖的廣度優先遍歷 (20 分)--圖--基本概念-計算機17級

6-2 鄰接表儲存圖的廣度優先遍歷 (20 分) 試實現鄰接表儲存圖的廣度優先遍歷。 函式介面定義: void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) ); 其中LGraph是鄰接表儲存的圖,定

1 分散式系統概念ZooKeeper簡介

分散式系統概念與ZooKeeper簡介 1-1 zookeeper簡介 1-2 什麼是分散式系統 1-3 分散式系統的瓶頸以及zk的相關特性 1-1 zookeeper簡介 1-2 什麼是分散式系統

易學筆記-系統分析師考試-4 資料通訊和計算機網路/4.2 網路體系結構協議/4.2.2 常見的網路協議

易學筆記 十年IT經驗個人學習筆記分享: 開發語言:C/C++/JAVA/PYTHON/GO/JSP WEB架構:Servlets/springMVC/springBoot/springClound 容器架構:Docker容器/Docker叢集/Docker與微服務整合/

:基本概念

npr bject 字面量 enume 不能 數據 開頭 clas int() 語法 借鑒了C語言以及類C語言(如java,perl)的語法 區分大小寫 標記符 字母數字下劃線$ 開頭不為數字 嚴格模式 use strict; 語句以分號結尾 關鍵

Learning Spark中文版----Spark高級編程(2

做的 sin exchange lds 距離 應用 learning unix 調整 Working on a Per-Partition Basis(基於分區的操作) 以每個分區為基礎處理數據使我們可以避免為每個數據項重做配置工作。如打開數據庫連接或者創建隨機數生成器這樣

--圖--基本概念 選擇題

2-1 若無向圖G =(V,E)中含10個頂點,要保證圖G在任何情況下都是連通的,則需要的邊數最少是: (3分) 45 37 36 9 答案:2. 2-2

6-1 鄰接矩陣儲存圖的深度優先遍歷 (20 分) --圖--基本概念-計算機17級

6-1 鄰接矩陣儲存圖的深度優先遍歷 (20 分) 試實現鄰接矩陣儲存圖的深度優先遍歷。 函式介面定義: void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) ); 其中MGraph是鄰接矩陣儲存的圖

3 Pandas資料處理(3.1-3.2)_Python資料科學手冊學習筆記

第2章介紹的NumPy和它的ndarray物件. 為多維陣列提供了高效的儲存和處理方法. Pandas是在NumPy的基礎上建立的新程式庫, 提供DataFrame資料結構. DataFrame帶行標籤(索引),列標籤(變數名),支援相同資料型別和缺失值的多維陣

JavaScript基本概念

2.1 <script>元素 該元素是雙標籤, 在HTML中不能省略結束標籤 如果使用src引入外部js檔案, 則標籤內的js程式碼會被忽略如果使用src引入外部js檔案, 則標籤內的js程式碼會被忽略 3.4 資料型別 3.4.2 undefi

Controller介面控制器詳解(2

4.5、ServletForwardingController 將接收到的請求轉發到一個命名的servlet,具體示例如下:   java程式碼: Java程式碼  

6-1 鄰接矩陣儲存圖的深度優先遍歷 (20 分) --圖--基本概念-計算機17級

6-1 鄰接矩陣儲存圖的深度優先遍歷 (20 分) 試實現鄰接矩陣儲存圖的深度優先遍歷。 函式介面定義: void DFS( MGraph Graph, Vertex V, void (*Visi

Linux系統程式設計手冊讀書筆記——3 系統程式設計概念

系統呼叫 系統呼叫使處理器從使用者態切換到核心態 每個系統呼叫都有一個唯一的數字來標識 系統呼叫流程: 引數入棧,傳入外殼函式,外殼函式將引數置入特定暫存器(包括系統呼叫編號),執行中斷指定。核心響應中斷指令,呼叫system_call()里程處

《火球——UML大戰需求分析》(2 耗盡腦汁的需求分析工作)——2.4 UML助力需求分析

第2章 耗盡腦汁的需求分析工作 摘要:怎麼又變了?當初就應該讓客戶書面簽字確認!你可能會經常發這樣的牢騷,可是就算客戶書面確認,客戶還是會“賴賬”的!軟體專案的其中一項不變真理:人是會死的,需求是會變的!本章將會和你一起來體驗軟體需求分析工作的風風雨雨,找出需求分析工作的

Java習題3-3(彩票中獎2

 LotteryNumber.java /* * To change this template, choose Tools | Templates * and open the templa

《Java從入門到失業》:類和物件(4.2):String類

4.2String類        這一節,我們學習第一個類:String類。String翻譯成漢語就是“字串”,是字元的序列。我們知道,在Java中,預設採用Unicode字符集,因此字串就是Unicode字元的序列。例如字

Knative 核心概念介紹:Build、Serving 和 Eventing 三大核心元件

Knative 主要由 Build、Serving 和 Eventing 三大核心元件構成。Knative 正是依靠這三個核心元件

Linux發行CentOS系列系統的安裝過程

CentOS系列系統安裝步驟Linux系統CentOS發行版的安裝流程: 內核空間的引導啟動過程:POST(加電自檢) --> BootSequence(BIOS) 【MBR引導,順序啟動階段BootSequence】--> BootLoader(GRUB(stage1--stage1_5--st

計算機的組成及其功能、linux發行版本之間的聯絡區別

一、計算機的組成及其功能 計算機由運算器,控制器,儲存器,輸入裝置和輸出裝置五大部件組成計算機,每一部件分別按要求執行特定的基本功能。 (1)運算器或稱算術邏輯單元(Arithmetical and Logical Unit) 運算器的主要功能是對資料進行各種運算。這些運算除了常規的加、