《第一本Docker书(修订版)》——2.2 在Ubuntu和Debian中安装Docker

简介: 这并不意味着上面清单之外的Ubuntu(或Debian)版本就不能安装Docker。只要有适当的内核和Docker所必需的支持,其他版本的Ubuntu也是可以安装Docker的,只不过这些版本并没有得到官方支持,因此,遇到的bug可能无法得到官方的修复。

本节书摘来自异步社区《第一本Docker书(修订版)》一书中的第2章,第2.2节,作者:【澳】James Turnbull(詹姆斯•特恩布尔)著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.2 在Ubuntu和Debian中安装Docker

目前,官方支持在以下版本的Ubuntu和Debian中安装Docker:

Ubuntu Wily 15.10(64位);
Ubuntu Vivid 15.04(64位);
Ubuntu Trusty 14.04(LTS)(64位);
Ubuntu Precise 12.04(LTS)(64位);
Ubuntu Raring 13.04(64位);
Ubuntu Saucy 13.10(64位);
Debian 8.0 Jessie(64位);
Debian 7.7 Wheezy(64位)。
注意
这并不意味着上面清单之外的Ubuntu(或Debian)版本就不能安装Docker。只要有适当的内核和Docker所必需的支持,其他版本的Ubuntu也是可以安装Docker的,只不过这些版本并没有得到官方支持,因此,遇到的bug可能无法得到官方的修复。
安装之前,还要先确认一下已经安装了Docker所需的前提条件。我创建了一个要安装Docker的全新Ubuntu 14.04 LTS 64位宿主机,称之为darknight.example.com。
2.2.1 检查前提条件
在Ubuntu宿主机中安装并运行Docker所需的前提条件并不多,下面一一列出。

1.内核
首先,确认已经安装了能满足要求的Linux内核。可以通过uname命令来检查内核版本信息,如代码清单2-1所示。

代码清单2-1 检查Ubuntu内核的版本

$ uname -a
Linux darknight.example.com 3.13.0-43-generic #72-Ubuntu SMP Mon Dec
8 19:35:06 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

可以看到,这里安装的是3.13.0 x86_64版本的内核。这是Ubuntu 14.04及更高版本默认的内核。

如果使用Ubuntu较早的发行版,可以有一个较早的内核。应该可以轻松地用apt-get把Ubuntu升级到最新的内核,如代码清单2-2所示。

代码清单2-2 在Ubuntu Precise中安装3.13内核

$ sudo apt-get update
$ sudo apt-get install linux-headers-3.13.0-43-generic
  linux-image-3.13.0-43-generic linux-headers-3.13.0-43

注意
本书中的所有操作都使用sudo来获取所需的root权限。
然后,就可以更新Grub启动加载器来加载新内核,如代码清单2-3所示。

代码清单2-3 更新Ubuntu Precise的启动加载器

$ sudo update-grub
安装完成后需要重启宿主机来启用新的3.8内核或者更新的内核,如代码清单2-4所示。

代码清单2-4 重启Ubuntu宿主机

$ sudo reboot
重启之后,可以再次使用uname –a来确认已经运行了正确版本的内核。

2.检查Device Mapper
这里将使用Device Mapper作为存储驱动。自2.6.9版本的Linux内核开始已经集成了Device Mapper,并且提供了一个将块设备映射到高级虚拟设备的方法。Device Mapper支持“自动精简配置”[18](thin-provisioning)的概念,可以在一种文件系统中存储多台虚拟设备(Docker镜像中的层)。因此,用Device Mapper作为Docker的存储驱动是再合适不过了。

任何Ubuntu 12.04或更高版本的宿主机应该都已经安装了Device Mapper,可以通过代码清单2-5所示的命令来确认是否已经安装。

代码清单2-5 检查Device Mapper

$ ls -l /sys/class/misc/device-mapper
lrwxrwxrwx 1 root root 0 Oct  5 18:50 /sys/class/misc/device-mapper
  -> ../../devices/virtual/misc/device-mapper

也可以在/proc/devices文件中检查是否有device-mapper条目,如代码清单2-6所示。

代码清单2-6 在Ubuntu的proc中检查Device Mapper

$ sudo grep device-mapper /proc/devices
如果没有出现device-mapper的相关信息,也可以尝试加载dm_mod模块,如代码清单2-7所示。

代码清单2-7 加载Device Mapper模块

$ sudo modprobe dm_mod
cgroup和命名空间自2.6版本开始已经集成在Linux内核中了。2.6.38以后的内核对cgroup和命名空间都提供了良好的支持,基本上也没有什么bug。

2.2.2 安装Docker
现在“万事俱备,只欠东风”。我们将使用Docker团队提供的DEB软件包来安装Docker。

首先,要添加Docker的APT仓库,如代码清单2-8所示。其间,可能会提示我们确认添加仓库并自动将仓库的GPG公钥添加到宿主机中。

代码清单2-8 添加Docker的ATP仓库

$ sudo sh -c "echo deb https://apt.dockerproject.org/repo ubuntu- 
  trusty main > /etc/apt/sources.list.d/docker.list"

应该将trusty替换为主机的Ubuntu发行版本。这可以通过运行lsb_release命令来实现,如代码清单2-9所示。

代码清单2-9 查主机Ubuntu发行版本

$ sudo lsb_release --codename | cut -f2
trusty

接下来,要添加Docker仓库的GPG密钥,如代码清单2-10所示。

代码清单2-10 添加Docker仓库的GPG密钥

$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net
:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

之后,需要更新APT源,如代码清单2-11所示。

代码清单2-11 更新APT源

$ sudo apt-get update
现在,就可以安装Docker软件包了,如代码清单2-12所示。

代码清单2-12 在Ubuntu中安装Docker

$ sudo apt-get install docker-engine
执行该命令后,系统会安装Docker软件包以及一些必需的软件包。

提示
自Docker 1.8.0开始,Docker的软件包名称已经从lxc-docker变为docker-engine。
安装完毕,用docker info命令应该能够确认Docker是否已经正常安装并运行了,如代码清单2-13所示。

代码清单2-13 确认Docker已经安装在Ubuntu中

$ sudo docker info
Containers: 0
Images: 0
. . .

2.2.3 Docker与UFW
在Ubuntu中,如果使用UFW[19],即Uncomplicated Firewall,那么还需对其做一点儿改动才能让Docker工作。Docker使用一个网桥来管理容器中的网络。默认情况下,UFW会丢弃所有转发的数据包(也称分组)。因此,需要在UFW中启用数据包的转发,这样才能让Docker正常运行。我们只需要对/etc/default/ufw文件做一些改动即可。我们需要将这个文件中代码清单2-14所示的代码替换为代码清单2-15所示的代码。

代码清单2-14 原始的UFW转发策略

DEFAULT_FORWARD_POLICY="DROP"
代码清单2-15 新的UFW转发策略

DEFAULT_FORWARD_POLICY="ACCEPT"
保存修改内容并重新加载UFW即可,如代码清单2-16所示。

代码清单2-16 重新加载UFW防火墙

$ sudo ufw reload

相关文章
|
15天前
|
Ubuntu 安全 关系型数据库
安装MariaDB服务器流程介绍在Ubuntu 22.04系统上
至此, 您已经在 Ubuntu 22.04 系统上成功地完成了 MariadB 的标准部署流程,并且对其进行基础但重要地初步配置加固工作。通过以上简洁明快且实用性强大地操作流程, 您现在拥有一个待定制与使用地强大 SQL 数据库管理系统。
125 18
|
17天前
|
Ubuntu 安全 关系型数据库
安装MariaDB服务器流程介绍在Ubuntu 22.04系统上
至此, 您已经在 Ubuntu 22.04 系统上成功地完成了 MariadB 的标准部署流程,并且对其进行基础但重要地初步配置加固工作。通过以上简洁明快且实用性强大地操作流程, 您现在拥有一个待定制与使用地强大 SQL 数据库管理系统。
89 15
|
17天前
|
存储 Ubuntu iOS开发
在Ubuntu 22.04系统上安装libimobiledevice的步骤
为了获取更多功能或者解决可能出现问题,请参考官方文档或者社区提供支持。
77 14
|
19天前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
208 7
|
1月前
|
消息中间件 人工智能 运维
Ubuntu环境下的 RabbitMQ 安装与配置详细教程
本文聚焦在Ubuntu下RabbitMQ安装与配置教程,旨在帮助读者快速构建稳定可用的消息队列服务。
|
2月前
|
XML Ubuntu Java
如何在Ubuntu系统上安装和配置JMeter和Ant进行性能测试
进入包含 build.xml 的目录并执行:
116 13
|
2月前
|
Ubuntu 关系型数据库 MySQL
Ubuntu 22.04.1上安装MySQL 8.0及设置root密码的注意事项
这些是在Ubuntu 22.04.1 系统上安装MySQL 8.0 及设置root密码过程中必须考虑的关键点。正确的遵循这些步骤可确保MySQL的安装过程既顺利又安全。
509 20
|
2月前
|
Ubuntu Linux
如何在 Ubuntu 服务器上安装桌面环境(GUI)
如果你有任何问题,请在评论区留言。你会在服务器上使用 GUI 吗?参照本文后你遇到了什么问题吗?
214 0
|
2月前
|
Web App开发 Ubuntu Oracle
Ubuntu安装与使用详解:掌握开源操作系统的钥匙
遵循这些步骤和指南,你将能够顺利地开始使用Ubuntu,并充分利用其强大的功能和友好的界面。
|
2月前
|
Ubuntu Linux Windows
如何在Ubuntu系统中安装Wine,借此来运行Windows程序
熟悉的登录画面出现,在Ubuntu系统中扫描登录微信程序。