如何在Debian 9上安装Docker Compose

不使用Debian 9?选择其他版本:

介绍

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

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

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

先决条件

要阅读本文,您需要:

注意:尽管前提条件提供了在Debian 9上安装Docker的说明,但只要安装了Docker,本文中的docker命令就可以在其他操作系统上运行。

第1步 - 安装Docker Compose

虽然我们可以从官方Debian存储库安装Docker Compose,但它是最新版本背后的几个次要版本,所以我们将从Docker的GitHub存储库安装它。以下命令与您在“ 版本”页面上找到的命令略有不同。通过使用-o标志首先指定输出文件而不是重定向输出,此语法可避免遇到使用sudo时导致的权限被拒绝错误。

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

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

接下来我们将设置权限:

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

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

docker-compose --version

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

Outputdocker-compose version 1.22.0, build f46880fe

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

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

公共Docker注册表Docker Hub包含一个用于演示和测试的Hello World图像。它说明了使用Docker Compose运行容器所需的最小配置:调用单个映像的YAML文件。我们将创建这个最小配置来运行我们的hello-world容器。

首先,我们将为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: Pulling from library/hello-world
9db2ca6ccae0: Pull complete
Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc
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 |
. . .

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

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

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                       hello-world_my-test_1

这将显示我们完成后删除容器所需的信息。

第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容器。

更多Debian教程请前往腾讯云+社区学习更多知识。


参考文献:《 How To Install Docker Compose on Debian 9》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术翻译

使用Java完成对Docker的指南入门,第1部分

Docker是一个用于在容器中打包,部署和运行应用程序的平台。它可以在支持该平台的任何系统上运行容器:开发人员的笔记本电脑,“本地”系统或云端无需修改的系统。D...

1370
来自专栏散尽浮华

Docker容器学习梳理-Dockerfile构建镜像

在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低。所以就需要一 种文件或脚...

2938
来自专栏技术之路

Docker 简介

1.什么是Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 机...

3087
来自专栏Spring相关

在Centos7上安装Docker

在Centos7上安装Docker-ce直接用yum install docker -y安装的docker版本为1.12,但是docker发展很快,现在都18....

2523
来自专栏有刻

Docker 小记 — Docker Engine

4369
来自专栏性能与架构

轻量级容器Docker的核心概念

image.png Docker镜像 Docker镜像(Image)类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统 例如:一...

3895
来自专栏编程坑太多

跟我一起学docker(三)--镜像的常用操作

1706
来自专栏云计算教程系列

如何在Debian 9上安装和使用Docker

Docker是一个简化容器中应用程序进程管理过程的应用程序。容器允许您在资源隔离的进程中运行应用程序。它们与虚拟机类似,但容器更便携,更加资源友好,并且更依赖于...

6.2K5
来自专栏编程坑太多

『中级篇』Dockerfile实战(19)

1696
来自专栏编码前线

Docker容器进入的4种方式(推荐最后一种)

  在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器...

2663

扫码关注云+社区

领取腾讯云代金券