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阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容

  • 一、Docker 简介 Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用...
    R_X阅读 4,370评论 0 27
  • 一 、什么是 Docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国...
    Blazzer阅读 3,124评论 0 13
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,689评论 0 10
  • 因研究需要,要使用Docker,参考官网上的安装方法也遇到了不少坑,博主是个聪明人懒人...不想再次踩坑,于是记录...
    He_Yu阅读 8,328评论 0 5
  • 原本是想日更千字的小说,可是人总有倦怠的时候,今天才第四天,便已出现断更的状态。 在简书上发文字不似别的文学网站,...
    肖兴颖阅读 108评论 0 0