Ubuntu 18.04 Docker安裝指南

前言

接著上回,要部署NextCloud服務,那么如何安裝這個服務呢?在Ubuntu 18.04下,根據官方文檔,我們可以使用Snap部署,也可以使用docker部署。(其實Snap更簡單...)
言歸正傳,Docker是一個非常方便的應用容器的引擎,相當于把應用的相關運行環境都打包成盒,直接部署,開箱即用,幾乎無需再進行配置,懶人必備。
這次我們選擇Docker部署,那么首先就需要安裝并配置Docker在我們的Ubuntu上。這次安裝的是Docker Communtiy也就是一般說的Docker CE(即社區免費版)。

  1. 安裝準備工作
    1.1 確認當前系統版本
    1.2 卸載舊版Docker
  2. 正式安裝
    2.1 使用Repository安裝
  3. 安裝后的相關配置
    3.1 令docker無需root權限
    3.2 令docker服務開機自動啟動
  4. 參考

注:本文主要參考自Docker官方文檔,英語好的可以直接看這個。


1. 安裝準備工作

1.1 確認當前系統版本

需要安裝Docker的話,你需要確認你的Ubuntu是64位的,并且是以下4個版本號其中之一:

  • Disco 19.04
  • Cosmic 18.10
  • Bionic 18.04(LTS)
  • Xenial 16.04(LTS)

如果你不知道自己的版本號,可以輸入:

lsb_release -c

通過上面的指令來查看Ubuntu的codename,看一下是否是上面4個版本號其中之一。
另外,Docker支持x86-64(amd64),armhf, arm64, s390x(IBM Z), ppc64le(IBM Power)硬件架構。通常我們遇到比較多都是X86芯片的機器。

1.2 卸載舊版Docker

舊版的Docker有很多叫法,有docker, docker.io, 或是docker-engine。為了確保安裝順利,我們應該先把這些老舊的docker卸載,輸入以下指令:

sudo apt-get remove docker docker-engine docker.io containerd runc

如果順利,那么會輸出none of these packages are installed。

2. 正式安裝

2.1 使用Repository安裝

第一種安裝方法是通過Repository安裝。我們需要先設置一個Repository軟件倉庫,然后我們從這樣一個倉庫來安裝或更新。(在官方文檔中另有兩種安裝方式:從.deb包文件安裝;從官方簡易腳本安裝,這里不做詳細介紹)
首先更新apt包管理器的源:

sudo apt-get update

然后通過設置apt來允許通過https傳輸的一個倉庫:(這里輸入了 \后,直接按下回車,會出現一個>符號,可以繼續進行下一行的輸入)

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

隨后我們添加Docker官方的GPG密鑰:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

然后我們輸入:

sudo apt-key fingerprint 0EBFCD88

來驗證密鑰是否正確,如果正確的話,應該是和下面這樣的輸出一致:

pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]

現在我們來設置repository,你需要輸入:

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

注意:如果你想要使用nightly或test版本(新穎卻不穩定)的版本,只需要在stable字段后面,增加nightlytest或者兩個都加進去。

好了,現在倉庫已經設置完畢了,我們可以通過它來安裝Docker了,再刷新一下apt的源:

sudo apt-get update

然后,如果需要安裝最新的docker的話,輸入下面的指令即可:

sudo apt-get install docker-ce docker-ce-cli containerd.io

現在你已經安裝完成docker了!

當然,用 apt安裝的是最新版,但是出于穩定考慮你可能需要某個具體版本,那么你可以通過

apt-cache madison docker-ce

獲取倉庫中的docker版本,你可能會收到以下提示:

docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
docker-ce | 18.06.1~ce~3-0~ubuntu       | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
docker-ce | 18.06.0~ce~3-0~ubuntu       | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
  ...

而后通過:

sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

其中 VERSION_STRING字段,輸入剛才通過中間的那部分,例如可以是5:18.09.1~3-0~ubuntu-xenial安裝具體某一個剛才列舉出的docker。


3. 安裝后的相關配置

安裝完成docker之后,我們還需要對它進行一定的配置,來方便我們后期的使用。

3.1 令docker無需root權限

Docker daemon(Docker守護進程,可以理解是整個Docker的后臺)是綁定了Unix Socket(Unix套接字,一種通訊方式),而不是TCP端口來進行通訊。而對于Unix Socket而言,它默認是屬于root用戶的,其他用戶要使用的話,必須在每句命令前加sudo,這樣的話Docker daemon就一直是運行在root用戶上了。
這樣比較麻煩,我們并不想每句命令都加sudo,再一遍遍地輸入密碼,那應該怎么辦呢?
根據前文,Unix Socket默認歸屬于root用戶,那么我們調整用戶就可以了。
換句話說,我們新建一個Unix用戶組,名叫docker(當然你可以叫它別的名字),然后在這個用戶組中,添加一個用戶,這樣使得daemon啟動的時候,使用的Unix Socket是屬于這個用戶的,而不是root,那么就不需要sudo了。

注:這樣的做法可能會引起安全問題,具體可參考Docker Daemon Attack Surface這篇文檔。

  1. 建立docker用戶組,并添加用戶:
sudo groupadd docker
sudo usermod -aG docker $USER
  1. 注銷你的賬戶,重新登陸,使得用戶組設置變動生效:
    若你使用的是虛擬機,那么你最好重啟虛擬機使得設置改動生效
    若你是用的桌面操作系統比如Linux某個發行版;MacOS;Windows等,完全注銷你的賬戶,然后再重新登陸使得設置改動生效。
    如果你用Linux,你也可以用這樣一條指令,來使得改動生效:
newgrp docker 
  1. 檢驗一下,是否無需sudo
docker run hello-world

這條指令就會下載一個測試docker用例,并且會提示各種測試的結果,如果提示結果正確,那么就配置正常!

3.2 令docker開機自動啟動

docker服務部署之后,我們通常想讓它進行自動化工作,隨著宿主機開機自動開啟這個服務。
在許多Linux發行版中,如RHEL, CentOS, Fedora, Ubuntu 16.04或更高版本,是使用systemd來管理哪個服務會開機自動啟動。需要注意的是,Ubuntu 14.10或更低版本是使用upstart的。
我這里用的是Ubuntu 18.04 LTS server,所以用systemd來完成添加:

sudo systemctl enable docker

如果你不要讓docker開機啟動,可以輸入:

sudo systemctl disable docker

這樣我們的docker服務就可以開機啟動,非常方便了。

至此,安裝后的配置操作就完成了。我們從docker的安裝,到簡單配置,現在,你可以開始使用它了。
還有許多其他安裝后操作,具體大家可以參考Post-installation steps for Linux


參考

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,436評論 2 378

推薦閱讀更多精彩內容

  • 一、Docker 簡介 Docker 兩個主要部件:Docker: 開源的容器虛擬化平臺Docker Hub: 用...
    R_X閱讀 4,405評論 0 27
  • 一 、什么是 Docker Docker 最初是 dotCloud 公司創始人 Solomon Hykes 在法國...
    Blazzer閱讀 3,156評論 0 13
  • 一、Python簡介和環境搭建以及pip的安裝 4課時實驗課主要內容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,795評論 0 10
  • 因研究需要,要使用Docker,參考官網上的安裝方法也遇到了不少坑,博主是個聰明人懶人...不想再次踩坑,于是記錄...
    He_Yu閱讀 8,402評論 0 5
  • 原本是想日更千字的小說,可是人總有倦怠的時候,今天才第四天,便已出現斷更的狀態。 在簡書上發文字不似別的文學網站,...
    肖興穎閱讀 118評論 0 0