在Ubuntu上安装Docker(4种简单方法)

在Ubuntu上安装Docker(4种简单方法)

Docker是一个流行的工具,用于开发和部署被称为容器的软件包。Ubuntu是最流行的Linux发行版之一,也是一个得到Docker支持的操作系统。

在Ubuntu上安装Docker为你的开发项目创造一个理想的平台,使用共享Ubuntu操作系统内核的轻量级虚拟机。本教程将通过解释实现这一目标的4种方法来帮助你开始。

  1. 关于Docker的更多信息
  2. 准备在Ubuntu上安装Docker
  3. 在Ubuntu上安装Docker引擎
  4. 在Ubuntu上安装Docker桌面

关于Docker的更多信息

Docker通过让你在任何Docker主机上构建和运行应用程序,帮助实现应用程序的便携性。容器镜像可以在任何Docker可用的地方使用,无需修改–从你的笔记本电脑到云端。这通过消除运行环境之间的差异,简化了开发者的体验。容器格式也很容易分布在多个物理机上,使你能够轻松地扩展应用程序以应对不断变化的需求。

Docker包括你构建和运行容器镜像所需的一切,无论它们是来自Docker Hub和其他公共注册机构,还是你自己的Docker文件

准备在Ubuntu上安装Docker

你可以在Ubuntu 18.04、20.04、21.10和22.04版本上安装最新的Docker版本。支持x64_64/AMD64、ARMhf、ARM64和S390x架构。

有几种方法可以安装Docker,你的选择将取决于你需要的功能和你喜欢的软件包管理方法。你将在本指南中了解所有可能的选项。

选择一个Docker Flavor

Linux上的Docker传统上是只用终端的。一个正常的安装包括Docker引擎,一个运行容器的守护程序,以及与守护程序互动的 docker 命令行界面(CLI)。

Docker桌面是使用Docker的另一种方式。历史上只在Windows和Mac上可用,它在2022年5月推出了Linux版。Ubuntu上的Docker Desktop需要一个AMD64处理器和Ubuntu 21.10或22.04。它提供了一个管理容器的图形界面,一个集成的Kubernetes集群,以及对第三方扩展的支持。Docker Desktop还为你提供了 docker 和Docker Compose CLI。

Docker Desktop与Docker Engine不同,它使用虚拟机来运行你的容器(这就是为什么Windows和MacOS用户需要Docker Desktop)。尽管在Ubuntu上可以并排使用这两个版本,但你可能会发现 docker  CLI版本之间的冲突。最好是选择一个并坚持使用。如果你对你的终端很满意,并且希望得到最好的支持和性能,那么就选择Docker Engine。Docker Desktop的虚拟机使其略显沉重,但如果你想要一个集成的用户界面或计划使用Kubernetes,则是更好的选择。

在Ubuntu上安装Docker引擎

Docker Engine是在Ubuntu上运行Docker的标准方式。它适用于所有支持的版本和环境,从本地的Ubuntu桌面机到你的Ubuntu服务器云主机。在你继续之前,请确保你运行的Ubuntu版本是18.04或更新的。

Docker引擎有3种不同的安装方法:

  1. 一个官方的Ubuntu  apt 资源库
  2. 一个独立的Debian软件包(.deb)
  3. 一个自动安装脚本

选项1,即Ubuntu apt 软件库,是最常用的。它将Docker添加到你的软件包列表中,这样你就可以通过运行 apt upgrade 轻松安装未来的更新。选项2,不支持自动更新,但非常适合在有空气过滤的离线系统上安装Docker。自动安装脚本是最简单的入门方法,但其配置只适合开发使用。Docker建议不要在生产环境中使用它。

当你与生产系统一起工作,想要轻松更新,或需要在所有环境中使用相同的机制时,使用 apt 仓库。

如果你想在自己的机器上试验Docker时获得快速的安装体验,请使用自动安装脚本。

1. 使用apt仓库安装Docker

Docker publishes packages to its own apt repository. You’ll need to add this repository to your apt sources list, otherwise, your apt installation won’t be able to find the Docker packages.

Docker将软件包发布到自己的 apt 仓库。你需要将这个仓库添加到你的 apt 源列表中,否则,你的 apt 安装将无法找到Docker包。

首先,更新你现有的软件包列表,并为下面的步骤安装一些依赖项。 ca-certificatescurlgnupglsb_release 工具将被用来下载正确的Docker apt 仓库细节和你系统的签名密钥。尽管你可能已经有了这些软件包,但确保它们是可用的也无妨。

$ sudo apt update
$ sudo apt install ca-certificates curl gnupg lsb-release

接下来,在apt上注册Docker的GPG密钥圈。这将让 apt 验证你安装的Docker包。

$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg

curl 命令为Ubuntu下载Docker的GPG密钥,将其转换为标准的OpenGPG编码,并将其保存到apt的keyring目录中。 chmod 用来设置keyring文件的权限,以便 apt 能够可靠地检测到它。

现在你可以把Docker包的源代码添加到你的系统中。运行下面的命令:

$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

这使用shell替换来自动检测你的系统架构,如AMD64或ARM64,并下载相应的软件包列表。它将使用之前添加的GPG密钥进行验证。该软件库被作为一个新的软件包列表添加到 apt /etc/apt/sources.list.d directory.中。

再次更新你的软件包列表,让 apt 知道Docker软件包的存在:

$ sudo apt update

现在你可以使用 apt install 命令将Docker的组件添加到你的系统中。你将会安装最新版本的Docker社区版(CE)。有三个软件包需要安装:

  • docker-ce: Docker引擎守护程序。
  • docker-ce-cli: 你将与之互动的Docker CLI。
  • containerd.io: 被称为containerd的容器运行时间,用于启动和运行你的容器。
$ sudo apt install docker-ce docker-ce-cli containerd.io

2. 使用Debian Packagers安装Docker

官方的 .deb 包设置起来很简单,但你必须手动下载和安装每个新版本。软件包被托管在一个简单的文件服务器上。首先浏览Docker的发布说明页面,找到最新的可用版本号,比如20.10.20。接下来,前往containerd的GitHub页面,也可以查看其版本号。它将看起来像1.6.8。

现在你可以运行下面的命令序列,为你的平台下载正确的软件包。将<DOCKER_VERSION> 和 <CONTAINERD_VERSION> 分别替换为当前Docker和containerd的版本号。

$ curl https://download.docker.com/linux/ubuntu/dists/$(lsb_release --codename | cut -f2)/pool/stable/$(dpkg --print-architecture)/docker-ce_<DOCKER_VERSION>~3-0~ubuntu-focal_amd64.deb -o docker-ce.deb
$ curl https://download.docker.com/linux/ubuntu/dists/$(lsb_release --codename | cut -f2)/pool/stable/$(dpkg --print-architecture)/docker-ce-cli_<DOCKER_VERSION>~3-0~ubuntu-focal_amd64.deb -o docker-ce-cli.deb
$ curl https://download.docker.com/linux/ubuntu/dists/$(lsb_release --codename | cut -f2)/pool/stable/$(dpkg --print-architecture)/containerd.io_<CONTAINERD_VERISON>-1_amd64.deb -o containerd.deb

你也可以通过在浏览器中访问你的Ubuntu版本的目录列表来下载文件并检查所有可用的版本。

一旦你下载了Docker CE、CLI和containerd软件包,使用以下命令来安装它们:

$ sudo apt install ./docker-ce.deb ./docker-ce-cli.deb ./containerd.deb

如果你没有使用上面提供的脚本而手动下载软件包,请调整文件名。

3. 使用安装脚本安装Docker

Docker的便利脚本可以自动安装所有Docker组件。它是非交互式的,所以你可以坐下来等待,而你的系统已经为你准备好了。

首先下载该脚本:

$ curl -fsSL https://get.docker.com -o get-docker.sh

现在以root权限运行该脚本:

$ sudo sh get-docker.sh
Executing docker install script
...

等到脚本达到完成。你应该看到一条确认信息,显示Docker已经安装。

这个脚本是为了提供一个通用的解决方案。如果不直接修改脚本的源代码,你就无法定制它的功能。它也不是为执行Docker更新而设计的,因为它不会将依赖关系更新到最新版本。

确保Docker引擎在Ubuntu上运行

无论你使用哪种安装方法,你都应该通过启动一个容器来确保一切正常:

$ sudo docker run hello-world

你会看到Docker客户端将 hello-world:image 从Docker Hub仓库拉到你的机器上:

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:7d246653d0511db2a6b2e0436cfd0e52ac8c066000264b3ce63331ac66dca625
Status: Downloaded newer image for hello-world:latest

然后,一个新的容器将自动启动。hello-world “的启动镜像被配置为运行一个简单的命令,输出一些关于Docker的基本信息,然后立即退出:

Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

看到上面显示的输出意味着Docker已经可以使用了。守护进程成功地从Docker Hub拉出了hello-world:latest image,并使用它启动了一个容器。从 “Hello from Docker “一行开始的所有内容都是由容器内的进程发出的。

在Ubuntu上设置Docker引擎权限

一个新的Docker引擎安装通常需要root权限来运行 docker CLI命令。你需要在每个命令前加上 sudo,这很不方便。

你可以在使用上述步骤安装Docker Engine后,将自己添加到 docker 组中,从而避免这一要求。这一可选的改变使你有权限作为普通用户运行 docker 命令,而不需要 sudo,这简化了你的CLI体验。

确保 docker 用户组存在:

$ sudo groupadd docker

然后把自己加进去:

$ sudo usermod -aG docker $USER

如果你以前用 sudo 运行过任何 docker 命令,你需要修正你的 ~/.docker 目录的权限:

$ sudo chown $USER:$USER /home/$USER/.docker -R
$ sudo chmod g+rwx $HOME/.docker -R

这确保你自己的用户账户被允许读写该目录中的文件。

退出你的系统并再次登录,这样你的新组成员资格就会生效。尝试在没有 sudo 的情况下运行 docker 命令:

$ docker run hello-world

这个安装后的步骤完成了Ubuntu上的Docker设置过程。守护进程已经被配置为自动启动,所以你不需要手动设置服务。如果你打算进行高级安装,请参考Docker用户手册中关于如何配置自定义网络、日志和卷存储管理的说明。

在Ubuntu安装中添加Docker Compose

Docker Compose是一个流行的Docker配套工具,它使使用多个容器的应用程序更容易工作。虽然 docker CLI每条命令只针对一个容器,但 docker compose 可以通过每个动作启动和停止几个容器。这简化了你有独立的前端、后端和数据库服务的系统管理。

Docker Compose现在可以作为 docker CLI的一部分。当你使用官方安装脚本安装Docker时,Compose V2插件就包括在内。如果你使用这种方法,它也可以在 apt 中使用:

$ sudo apt install docker-compose-plugin

另外,你也可以下载最新的 .deb 压缩包并手动安装:

$ curl https://download.docker.com/linux/ubuntu/dists/$(lsb_release --codename | cut -f2)/pool/stable/$(dpkg --print-architecture)/docker-compose-plugin_2.6.0~ubuntu-focal_amd64.deb -o docker-compose-plugin.deb
$ sudo apt install -i ./docker-compose-plugin.deb

通过尝试 docker compose version 命令来检查Compose是否工作:

$ docker compose version
Docker Compose version v2.6.0

在Ubuntu上安装Docker Desktop

虽然Docker Engine仅限于CLI体验,但Docker Desktop提供了一个图形化的管理界面,内置的Kubernetes支持,以及可选的第三方扩展,可以帮助简化你的容器工作流程。当你在自己的工作站上寻求易用性时,它是一个很好的选择。

要安装Docker Desktop,首先使用 apt 安装一些依赖项:

$ sudo apt update
$ sudo apt install ca-certificates curl gnupg lsb-release

接下来,运行下面的一组命令来添加Docker的 apt 资源库。尽管Docker Desktop并不包括在这个软件库中,但其中的软件包会被Desktop的Debian存档作为依赖项引用。

$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update

curl 命令下载Docker在Ubuntu下的GPG密钥,将其转换为标准的OpenGPG编码,并将其保存到 apt 的keyring目录下。chmod 用于设置keyring文件的权限,以便 apt 能够可靠地检测到它。

文档中的链接下载Docker Desktop Debian存档。这将提供最新的Docker Desktop for Linux的稳定版本。使用apt安装该软件包,将你下载的版本号替换进去:

$ sudo apt install ./docker-desktop-4.11.0-amd64.deb

Docker Desktop现在会出现在你的应用启动器中。使用你的启动器来启动Docker Desktop并打开用户界面。你也能在终端运行 dockerdocker composekubectl 命令。该应用程序还为你的shell托盘添加了一个菜单,显示当前的Docker Desktop状态,并让你执行一些快速操作。

在你第一次运行Docker Desktop时,你会被提示接受服务协议。如果你同意,请按下接受按钮,然后等待Docker Desktop启动其虚拟机。

几分钟后,仪表板将加载。它提供了从流行镜像创建新容器的快捷方式,避免了冗长的终端命令。

在Ubuntu上安装了Docker Desktop

在Ubuntu上安装了Docker Desktop

小结

Docker是大多数开发者开始使用容器的方式。你可以轻松地在Ubuntu系统上安装Docker,无论是Docker引擎还是新的Docker桌面。一旦你安装了Docker,你就完全有能力构建和运行容器,让你简化开发,减少环境之间的差异。

评论留言

唇枪舌剑 (1)

  • Hugh的头像

    Hugh

    2023.3.18 12:03

    然后把自己加进去:

    $ sudo usermod -aG docker $USER

    ==> $ sudo usermod -a -G docker $USER

    回复