如何在 Ubuntu 16.04 上安装 Docker Compose

2023-11-06

介绍

Docker是一个很好的工具,用于在软件容器内自动部署 Linux 应用程序,但要充分利用其潜力,应用程序的每个组件都应该在自己的单独容器中运行。对于具有大量组件的复杂应用程序,编排所有容器一起启动、通信和关闭可能很快就会变得笨拙。

Docker 社区提出了一个流行的解决方案,称为Fig,它允许您使用单个 YAML 文件来编排所有 Docker 容器和配置。这变得如此流行,以至于 Docker 团队决定制作Docker 组合基于 Fig 源,现已弃用。 Docker Compose 使用户可以更轻松地编排 Docker 容器的进程,包括启动、关闭以及设置容器内链接和卷。

在本教程中,我们将向您展示如何安装最新版本的 Docker Compose 以帮助您管理多容器应用程序。

先决条件

要阅读本文,您需要一台具有以下配置的 Ubuntu 16.04 服务器:

  • A 具有 sudo 权限的非 root 用户 (使用 Ubuntu 16.04 进行初始服务器设置解释了如何设置。)
  • 按照以下说明安装了 DockerStep 1 and Step 2 of 如何在 Ubuntu 16.04 上安装和使用 Docker

一旦这些就位,您就可以继续进行了。

Note:尽管先决条件提供了在 Ubuntu 16.04 上安装 Docker 的说明,但docker只要安装了 Docker,本文中的命令就可以在其他操作系统上运行。

第 1 步 — 安装 Docker Compose

虽然我们可以从官方 Ubuntu 存储库安装 Docker Compose,但它比最新版本落后了几个小版本,因此我们将从 Docker 的 GitHub 存储库安装 Docker Compose。下面的命令与您在Releases页。通过使用-o标志首先指定输出文件而不是重定向输出,此语法避免了使用时导致的权限被拒绝错误sudo.

我们将检查当前版本如有必要,请在以下命令中更新它:

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

接下来我们设置权限:

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

然后我们通过检查版本来验证安装是否成功:

  1. docker 撰写 - 版本

这将打印出我们安装的版本:

Output
docker-compose version 1.18.0, build 8dd22a9

现在我们已经安装了 Docker Compose,我们准备运行“Hello World”示例。

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

公共 Docker 注册表 Docker Hub 包括你好世界用于演示和测试的图像。它说明了使用 Docker Compose 运行容器所需的最低配置:调用单个映像的 YAML 文件:

首先,我们将为 YAML 文件创建一个目录并移入其中:

  1. mkdir你好世界
  2. cd你好世界

然后,我们将创建 YAML 文件:

  1. nanodocker-compose.yml

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

docker-compose.yml
my-test:
 image: hello-world

YAML 文件中的第一行用作容器名称的一部分。第二行指定使用哪个映像来创建容器。当我们运行命令时docker-compose up它将根据我们指定的名称查找本地图像,hello-world。完成此操作后,我们将保存并退出文件。

我们可以使用以下命令手动查看系统上的图像docker images命令:

  1. docker images

当根本没有本地图像时,仅显示列标题:

Output
REPOSITORY TAG IMAGE ID CREATED SIZE

现在,虽然还在~/hello-world目录下,我们将执行以下命令:

  1. docker 撰写 up

第一次运行命令时,如果没有名为hello-world,Docker Compose 将从 Docker Hub 公共存储库中提取它:

Output
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程序,这反过来又确认安装似乎正在运行:

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

然后它打印出它做了什么的解释:

docker-compose up 的输出
1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 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 容器仅在命令处于活动状态时运行,因此一次hello运行完毕,容器停止。因此,当我们查看活动进程时,将出现列标题,但hello-world容器不会被列出,因为它没有运行。

  1. docker ps
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

我们可以使用以下命令查看下一步需要的容器信息-a显示所有容器的标志,而不仅仅是活动容器:

  1. docker ps -a
Output
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命令,后跟容器 ID 或名称。下面,我们使用来自docker ps -a我们刚刚运行的命令。请务必替换容器的 ID:

  1. docker rm 06069fd5ca23

一旦所有引用该图像的容器都被删除,我们就可以删除该图像:

  1. dockerrmi 你好世界

结论

我们现在已经安装了 Docker Compose,通过运行 Hello World 示例测试了我们的安装,并删除了测试映像和容器。

虽然 Hello World 示例证实了我们的安装,但简单的配置并未显示 Docker Compose 的主要优势之一——能够同时启动和关闭一组 Docker 容器。要了解 Docker Compose 的强大功能,您可能想查看这个实际示例,如何在 Ubuntu 16.04 上使用 Docker 和 Docker Compose 配置持续集成测试环境

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 16.04 上安装 Docker Compose 的相关文章

随机推荐

  • 如何在 Vim / Vi 中显示行号

    Vim Vi 是许多软件开发人员和 L inux 系统管理员首选的文本编辑器 默认情况下 Vim 不显示行号 但可以轻松打开它们 Vim 支持三种行号模式 可帮助您浏览文件 除了标准的绝对行编号之外 Vim 还支持相对和混合行编号模式 本文
  • 如何在 CentOS 7 上安装 Webmin

    Webmin是一个用于 Linux UNIX 系统管理的开源 Web 控制面板 Webmin 允许您管理用户 组 磁盘配额以及配置最流行的服务 包括 Web FTP 电子邮件和数据库服务器 本教程介绍如何在 CentOS 7 服务器上安装
  • 如何在 Linux 中更改 SSH 端口

    默认情况下 SSH 侦听端口 22 更改默认 SSH 端口可以降低自动攻击的风险 从而为您的服务器增加了额外的安全层 本教程介绍如何更改 Linux 中的默认 SSH 端口 我们还将向您展示如何配置防火墙以允许访问新的 SSH 端口 保护服
  • 如何使用 SOCKS 隧道在没有 VPN 的情况下安全地路由 Web 流量

    作者选择了COVID 19 救济基金接受捐赠作为为捐款而写程序 介绍 在某些时候 您可能会发现自己所在的网络不安全或防火墙限制过于严格 并且您需要确保没有人在监视您的流量 一种解决方案是使用 VPN 但许多 VPN 需要在您的计算机上安装特
  • Java 集合 sort()

    今天我们将研究Java集合的排序方法 在与java中的集合 我们经常需要对数据进行排序 Java 集合 sort Java Collections类为我们提供了非常方便的方法Collections sort 对所有进行排序List实施例如链
  • 提高 React 应用程序性能的 5 个技巧

    您的 React 应用程序是否感觉有点迟缓 您是否因为可能看到的内容而害怕打开 Chrome DevTools 中的 paint flash 试试这 5 个性能技巧 本文包含 React 开发的 5 个性能技巧 您可以使用此目录快速浏览本文
  • 如何在 Linux 上读取和设置环境变量和 Shell 变量

    介绍 当通过 shell 会话与服务器交互时 shell 会编译许多信息来确定其行为和对资源的访问 其中一些设置包含在配置设置中 而其他设置则由用户输入确定 shell 跟踪所有这些设置和详细信息的一种方法是通过它维护的一个称为环境 环境是
  • Python 当前日期时间

    我们可以使用Python datetime模块来获取本地系统的当前日期和时间 from datetime import datetime Current date time in local system print datetime no
  • 如何在 CentOS 7 上安装和使用 Docker

    介绍 Docker 是一个应用程序 可以让在容器中运行应用程序进程变得简单 容易 就像虚拟机一样 只是更便携 更资源友好 更依赖于主机操作系统 有关 Docker 容器的不同组件的详细介绍 请查看Docker 生态系统 常用组件简介 在 C
  • 如何在 Ubuntu 18.04 上安装/卸载 NodeJS

    NodeJS 是一个 JavaScript 框架 可让您轻松构建快速的网络应用程序 在本指南中 我们将深入研究如何在 Ubuntu 18 04 上安装 NodeJS 步骤 1 将 NodeJS PPA 添加到 Ubuntu 18 04 首先
  • 在 C/C++ 中使用 getch() 函数

    在本文中 我们将了解在 C C 中使用 getch 函数 如果您想读取从键盘输入的字符 getch 函数非常有用 虽然这不是 C 标准的一部分 但这仍然是 POSIX C 函数 因此 我们仍然可以在 Windows Linux Mac 上使
  • 如何保护 Ubuntu 14.04 上的 Redis 安装

    介绍 Redis 是一种内存中 NoSQL 键值缓存和存储 也可以持久保存到磁盘上 本教程展示如何实现 Redis 服务器的基本安全性 但是 请记住 Redis 是为以下用户而设计的 值得信赖的客户 in a 可信环境 本身没有强大的安全功
  • Python 漂亮打印 JSON

    我们可以使用Python json 模块漂亮地打印 JSON 数据 建议使用 json 模块来处理 JSON 文件 我们可以使用dumps 方法来获取格式漂亮的 JSON 字符串 1 Python漂亮打印JSON字符串 import jso
  • 如何在 JavaScript 中使用运算符进行数学运算

    介绍 数学运算是任何编程语言最基本和通用的功能之一 在 JavaScript 中 数字经常用于常见任务 例如查找浏览器窗口大小 获取货币交易的最终价格以及计算网站文档中元素之间的距离 尽管对数学的高度理解并不是成为一名有能力的开发人员的先决
  • 如何实现SQL INSTR()函数?

    嘿伙计 在这篇文章中 我们将了解SQL INSTR 函数详细 SQL INSTR 的工作原理 SQL 作为一种查询语言 包含各种内置函数来处理数据库的字符串数据值 SQL INSTR 函数就是这样一个有趣的函数 SQL INSTR func
  • Java 从 URL 下载文件

    今天我们将学习如何用java从URL下载文件 我们可以用java net URL openStream java程序中从URL下载文件的方法 我们可以使用Java NIO Channels或Java IO InputStream从URL打开
  • 如何在Java中合并两个列表?

    在 Java 中合并两个列表通常是一个有用的操作 这些列表可以是 ArrayList 或 LinkedList 如何在 Java 中合并两个列表 在 Java 中 我们可以通过多种方式合并两个列表 让我们探索一些简单的方法来完成您的工作 1
  • 如何在 Ubuntu 18.04 上使用 Let's Encrypt 保护 Apache

    介绍 Let s Encrypt 是一个证书颁发机构 CA 提供免费获取和安装的方法TLS SSL 证书 从而在 Web 服务器上启用加密的 HTTPS 它通过提供软件客户端简化了流程 Certbot 它尝试自动化大多数 如果不是全部 所需
  • 如何在 CentOS 6 上安装 Linux、Apache、MySQL、PHP (LAMP) 堆栈

    Status 已弃用 本文介绍不再受支持的 CentOS 版本 如果您当前运行的服务器运行 CentOS 6 我们强烈建议您升级或迁移到受支持的 CentOS 版本 Reason CentOS 6 于 2020 年 11 月 30 日达到生
  • 如何在 Ubuntu 16.04 上安装 Docker Compose

    介绍 Docker是一个很好的工具 用于在软件容器内自动部署 Linux 应用程序 但要充分利用其潜力 应用程序的每个组件都应该在自己的单独容器中运行 对于具有大量组件的复杂应用程序 编排所有容器一起启动 通信和关闭可能很快就会变得笨拙 D