Ubuntu 22.04 LTS 中安装 Docker 和 Docker Compose
在这篇文章中,我们将会明白 Docker 是什么,如何 在 Ubuntu 中安装 Docker 引擎 。此外,我们也将会明白如何 安装 Docker Compose ,它是一个定义并运行多容器的 Docker 应用。
我们已经在 Ubuntu 22.04 LTS 中正式的测试了这份指南。然而,它也应该对旧版本如 20.04 LTS 和 18.04 LTS 有效。为了更好的安全性和稳定性,我推荐你使用最新的版本 —— Ubuntu 22.04 LTS 。
什么是 Docker ?
- Docker 是一个快捷、轻便的系统级虚拟化技术,开发者和系统管理员可以使用它构建具备所有必要依赖项的应用程序,并将其作为一个包发布。
- Docker 与其他如 VMWare 、Xen 、以及 VirtualBox 等工具的虚拟化方式不同,每个虚拟机不需要单独的客户操作系统。
- 所有的 Docker 容器有效地共享同一个主机系统内核。每个容器都在同一个操作系统中的隔离用户空间中运行。
- Docker 容器可以在任何 Linux 版本上运行。比如说你使用 Fedora ,我用 Ubuntu 。我们能相互开发、共享并分发 Docker 镜像。
- 你无需担心操作系统、软件以及自定义设置,任何事都不用担心。只要我们的主机安装了 Docker ,就能持续开发。简言之,Docker 能够在任何地方运行!
- 前文中你读到了两个词:Docker 镜像 和 Docker 容器 ,或许你在想它们的区别。
- 通俗地说,Docker 镜像是一个描述容器应该如何表现的文件,而 Docker 容器是 Docker 镜像的运行(或停止)状态。
- 希望你能够理解 Docker 的基础概念。更多细节,你可以参考文章末尾的 Docker 官方指导手册。
在 Ubuntu 22.04 LTS 中安装 Docker
首先,更新你的 Ubuntu 系统。
1、更新 Ubuntu
打开终端,依次运行下列命令:
1 | sudo apt update |
2、添加 Docker 库
首先,安装必要的证书并允许 apt 包管理器使用以下命令通过 HTTPS 使用存储库:
1 | sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release |
然后,运行下列命令添加 Docker 的官方 GPG 密钥:
1 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg |
添加 Docker 官方库:
1 | echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null |
使用命令更新 Ubuntu 源列表:
1 | sudo apt update |
3、安装 Docker
最后,运行下列命令在 Ubuntu 22.04 LTS 服务器中安装最新 Docker CE:
1 | sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin |
当然你也可以安装其他版本 Docker 。运行下列命令检查可以安装的 Docker 版本:
1 | apt-cache madison docker-ce |
输出样例:
1 | docker-ce | 5:20.10.19~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages |
你可以挑选上面列表中的任何版本进行安装。例如,安装 5:20.10.19~3-0~ubuntu-jammy
这个版本,运行:
1 | sudo apt install docker-ce=5:20.10.19~3-0~ubuntu-jammy docker-ce-cli=5:20.10.19~3-0~ubuntu-jammy containerd.io |
安装完成后,运行如下命令验证 Docker 服务是否在运行:
1 | systemctl status docker |
你会看到类似下面的输出:
1 | ● docker.service - Docker Application Container Engine |
Docker 服务已启动并运行!
如果没有运行,运行以下命令运行 Docker 服务:
1 | sudo systemctl start docker |
使 Docker 服务在每次重启时自动启动:
1 | sudo systemctl enable docker |
可以使用以下命令查看已安装的 Docker 版本:
1 | sudo docker version |
输出样例:
1 | Client: Docker Engine - Community |
4、测试 Docker
让我们继续,测试 Docker 是否运行正常:
运行:
1 | sudo docker run hello-world |
上述命令会下载一个 Docker 测试镜像,并在容器内执行一个 “hello_world” 样例程序。
如果你看到类似下方的输出,那么祝贺你!Docker 正常运行在你的 Ubuntu 系统中了。
1 | Unable to find image 'hello-world:latest' locally |
5、作为非 root 用户运行 Docker (选做)
默认情况下,Docker 守护进程绑定到 Unix 套接字而不是 TCP 端口。由于 Unix 套接字由 root 用户拥有,Docker 守护程序将仅以 root 用户身份运行。因此,普通用户无法执行大多数 Docker 命令。
如果你想要在 Linux 中作为非 root 用户运行 Docker ,参考下方链接:
如何在 Linux 中作为非 root 用户运行 Docker
我个人不这样做也不推荐你这么做。如果你不会在互联网上暴露你的系统,那没问题。然而,不要在生产系统中以非 root 用户身份运行 Docker 。
在 Ubuntu 中安装 Docker Compose
Docker Compose 是一个可用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,你可以使用 Compose 文件来配置应用程序的服务。然后,使用单个命令,你可以从配置中创建和启动所有服务。
下列任何方式都可以安装 Docker Compose 。
方式 1、使用二进制文件安装 Docker Compose
从 这里 下载最新 Docker Compose 。
当我在写这篇文章时,最新版本是 2.11.2 。
运行下列命令安装最新稳定的 Docker Compose 文件:
1 | sudo curl -L "https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
如果有更新版本,只需要将上述命令中的 v2.11.2 替换为最新的版本号即可。请不要忘记数字前的 “v” .
最后,使用下列命令赋予二进制文件可执行权限:
1 | sudo chmod +x /usr/local/bin/docker-compose |
运行下列命令检查安装的 Docker Compose 版本:
1 | docker-compose version |
方式 2、使用 Pip 安装 Docker Compose
或许,我们可以使用 Pip 安装 Docker Compose 。Pip 是 Python 包管理器,用来安装使用 Python 编写的应用程序。
参考下列链接安装 Pip 。
如何使用 Pip 管理 Python 包
安装 Pip 后,运行以下命令安装 Docker Compose。下列命令对于所有 Linux 发行版都是相同的!
1 | pip install docker-compose |
安装 Docker Compose 后,使用下列命令检查版本:
1 | docker-compose version |
恭喜你!我们已经成功安装了 Docker 社区版和 Docker Compose 。
安装了 Docker,然后呢?查看本系列的下一篇文章,了解 Docker 基础知识。
要在基于 RPM 的系统(例如 RHEL、Fedora、CentOS、AlmaLinux、Rocky Linux 和 openSUSE)中安装 Docker,请参考以下链接。
遇到的问题
docker ps -a 报错
错误如下:
1 | Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1": dial unix /var/run/docker.sock: connect: permission denied |
解决:
1 | sudo addgroup --system docker |
总结
在这篇教程中,我们讨论了 Docker 是什么,如何在 Ubuntu 22.04 LTS Jammy Jellyfish 中安装
Docker 。然后学习了如何通过运行 hello-world Docker 镜像测试 Docker
是否成功安装。最后,我们通过使用两种不同的方式安装 Docker Compose 作为本教程的结尾。