手把手教学,带你在LinuxOS XWindows下Docker的安装

曾无好事来相访,赖尔高文一起予。这篇文章主要讲述手把手教学,带你在LinuxOS XWindows下Docker的安装相关的知识,希望能为你提供帮助。
一、前言

  • 目前,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",之后选择对应的版本,里面会有相应的安装教程
手把手教学,带你在LinuxOS XWindows下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

手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片

  • 如果内核版本低于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

手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片

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

手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片

  • 如果没有出现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

手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片

  • 当前Docker Engine-Community的软件包被称为docker-ce
  • 第二步:在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。首先更新apt包索引
sudo apt-get update

手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片

  • 第三步:安装apt依赖包,用于通过HTTPS来获取仓库
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片

  • 第四步:添加 Docker 的官方 GPG 密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

【手把手教学,带你在LinuxOS XWindows下Docker的安装】
手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片

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

手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片

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

手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片

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

手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片

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

手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片

  • 第九步(与第八步选择其一):如果想要安装特定版本的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

手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片

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

手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片

方法②:使用官方安装脚本自动安装
  • 命令如下:
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文件做一些改动即可。默认的值如下:
手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片

  • 只需要将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

手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片

  • 同理,也可以在/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】资料内容。
手把手教学,带你在LinuxOS XWindows下Docker的安装

文章图片


    推荐阅读