Docker 原生工具:Docker Compose快速指南,多容器应用程序管理变得轻而易举

举报
wljslmz 发表于 2022/07/28 00:36:03 2022/07/28
【摘要】 Docker Compose 是一个与 Docker 原生集成的工具,让管理多容器应用程序变得轻而易举。 Docker Compose 提供的好处很多,其中包括: 轻松管理容器网络:通过 Docker...

Docker Compose 是一个与 Docker 原生集成的工具,让管理多容器应用程序变得轻而易举。

Docker Compose 提供的好处很多,其中包括:

  • 轻松管理容器网络:通过 Docker 网络连接两个容器在 Docker Compose 中非常简单,就像定义一个网络并告诉容器连接到它一样简单,此外,Docker Compose 可以在您创建和销毁容器本身时自动创建和销毁网络。
  • 容器依赖关系:你有一个 Docker 容器,它需要另一个 Docker 容器来启动和运行,比如一个数据库,Docker Compose 允许您为容器定义依赖项,要求依赖项启动并运行,然后才能启动其他任何操作。
  • 可重复设置:由于容器设置将在创建任何内容之前定义,这允许设置的可重复性,从而更容易将它们转移到其他系统,虽然理论上你可以在 Bash 之类的东西中这样做,但它会使事情变得不那么灵活并且更难适应变化。

在 Linux 上安装 Docker Compose

Docker Compose 在大多数发行版存储库中都很容易获得。

您可以使用以下命令在基于Ubuntu 和 Debian 的发行版上安装 Docker Compose :

sudo apt install docker-compose

  
 
  • 1

在 Arch 和 Manjaro 上,您可以使用:

sudo pacman -S docker-compose

  
 
  • 1

在 Fedora 上,您可以使用 dnf 命令:

sudo dnf install docker-compose

  
 
  • 1

您可能需要在 CentOS 上安装 Docker Compose付出更多努力。

对于任何其他发行版,您始终可以查看安装文档以获取有关获取所需软件包的信息。

创建我们的第一个 Docker Compose 文件

本指南假定您已经熟悉并熟悉 docker CLI 工具,如果不是,请考虑这样做,否则您可能会遇到一堆简单的问题。

Docker Compose 文件存储在 name 下,当您在同一目录中docker-compose.yml运行命令时会自动找到。docker-compose你猜对了,它的语法采用 YAML 的形式。

我们将从一个创建 Nextcloud 实例的文件开始,然后回顾它实际上是如何做到的。

首先,您需要创建撰写文件。在系统上创建一个空目录,然后创建docker-compose.yml文件。

使用 Docker 部署 Nextcloud

接下来,用以下内容填充文件:

version: '3.5'
services:
  nextcloud_app:
    container_name: nextcloud_app
    image: nextcloud
    restart: unless-stopped
    networks:
      - nextcloud
    ports:
      - 80:80
    volumes:
      - ./data/app:/var/www/html
    depends_on:
      - nextcloud_mariadb

  nextcloud_mariadb:
    container_name: nextcloud_mariadb
    image: mariadb
    restart: unless-stopped
    networks:
      - nextcloud
    volumes:
      - ./data/mariadb:/var/lib/mysql
    environment:
      MARIADB_ROOT_PASSWORD: 'mariadb'

networks:
  nextcloud:
    name: nextcloud_docker_network

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

现在您只需要运行docker-compose up -d,您就可以使用 Docker 成功部署 Nextcloud 了。

这是Nextcloud的登录页面。

了解我们的 Docker Compose 文件

现在您已经看到该文件确实有效,让我们回顾一下文件的内容,以便您真正了解它到底在做什么。

“版本”标签

version: '3.5'

  
 
  • 1

首先,version标签。这只是指定 Docker Compose 文件格式的版本,因为不同的版本会有不同的语法,您通常希望将其保留为最新版本,但并非必须如此,如果您有一些旧文件,这会很有帮助。

“服务”标签

services:
  nextcloud_app:
    container_name: nextcloud_app
    image: nextcloud
    restart: unless-stopped
    networks:
      - nextcloud
    ports:
      - 80:80
    volumes:
      - ./data/app:/var/www/html
    depends_on:
      - nextcloud_mariadb

  nextcloud_mariadb:
    container_name: nextcloud_mariadb
    image: mariadb
    restart: unless-stopped
    networks:
      - nextcloud
    volumes:
      - ./data/mariadb:/var/lib/mysql
    environment:
      MARIADB_ROOT_PASSWORD: 'mariadb'

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

接下来,您会看到services标签。这将启动docker-compose up -d运行时创建的所有应用程序的列表。

接下来我们开始列出我们的第一个容器,nextcloud_app. 这用作应用程序的标识符,可供其他 Docker Compose 命令使用,请注意,这不是容器本身的名称 - 在下一部分中指定。

现在,您开始定义有关容器的所有内容。以下是对所有字段含义的复习,但如果您已经了解 Docker,大多数字段应该是不言自明的:

  • container_name: 定义容器的名称。等效于–name选项。
  • image: 定义从容器中提取的图像。
  • restart:定义容器的重启策略。相当于–restart。
  • networks: 定义容器连接的网络。该网络可以创建,也可以已经存在。此值用作标识符,docker-compose而不是网络的实际名称(在networks标记部分中定义)。
  • ports:定义容器可以连接的主机端口。相当于–publish。
  • volumes:定义容器的体积。相当于–volume。
  • environment:定义容器的环境变量。相当于–env。此选项支持两种语法类型。第一个是variable: value,这是这里使用的。如果您习惯了dockerCLI 语法,可能会更熟悉的另一个选项是- variable=value.
  • depends_on:指定容器依赖项。这用于要求容器在其依赖项拥有之前不启动。这接受来自容器列表的值。(不是container_name!)

“网络”标签

networks:
  nextcloud:
    name: nextcloud_docker_network

  
 
  • 1
  • 2
  • 3

现在你到了networks标签。这用于定义我们networks为容器列出的网络。

在该networks部分中,您首先列出了在 下提供给网络的标识符services。在这里,那是nextcloud。

接下来,您定义可以用 看到的网络名称docker network ls。在这里,我们将其命名为nextcloud_docker_network。

如果您希望容器加入一个已经存在的网络,您可以使用以下语法,替换network_name为 Docker 网络的名称:

networks:
  nextcloud:
    external: true
    name: network_name

  
 
  • 1
  • 2
  • 3
  • 4

您可以将 yml 文件命名为任何名称,但在使用 docker-compose 命令时必须指定文件名,保持传统并将其命名为 docker-compose.yml 以保持命令简短。

文章来源: blog.csdn.net,作者:wljslmz,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_43025343/article/details/124298321

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。