如何在 Ubuntu 18.04 LTS 服务器中安装 Docker

在本指南中,我们将了解什么是 Docker,如何在 Ubuntu Linux 中安装 Docker。 此外,我们还将如何安装 Docker compose,这是一个定义和运行多容器 Docker 应用程序的工具。

内容

  1. 什么是 Docker?
  2. 码头工人要求
  3. 在 Ubuntu 18.04 LTS 中安装 Docker
    1. 测试 Docker
    2. 在 Linux 中以非 root 用户身份运行 Docker
    3. 在 Ubuntu 中安装 Docker Compose
      1. 方法一:
      2. 方法二:

什么是 Docker?

码头工人 是一种快速、轻量级的操作系统级虚拟化技术,适用于希望构建具有所有必需依赖项的应用程序并将其作为一个包发布的开发人员和系统管理员。

与其他虚拟化方法不同,例如 VMWare、Xen 和 VirtualBox,不需要为每个虚拟机单独的来宾操作系统。

所有 Docker 容器都有效地共享主机操作系统的内核。 每个容器都将在同一操作系统中的隔离用户空间中运行。

Docker 容器也可以在任何 Linux 变体上运行。 让我们说你在工作 Fedora,我正在使用 Ubuntu。 我们仍然可以相互开发、共享和分发 Docker 镜像。

您不必担心操作系统、软件、自定义设置或任何东西。 只要我们在主机系统中安装了 Docker,我们就可以继续开发。 简而言之,Docker 将无处不在!

您在上述段落中阅读了两个术语,即 Docker 镜像Docker 容器. 您可能想知道,它们实际上是什么,它们之间有什么区别?

通俗的说,Docker 镜像是一个描述 Container 应该如何表现的文件,而 Docker 容器是 Docker 镜像的运行(或停止)状态。

希望您对 Docker 有一个基本的了解。 有关详细信息,请参阅官方 Docker 用户指南。 该链接附在本指南的末尾。

码头工人要求

要安装和配置 Docker,您的系统必须满足以下最低要求。

  1. 64 位 Linux 或 Windows 操作系统;
  2. 如果你在 Linux 上,内核版本应该是 3.10 或以上。
  3. 您的系统应与 Internet 连接。

在 Linux 中,要验证内核和架构详细信息,请从终端运行以下命令:

$ uname -a

样本输出:

Linux ubuntuserver 4.15.0-91-generic #92-Ubuntu SMP Fri Feb 28 11:09:48 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

正如您在上面的输出中看到的,我的 Ubuntu 系统的内核版本是 4.15.0-91-通用 我的 Ubuntu 系统的架构是 64 位 (x86_64 x86_64 x86_64 GNU/Linux)。 检查上述结果中的粗体字母。

嗯,Kernel 版本高于最低要求,arch 是 64 位的。 因此,我们可以毫无问题地安装和使用 Docker。

请注意,您使用哪个 Ubuntu 操作系统并不重要。 此外,无论您使用的是 Ubuntu Desktop 还是 Ubuntu Server 版本,还是任何其他 Ubuntu 变体,例如 Lubuntu、Kubuntu、Xubuntu,都没有关系。

只要您的内核版本为 3.10+,并且系统的拱门是 64 位,Docker 就可以正常工作。

在 Ubuntu 18.04 LTS 中安装 Docker

首先,更新你的 Ubuntu 系统。

为此,请打开终端,并一一运行以下命令:

$ sudo apt-get update
$ sudo apt-get upgrade

Docker 在官方 Ubuntu 存储库中不可用。 因此,我们将添加 Docker 存储库以获取最新版本的 Docker。

首先,安装必要的证书并允许 易于 包管理器使用以下命令通过 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

您应该会看到如下所示的输出。

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

添加 Docker 官方仓库:

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

最后,运行以下命令在 Ubuntu 18.04 LTS 服务器中安装最新的 Docker CE:

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

在 Ubuntu 中安装 docker

当然,您也可以安装特定的 Docker 版本。 要检查可用 Docker 版本的列表,请运行:

$ apt-cache madison docker-ce

样本输出:

docker-ce | 5:19.03.8~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:19.03.7~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:19.03.6~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:19.03.5~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:19.03.4~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:19.03.3~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:19.03.2~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:19.03.1~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:19.03.0~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:18.09.9~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:18.09.8~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:18.09.7~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:18.09.6~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:18.09.5~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:18.09.4~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:18.09.3~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:18.09.2~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:18.09.1~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:18.09.0~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 18.06.3~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 18.06.2~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 18.06.1~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 18.06.0~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 18.03.1~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages

您可以从上面的列表中选择任何可用的版本并安装它。 例如,要安装版本 5:18.09.2~3-0~ubuntu-bionic, 跑:

$ sudo apt install docker-ce=5:18.09.2~3-0~ubuntu-bionic docker-ce-cli=5:18.09.2~3-0~ubuntu-bionic containerd.io

安装后,使用以下命令验证 Docker 服务是否正在运行:

$ systemctl status docker

你会看到类似下面的输出。

● docker.service - Docker Application Container Engine    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)    Active: active (running) since Fri 2020-04-10 10:39:00 UTC; 3min 40s ago      Docs: https://docs.docker.com  Main PID: 14610 (dockerd)     Tasks: 8    CGroup: /system.slice/docker.service            └─14610 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock  Apr 10 10:38:55 ubuntuserver dockerd[14610]: time="2020-04-10T10:38:55.800086650Z" level=warning msg="Your kernel does not support swap memory limit" Apr 10 10:38:55 ubuntuserver dockerd[14610]: time="2020-04-10T10:38:55.801329697Z" level=warning msg="Your kernel does not support cgroup rt period" Apr 10 10:38:55 ubuntuserver dockerd[14610]: time="2020-04-10T10:38:55.801659115Z" level=warning msg="Your kernel does not support cgroup rt runtime" Apr 10 10:38:55 ubuntuserver dockerd[14610]: time="2020-04-10T10:38:55.802348633Z" level=info msg="Loading containers: start." Apr 10 10:38:57 ubuntuserver dockerd[14610]: time="2020-04-10T10:38:57.965216155Z" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16.  Apr 10 10:38:58 ubuntuserver dockerd[14610]: time="2020-04-10T10:38:58.779021136Z" level=info msg="Loading containers: done." Apr 10 10:38:59 ubuntuserver dockerd[14610]: time="2020-04-10T10:38:59.283684712Z" level=info msg="Docker daemon" commit=afacb8b7f0 graphdriver(s)=overlay2 version=19.03. Apr 10 10:38:59 ubuntuserver dockerd[14610]: time="2020-04-10T10:38:59.286277513Z" level=info msg="Daemon has completed initialization" Apr 10 10:39:00 ubuntuserver systemd[1]: Started Docker Application Container Engine. Apr 10 10:39:00 ubuntuserver dockerd[14610]: time="2020-04-10T10:39:00.306773751Z" level=info msg="API listen on /var/run/docker.sock"

伟大的! Docker 服务已启动并运行!

如果尚未启动,请运行以下命令启动它。

$ sudo systemctl start docker

使 Docker 服务在每次重启时自动启动:

$ sudo systemctl enable docker

可以使用命令找到安装的 Docker 版本:

$ sudo docker version

样本输出:

Client: Docker Engine - Community  Version:           19.03.8  API version:       1.40  Go version:        go1.12.17  Git commit:        afacb8b7f0  Built:             Wed Mar 11 01:25:46 2020  OS/Arch:           linux/amd64  Experimental:      false  Server: Docker Engine - Community  Engine:   Version:          19.03.8   API version:      1.40 (minimum version 1.12)   Go version:       go1.12.17   Git commit:       afacb8b7f0   Built:            Wed Mar 11 01:24:19 2020   OS/Arch:          linux/amd64   Experimental:     false  containerd:   Version:          1.2.13   GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429  runc:   Version:          1.0.0-rc10   GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd  docker-init:   Version:          0.18.0   GitCommit:        fec3683