安装Docker

Docker官方文档:https://docs.docker.com/

在Ubuntu上安装Docker引擎

前提条件

系统条件

安装Docker需要以下64Ubuntu系统:

  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Bionic 18.04 (LTS)
  • Ubuntu Xenial 16.04 (LTS)

Docker支持x86_64 (或者amd64), armhf, 以及arm64 架构.

卸载老版本

老版本的Docker 名为docker, docker.io, 或者 docker-engine. 如果安装了这些,就卸载他们:

1
$ sudo apt-get remove docker docker-engine docker.io containerd runc

如果apt-get 提示没有安装这些那就没问题了。

/var/lib/docker/目录包含隐藏的镜像、容器、卷、网络,Docker 包的名称现在是docker-ce

支持的存储引擎

DockerUbuntu 上支持overlay2, aufsbtrfs 存储引擎。

Docker 默认使用overlay2 存储引擎。如果你需要使用aufs ,需要手动配置:use the AUFS storage driver

安装方法

根据需要,可以通过不同方式安装Docker:

  • 大多数用户为了便于安装和升级而建立Docker仓库 ,然后安装他们,这是推荐的方式。
  • 一些用户下载.DEB包然后手动安装 ,并且完全的手动升级。这在安装Docker到没有网络的系统的情形下很有用。
  • 为了测试和开发环境,一些用户选择使用自动化便利脚本 来安装Docker。

使用仓库安装

第一次安装到一个新的机器上之前,你需要设置Docker仓库, 然后,你可以从仓库安装、升级Docker。

设置仓库

  1. 升级apt包索引,然后安装包来允许apt使用基于HTTPS的仓库:

    1
    2
    3
    4
    5
    6
    7
    8
    $ sudo apt-get update

    $ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
  2. 添加Docker的官方GPG密钥:

    1
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

    通过搜索后八位字符来验证你现在安装了指纹为9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88的密钥。

    1
    2
    3
    4
    5
    6
    $ 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]
  3. 使用以下命令来设置稳定版本的仓库, 需要安装每日构建或者测试仓库,在下面的命令中,在stable 之后添加nightly 或者 test (或者两者都添加)。 了解关于nightlytest 渠道

    Note: 下方的lsb_release -cs 子命令返回你的Ubuntu发行版的名字,例如xenial。有时候在一些发行版,例如Linux Mint,也许需要修改$(lsb_release -cs) 为其父Ubuntu发行版本,例如,对于Linux Mint Tessa,需要使用bionicDocker不提供任何保证在未经测试和未经支持的Ubuntu发行版上。

    • x86_64 / amd64

      1
      2
      3
      4
      $ sudo add-apt-repository \
      "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) \
      stable"
    • armhf

      1
      2
      3
      4
      $ sudo add-apt-repository \
      "deb [arch=armhf] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) \
      stable"
    • arm64

    1
    2
    3
    4
    $ sudo add-apt-repository \
    "deb [arch=arm64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

安装Docker引擎

  1. 升级 apt 包索引然后安装最版本的的Docker引擎和容器化,或者进入下一步安装特定版本:

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

    发现多个Docker仓库?

    如果你有多个Docker仓库被启用,不指定特定版本,通过apt-get install 或者 apt-get update命令安装或者升级将始终安装最高可用版本,可能不符合稳定要求。

  2. 为了安装特定版本的Docker,列举仓库中的可用版本然后选择安装:

    a. 列举仓库中可用的版本

    1
    2
    3
    4
    5
    6
    7
    $ apt-cache madison docker-ce

    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
    ...

    b. 通过使用第二列的版本字符串安装特定版本,例如5:18.09.1~3-0~ubuntu-xenial

    1
    $ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
  3. 通过运行hello-world镜像来确认Docker已经正确安装。

    1
    $ sudo docker run hello-world

    这个命令下载一个测试镜像并且在一个容器中运行它。当容器运行,它将打印一个提示信息并且退出。

Docker已经安装并且运行。docker组被运行,但是没有用户被添加进去。你需要使用 sudo 去运行Docker命令。 继续去 Linux postinstall 允许无权限的用户去运行Docker 命令以及其他可选的配置步骤。

升级Docker

要升级Docker,首先运行sudo apt-get update,然后按照安装指引, 选择要安装的新版本安装。

通过使用便利脚本安装

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

  • 这些脚本需要rootsudo权限才能运行。因此,在运行这些脚本之前,你应该仔细检查和审计它们。
  • 脚本试图检测你的Linux发行版和版本,并为你配置你的软件包管理系统。此外,这些脚本不允许您自定义任何安装参数。这可能会导致不支持的配置,无论是从Docker的角度还是从你自己组织的准则和标准来看。
  • 脚本会安装所有的依赖项和软件包管理器的建议,而不会要求确认。这可能会安装大量的软件包,这取决于你的主机的当前配置。
  • 脚本没有提供指定安装哪个版本的Docker的选项,安装的是 “edge “频道发布的最新版本。
  • 如果已经使用其他机制在主机上安装了Docker,请不要使用方便脚本。

这个例子使用get.docker.com的脚本来安装Linux上最新版本的Docker Engine - Community。要安装最新的测试版本,请使用test.docker.com 来代替。在下面的每一个命令中,用test替换get的每一次出现。

警告

在本地运行之前,一定要检查从互联网下载的脚本。

1
2
3
4
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

<output truncated>

如果你想以非root用户的身份使用Docker,你现在应该考虑将你的用户添加到 “docker “组中,比如说。

1
sudo usermod -aG docker your-user

记得退出后再登录才会生效!

警告

将用户添加到 “docker “组中,赋予他们运行容器的能力,这些容器可以用来获取Docker主机上的root权限。更多信息请参考Docker Daemon Attack Surface

安装了Docker Engine - Community。它在基于DEB的发行版上会自动启动。在基于RPM的发行版上,你需要使用适当的systemctlservice命令手动启动它。正如消息所显示的,非root用户默认不能运行Docker命令。

Note:

要在没有root权限的情况下安装Docker,请参见以非root用户身份运行Docker守护进程(Rootless mode)

Rootless模式目前是作为实验性功能提供的。

使用便利脚本之后更新Docker

如果你通过便利脚本安装Docker,你需要使用你的包管理器直接升级Docker。重新运行便利脚本并没有益处,并且如果他尝试重新添加已经添加到主机上了的仓库可能会导致产生问题。

卸载Docker

  1. 卸载Docker Engine, CLI, 以及Containerd 的包:

    1
    $ sudo apt-get purge docker-ce docker-ce-cli containerd.io
  2. 主机上的镜像、容器、卷,或者自定义配置文件并没有自动删除,要删除全部的images, containers和volumes:

    1
    $ sudo rm -rf /var/lib/docker

你必须手动删除任何修改过的配置文件。

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×