一、前言

  • 目前,Docker已经支持非常多的Linux平台,包括Ubuntu和RHEL(Red Hat Enterprise Linux,Red Hat企业版Linux)。除此之外,Docker还支持Debian、CentOS、Fedora、Oracle Linux等衍生系统和相关的发行版。如果使用虚拟环境,甚至也可以在OS X和Microsoft Windows中运行Docker
  • 本文将介绍如何在4种各有所长的操作系统中安装Docker,包括:
    • 在运行Ubuntu系统的宿主机中安装Docker
    • 在运行RHEL或其衍生的Linux发行版的宿主机中安装Docker
    • 在OS X系统中用Docker Toolbox(http://docker.com/toolbox)工具安装Docker
    • 在Microsoft Windows系统中使用Docker Toolbox工具安装Docker

提示

  • Docker Toolbox一个安装了运行Docker所需一切的组件的集合。它包含VirtualBox和一个极小的虚拟机,同时提供了一个包装脚本(wrapper script)对该虚拟机进行管理。该虚拟机运行一个守护进程,并在OS X或Microsoft Windows中提供一个本地的Docker守护进程。Docker的客户端工具docker作为这些平台的原生程序被安装,并连接到在Docker Toolbox虚拟机中运行的Docker守护进程。Docker Toolbox替代了Boot2Docker
  • Docker也可以在很多其他Linux发行版中运行,包括Debian、SUSE、Arch Linux、CentOS和Gentoo。Docker也支持一些云平台,包括Amazon EC2、Rackspace Cloud和Google Compute Engine。可以在Docker安装指南(https://docs.docker.com/engine/installation/)查到完整的Docker支持平台列表
  • 和所有安装过程一样,推荐读者了解一下如何使用Puppet(http://www.puppetlabs.com/)或Chef(https://www.chef.io/)这样的工具来安装Docker,而不是纯手动安装。例如,可以在网上找到安装Docker的Puppet模块(https://docs.docker.com/use/puppet/)和Chef cookbook(https://supermarket.chef.io/cookbooks/docker)

安装Docker的先决条件

  • 和安装其他软件一样,安装Docker也需要一些基本的前提条件
  • Docker要求的条件具体如下:
    • 运行64位CPU构架的计算机(目前只能是x86_64和amd64),请注意,Docker目前不支持32位CPU
    • 运行Linux 3.8或更高版本内核。一些老版本的2.6.x或其后的内核也能够运行Docker,但运行结果会有很大的不同。而且,如果需要就老版本内核寻求帮助,通常大家会被建议升级到更高版本的内核
    • 内核必须支持一种适合的存储驱动(storage driver),例如:
      • Device Manager(http://en.wikipedia.org/wiki/Device_mapper)
      • AUFS(http://en.wikipedia.org/wiki/Aufs)
      • vfs(http://en.wikipedia.org/wiki/Virtual_file_system)
      • btrfs(http://en.wikipedia.org/wiki/Btrfs)
      • ZFS(在Docker 1.7中引入)
      • 默认存储驱动通常是Device Mapper 或AUFS
      • 内核必须支持并开启cgroup(http://en.wikipedia.org/wiki/Cgroups)和命名空间(http://blog.dotcloud.com/under-the-hood-linux-kernels-on-dotcloud-part)(namespace)功能
  • Docker提供了两个版本:社区版 (CE) 和企业版 (EE)
  • 在Docker的官网也有相应的安装教程,请参阅https://docs.docker.com/,进入之后点击"Guides",然后再选择"Get Docker",之后选择对应的版本,里面会有相应的安装教程

二、在Ubuntu和Debian中安装Docker

  • Docker Engine-Community 支持以下的Ubuntu版本:

    • Xenial 16.04 (LTS)
    • Bionic 18.04 (LTS)
    • Cosmic 18.10
    • Disco 19.04
    • 其他更新的版本……
  • Docker支持以下的Debian版本:
    • Buster 10
    • Stretch 9 (stable) / Raspbian Stretch

检查前提条件(检查内核)

  • 通过下面的命令来查看内核版本,如下所示:此处安装的是4.15.0 x86_64版本的内核,超过了Ubuntu 14.04,因此条件符合
uname -a

  • 如果内核版本低于14.04,可以使用下面的命令来将ubuntu升级到最新的内核。命令如下:
sudo apt-get update# 安装内核
sudo apt-get install linux-headers-4.15.0-54-generic linux-image-4.15.0-54-generic linux-headers-4.15.0-54# 更新Grub启动加载器来加载新内核
sudo update-grub# 重启生效
sudo reboot

检查前提条件(检查Device Mapper)

  • 这里将使用Device Mapper作为存储驱动。自2.6.9版本的Linux内核开始已经集成了Device Mapper,并且提供了一个将块设备映射到高级虚拟设备的方法。Device Mapper支持“自动精简配置”(thin-provisioning)的概念,可以在一种文件系统中存储多台虚拟设备(Docker镜像中的层)。因此,用Device Mapper作为Docker的存储驱动是再合适不过了
  • 任何Ubuntu 12.04或更高版本的宿主机应该都已经安装了Device Mapper,可以通过下面的命令来确认是否已经安装:
ls -l /sys/class/misc/device-mapper

  • 也可以在/proc/devices文件中查看是否有device-mapper条目,如下所示:
sudo grep device-mapper /proc/devices

  • 如果没有出现device-mapper的相关信息,可以尝试加载dm_mod模块,命令如下所示
sudo modprobe dm_mod

其他先决条件

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

方法①:手动安装

  • 第一步:Docker的旧版本被称为 docker,docker.io 或 docker-engine。如果已安装,请卸载它们:
sudo apt-get remove docker docker-engine docker.io containerd runc

  • 当前Docker Engine-Community的软件包被称为docker-ce
  • 第二步:在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。首先更新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 -

  • 第五步:9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88,通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥
sudo apt-key fingerprint 0EBFCD88

  • 第六步:使用以下指令设置稳定版仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

  • 第七步:再次更新 apt 包索引
sudo apt-get update

  • 第八步(与第九步选择其一):安装最新版本的 Docker Engine-Community 和 containerd(备注:如果想要安装特定版本的Docker Engine-Community,请转移到第九步)
sudo apt-get install docker-ce docker-ce-cli containerd.io

  • 第九步(与第八步选择其一):如果想要安装特定版本的Docker Engine-Community,可以先列出仓库中可用的版本,然后再指定版本进行安装
# 列出仓库中可用的docker版本
apt-cache madison docker-ce# 安装指定版本的命令如下
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io# 例如想要安装5:19.03.8~3-0~ubuntu-bionic,那么就将VERSION_STRING即可
sudo apt-get install docker-ce=5:19.03.8~3-0~ubuntu-bionic docker-ce-cli=5:19.03.8~3-0~ubuntu-bionic containerd.io

  • 第十步:测试是否安装成功
sudo docker version

方法②:使用官方安装脚本自动安装

  • 命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  • 或者使用国内daocloud一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh

方法③:使用Shell脚本进行安装

  • Docker 在 get.docker.com 和 test.docker.com 上提供了方便脚本,用于将快速安装 Docker Engine-Community 的边缘版本和测试版本。脚本的源代码在 docker-install 仓库中。 不建议在生产环境中使用这些脚本,在使用它们之前,您应该了解潜在的风险:

    • 脚本需要运行 root 或具有 sudo 特权。因此,在运行脚本之前,应仔细检查和审核脚本
    • 这些脚本尝试检测 Linux 发行版和版本,并为您配置软件包管理系统。此外,脚本不允许您自定义任何安装参数。从 Docker 的角度或您自己组织的准则和标准的角度来看,这可能导致不支持的配置
    • 这些脚本将安装软件包管理器的所有依赖项和建议,而无需进行确认。这可能会安装大量软件包,具体取决于主机的当前配置
    • 该脚本未提供用于指定要安装哪个版本的 Docker 的选项,而是安装了在 edge 通道中发布的最新版本
    • 如果已使用其他机制将 Docker 安装在主机上,请不要使用便捷脚本
  • 本示例使用 get.docker.com 上的脚本在 Linux 上安装最新版本的Docker Engine-Community。要安装最新的测试版本,请改用 test.docker.com。在下面的每个命令,取代每次出现 get 用 test。
curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.sh
  • 如果要使用 Docker 作为非 root 用户,则应考虑使用类似以下方式将用户添加到 docker 组:
sudo usermod -aG docker your-user

备注:Docker与UFW

  • 在Ubuntu中,如果使用UFW(https://help.ubuntu.com/community/UFW),即Uncomplicated Firewall,那么还需对其做一点儿改动才能让Docker工作。Docker使用一个网桥来管理容器中的网络默认情况下,UFW会丢弃所有转发的数据包(也称分组)。因此,需要在UFW中启用数据包的转发,这样才能让Docker正常运行
  • 如果UFW没有工作,那么就不需要设置
  • 我们只需要对/etc/default/ufw文件做一些改动即可。默认的值如下:

  • 只需要将DEFAULT_FORWARD_POLICY更改为ACCEPT即可
DEFAULT_FORWARD_POLICY="ACCEPT" 
  • 保存修改内容并重新加载UFW即可
sudo ufw reload 

三、在Red Hat及其发行版中安装Docker

  • 在Red Hat企业版Linux(或者CentOS或Fedora)中,只有少数几个版本可以安装Docker,包括:

    • RHEL(和CentOS)6或以上的版本(64位)
    • Fedora 19或以上的版本(64位)
    • Oracle Linux 6和Oracle Linux 7,带有Unbreakable企业内核发行版 3(3.8.13)或者更高版本(64位)
  • 提示:在Red Hat企业版Linux 7及更高版本中,Docker已经成为系统自带的软件包了,并且,只有Red Hat企业版Linux 7是Red Hat官方支持Docker的发行版本

检查前提条件(检查内核)

  • 通过下面的命令来查看内核版本,如下所示:
uname -a
  • 目前所有官方的Red Hat和Red Hat系列平台,应该都安装了支持Docker的内核

检查前提条件(检查Device Mapper)

  • 我们这里使用Device Mapper作为Docker的存储驱动,为Docker提供存储能力。在Red Hat企业版Linux、CentOS 6或Fedora 19及更高版本宿主机中,应该也都安装了Device Mapper。检查命令如下所示
ls -l /sys/class/misc/device-mapper

  • 同理,也可以在/proc/devices文件中查看是否有device-mapper条目,如下所示:
sudo grep device-mapper /proc/devices
  • 如果没有出现device-mapper的相关信息,可以尝试安装device-mapper软件包,命令如下所示
sudo yum install -y device-mapper
  • 提示: 在新版本的Red Hat系列发行版本中, yum命令已经被dnf命令取代,它们的语法并没有什么变化
  • 安装完成之后,加载dm_mod内核模块,命令如下所示
sudo modprobe dm_mod
  • 模块加载完毕,就应该可以找到/sys/class/misc/device-mapper条目了
  • 在不同版本的Red Hat中,安装过程略有不同。在RHEL 6或CentOS 6中,需要先添加EPEL软件包的仓库。而Fedora中则不需要启用EPEL仓库。在不同的平台和版本中,软件包命名也有细微的差别

  • 下面演示在CentOS中安装Docker

方式①:手动安装

  • 第一步:卸载旧版本,较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  • 在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker
  • 第二步:安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  • 第三步:使用以下命令来设置稳定的仓库
# 使用官方源地址(比较慢)
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 如果上面较慢,可以选择使用阿里云的源地址
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 或者使用清华大学的源地址
sudo yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
  • 第四步(与第五步选择其一):安装最新版本的 Docker Engine-Community 和 containerd(备注:或者跳到第五步安装特定的版本)
sudo yum install docker-ce docker-ce-cli containerd.io
  • 第五步(与第四步选择其一):列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序
# 列出可用版本
yum list docker-ce --showduplicates | sort -r# 安装特定版本的命令如下
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io# 软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1
sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io
  • 第六步:启动 Docker
sudo systemctl start docker
  • 第七步:通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community
sudo docker run hello-world

方式②:使用官方安装脚本自动安装

  • 安装命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  • 也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh

四、在OS X中安装Docker Toolbox

  • 待续,详情可参阅:https://www.runoob.com/docker/macos-docker-install.html

五、在Windows中安装Docker Toolbox

  • 待续,详情可参阅:https://www.runoob.com/docker/windows-docker-install.html

六、二进制安装

  • 如果不想要基于任何软件包的安装方法,可以使用下面的命令来下载最新的Docker可执行程序进行安装
wget https://get.docker.com/builds/Linux/x86_64/docker-latest.tgz
  • 不推荐这种安装方式,因为这降低了Docker软件包的可维护性。使用软件包更简单,也更易于管理,特别是在使用自动化安装和配置管理工具的情况下

七、升级Docker

  • Docker安装之后,也可以很容易地对其进行升级。如果是通过类似apt-get或yum这样的原生软件包安装的Docker,也可以用同样的方法对Docker进行升级
  • 例如,可以运行apt-get update命令,然后安装新版本的Docker。我们使用apt-get install命令来升级Docker,这是因为docker的软件包一般都是固定的

八、Docker用户界面

  • Docker安装之后,也可以用图形用户界面来进行管理
  • 目前,有一些正在开发中的Docker用户界面和Web控制台,它们都处于不同的开发阶段,具体如下
    • Shipyard(http://shipyard-project.com/):Shipyard提供了通过管理界面来管理各种Docker资源(包括容器、镜像、宿主机等)的功能。Shipyard是开源的,源代码可以在https://github.com/ehazlett/shipyard获得
    • DockerUI(https://github.com/crosbymichael/dockerui):DockerUI是一个可以与Docker Remote API交互的Web界面。DockerUI是基于AngularJS框架,采用JavaScript编写的
    • Kitematic:Kitematic是一个OS X和Windows下的GUI界面工具,用于帮助我们在本地运行Docker以及与Docker Hub进行交互。它是由Docker公司免费发布的产品,它也被包含在Docker Toolbox之中

  • 我是小董,V公众点击"笔记白嫖"解锁更多【Docker】资料内容。

手把手教学,带你在Linux、OS X、Windows下Docker的安装相关推荐

  1. Linux发行版CentOS下Docker的安装和卸载

    目录 1.Docker的安装 2.Docker的卸载 linux中安装docker的方式有几种,本文是基于docker仓库的安装 前置须知: 本文的服务器并非虚拟出来的服务器,而是在阿里云ESC上进行 ...

  2. Windows下Docker配置安装加速器

    Windows10可以安装Docker Desktop for windows,下载地址,下载需要注册登录,但是直接往下拉,找到Install Docker Desktop for Windows d ...

  3. Linux、Windows、Mac下Docker的安装与使用

    Linux.Windows.Mac下Docker的安装与使用 一.Linux下的安装 二.Windows与Mac下的安装 三.Docker的使用 一.Linux下的安装 这里以Centos 7为例,首 ...

  4. windows下python如何安装模块或包? How to install package or module in windows OS when using PYTHON?

    摘要:本文介绍了在windows下利用cmd安装第三方模块或包的方法. 更新20170531:作为小白,发现使用setup.py安装并不是万能的,找到了使用pip安装的方法,步骤为配置好环境变量后(参 ...

  5. ZYNQ LINUX开发笔记——windows下用xilinx SDK编译zynq linux app小程序

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ LINUX开发笔记--windows下用xilinx SDK编译zynq linux app小程序 前言 操作方法 总结 前 ...

  6. 在 Linux 和 Windows 下源码安装 Perl

    Perl 是一种功能丰富的计算机程序语言,运行在超过 100 种计算机平台上,适用广泛,从大型机到便携设备,从快速原型创建到大规模可扩展开发.在生物信息分析领域,Perl 主要是做数据预处理.文本处理 ...

  7. Windows下nginx的安装及使用方法入门

    Windows下Nginx的安装及使用方法入门 nginx功能之一可以启动一个本地服务器,通过配置server_name和root目录等来访问目标文件 一. 下载 官网地址:http://nginx. ...

  8. windows下OpenCV的安装配置部署详细教程

    零.简介 OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库.OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以 ...

  9. Windows下查看已经安装的GPU的情况

    Windows下查看已经安装的GPU的情况 搞到了一块显卡(T4),安装在了Windows上面,那么如何查看显卡的情况那,,,,, 在linux下直接输入nvidia-smi就可以看到GPU的信息的情 ...

最新文章

  1. Android JNI入门第五篇——Android.mk分析
  2. 十分钟让你明白AIDL
  3. python获取方法的装饰方法_python中的方法和装饰器
  4. smarty中js的调用方法
  5. YUV、RGB、RAW DATA 3种Sensor输出格式 详解
  6. eyoucms使用入门 三
  7. 安装最新版SopCast 0.4.1
  8. 暴走英雄坛服务器维护到什么时候,各位侠士久等了,暴走英雄坛1.8.1新版本更新前瞻一览。我们...
  9. 算法的浅论:算法前序
  10. kubernetes 是一个分布式的集群管理系统
  11. 搭建Prometheus监控报警
  12. HTML3-视频图像的插入
  13. 读书笔记_《统计陷阱》达莱尔.哈夫
  14. pandas, dataframe获取最后一行的三种方法
  15. 换IP软件能否实现定时切换IP?一起来验证
  16. MYSQL高级篇-----索引优化分析
  17. React Native 音频录制例子来解惑入门,真的已经讲烂了
  18. 一般3d模型代做多少钱_3d打印一个模型多少钱
  19. 从来不敷面膜的人_女人不敷面膜的危害
  20. ETL VS SSIS 开发

热门文章

  1. C# @Page指令中的AutoEventWireup,CodeBehind,Inherits
  2. c/c++后台开发前景到底如何?该如何提升?
  3. 阿里巴巴中国站获取1688app上原数据 API 返回值说明
  4. c语言万年历代码作业,用c语言编写万年历程序
  5. 常见的8种大数据分析模型,你了解吗
  6. 阿空实训日记——永别牢笼计划第二天
  7. [转]VBA代码调用浏览文件夹对话框的几种方法
  8. 计算机显示器配置,你们知道电脑的配置怎么查看吗,查看电脑显示器配置方法...
  9. 用EasyExcel对excel表格进行读写操作
  10. 安装Oracle 11g时遇到“【INS-13001】此环境不满足最低配置”的问题解决