在Ubuntu 18.04上安装Docker Compose的方法

简介: 在Ubuntu 18.04上安装Docker Compose的方法

简介

Docker 是一个用于在软件容器内部自动部署 Linux 应用程序的强大工具,但要充分发挥其潜力,应用程序的每个组件都应该在自己独立的容器中运行。对于具有许多组件的复杂应用程序,编排所有容器以便一起启动、通信和关闭可能很快变得难以管理。

Docker 社区提出了一个流行的解决方案,称为 Fig,它允许您使用单个 YAML 文件来编排所有 Docker 容器和配置。这变得非常受欢迎,以至于 Docker 团队决定基于 Fig 源代码制作 Docker Compose,而 Fig 现在已经被弃用。

Docker Compose 使用户更容易地编排 Docker 容器的进程,包括启动、关闭和设置容器之间的链接和卷。在本教程中,您将安装最新版本的 Docker Compose 来管理多容器应用程序。

先决条件

要遵循本文,您需要一个安装了以下内容的 Ubuntu 18.04 服务器:

  • 一个具有 sudo 权限的非 root 用户(《在 Ubuntu 18.04 上进行初始服务器设置》解释了如何设置这一点。)
  • 使用《在 Ubuntu 18.04 上安装和使用 Docker》中的第 1 步第 2 步中的说明安装了 Docker。

步骤 1 — 安装 Docker Compose

虽然您可以从官方 Ubuntu 软件仓库安装 Docker Compose,但它的版本比最新版本落后了几个次要版本,因此您将从 Docker 的 GitHub 仓库安装 Docker Compose。下面的命令与您在 Releases 页面上找到的命令略有不同。通过使用 -o 标志来首先指定输出文件,而不是重定向输出,这种语法避免了使用 sudo 时出现的权限被拒绝的错误。

检查当前版本,如果有必要,更新以下命令中的版本:

sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

接下来设置权限:

sudo chmod +x /usr/local/bin/docker-compose

然后,您将通过检查版本来验证安装是否成功:

docker-compose --version

这将打印出您安装的版本:

docker-compose version 1.29.2, build 5becea4c

现在您已经安装了 Docker Compose,可以运行一个“Hello World”示例了。

步骤 2 — 使用 Docker Compose 运行容器

公共 Docker 注册表 Docker Hub 包含一个用于演示和测试的 Hello World 镜像。它演示了使用 Docker Compose 运行容器所需的最小配置:一个调用单个镜像的 YAML 文件:

首先,您将为 YAML 文件创建一个目录并进入该目录:

mkdir hello-world
cd hello-world

然后,您将创建 YAML 文件:

nano docker-compose.yml

将以下内容放入文件中,保存文件并退出文本编辑器:

my-test:
    image: hello-world

YAML 文件中的第一行用作容器名称的一部分。第二行指定要使用哪个镜像来创建容器。当您运行 docker-compose up 命令时,它将查找您指定的名称为 hello-world 的本地镜像。有了这个设置,您将保存并退出文件。

您可以使用 docker images 命令手动查看系统上的镜像:

docker images

当没有本地镜像时,只会显示列标题:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

现在,仍然在 ~/hello-world 目录中,您将执行以下命令:

docker-compose up

第一次运行该命令时,如果没有名为 hello-world 的本地镜像,Docker Compose 将从 Docker Hub 公共仓库中拉取它:

Pulling my-test (hello-world:latest)...
latest: Pulling from library/hello-world
c04b14da8d14: Downloading [==================================================>] c04b14da8d14: Extracting [==================================================>]  c04b14da8d14: Extracting [==================================================>]  c04b14da8d14: Pull complete
Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
Status: Downloaded newer image for hello-world:latest
. . .

拉取镜像后,docker-compose 创建一个容器,附加并运行 hello 程序,从而确认安装似乎正常运行:

. . .
Creating helloworld_my-test_1...
Attaching to helloworld_my-test_1
my-test_1 |
my-test_1 | Hello from Docker.
my-test_1 | This message shows that your installation appears to be working correctly.
my-test_1 |
. . .

然后它打印出它所做的事情的解释:

[secondary_label Output of docker-compose up]
. . .
1. Docker 客户端联系了 Docker 守护进程。
2. Docker 守护进程从 Docker Hub 拉取了 "hello-world" 镜像。
3. Docker 守护进程从该镜像创建了一个新的容器,运行了生成您当前正在阅读的输出的可执行文件。
4. Docker 守护进程将该输出流式传输到 Docker 客户端,后者将其发送到您的终端。
. . .

Docker 容器只在命令活动时运行,因此一旦 hello 运行结束,容器就会停止。因此,当您查看活动进程时,列标题将显示,但 hello-world 容器不会列出,因为它没有在运行。

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES

您可以使用 -a 标志查看所有容器而不仅仅是活动的容器,以查看容器信息,这将在下一步中用到:

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
06069fd5ca23        hello-world         "/hello"            35 minutes ago      Exited (0) 35 minutes ago                       drunk_payne

这显示了您在完成后需要删除容器时需要的信息。

步骤 3 —— 移除镜像(可选)

为了避免使用不必要的磁盘空间,你将会移除本地镜像。为此,你需要使用 docker rm 命令删除所有引用该镜像的容器,后面跟着容器的 CONTAINER ID 或者 NAME。下面,你将使用刚刚运行的 docker ps -a 命令得到的 CONTAINER ID。请确保替换为你的容器的 ID:

docker rm 06069fd5ca23

一旦所有引用该镜像的容器都被移除,你可以移除该镜像:

docker rmi hello-world

结论

你已经安装了 Docker Compose,通过运行一个 Hello World 示例测试了你的安装,并移除了测试镜像和容器。

虽然 Hello World 示例确认了你的安装,但是这个简单的配置并没有展示 Docker Compose 的主要优势之一 —— 能够同时启动和关闭一组 Docker 容器。要看到 Docker Compose 的威力,你可能想看看这个实际示例:如何在 Ubuntu 16.04 上使用 Docker 和 Docker Compose 配置持续集成测试环境 (注意:本文是针对 Ubuntu 16.04 而非 18.04)


目录
打赏
0
0
0
0
40
分享
相关文章
在Ubuntu上安装MEAN Stack的4个步骤
本指南介绍了在Ubuntu上安装MEAN Stack的四个步骤。MEAN Stack是一种基于JavaScript的开发堆栈,包含MongoDB、ExpressJS、AngularJS和NodeJS。步骤包括:1. 更新系统并准备安装MEAN;2. 从官方源安装最新版MongoDB;3. 安装NodeJS、Git和NPM;4. 克隆mean.io仓库并使用NPM安装剩余依赖项。通过这些步骤,您可以快速搭建基于MEAN Stack的应用开发环境。
30 2
在Ubuntu下安装Debian包:dpkg与apt命令的深度解构。
安装Debian包的知识,就像掌握了海上的航行技术,虽然起初会让人感到陌生甚至困惑,但只要你积累熟练,就能在Ubuntu的世界里畅游无阻。就像每一位成功的航海家,掌握好这些工具,去探索属于你的Ubuntu新世界吧!
57 21
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
31 16
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
93 30
|
11天前
|
Ubuntu gnome WhiteSur-gtk-theme类mac主题正确安装和卸载方式
通过这个过程,用户不仅可以定制自己的桌面外观,还可以学习到更多关于 Linux 系统管理的知识,从而更好地掌握系统配置和主题管理的技巧。
56 12
Docker 入门全攻略:安装、操作与常用命令指南
Docker 的世界非常广阔,这只是一个开始,请继续探索和学习 Docker 的高级特性和最佳实践。后续也会继续更新相关的理论与实践内容。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
如何在Ubuntu 20.04系统中安装Docker
安装 Docker 引擎的步骤如下:首先更新系统包索引 (`sudo apt update`),安装必要依赖包 (`apt-transport-https` 等),添加 Docker 官方 GPG 密钥及 APT 仓库。接着再次更新包索引并安装 Docker 引擎及相关工具 (`docker-ce` 等)。最后启动 Docker 服务并设置开机自启,通过 `docker --version` 和运行测试容器 (`sudo docker run hello-world`) 验证安装是否成功。
150 0
本地wsl的Ubuntu安装docker,不使用docker桌面版
本文提供了在WSL的Ubuntu环境中安装Docker引擎的步骤,包括安装引擎、配置iptables以及启动Docker服务。
449 2
Ubuntu 18.04 安装Docker实战案例
关于如何在Ubuntu 18.04系统上安装Docker的实战案例,包括安装步骤、配置镜像加速以及下载和运行Docker镜像的过程。
666 3
Ubuntu 18.04 安装Docker实战案例
2024年最新版 Ubuntu 20+ 上安装 Docker
这篇文章提供了在Ubuntu 20+版本上安装Docker的详细步骤,包括更新软件包索引、安装依赖包、添加Docker官方GPG密钥、设置Docker稳定版仓库、安装Docker CE以及验证安装是否成功,并指导如何将用户添加到docker组以非root用户身份运行Docker。