在Ubuntu 14.04上安装和利用Docker Compose的方法

打印 上一主题 下一主题

主题 628|帖子 628|积分 1884

前些天发现了一个巨牛的人工智能学习网站,普通易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介

Docker 是一个很棒的工具,但要充实发挥其潜力,最好是让应用程序的每个组件都在自己的容器中运行。对于具有许多组件的复杂应用程序,编排全部容器一起启动和关闭(更不消说相互通讯)很快就会变得难以控制。
Docker 社区提出了一个盛行的解决方案,叫做 Fig,它答应您利用单个 YAML 文件来编排全部 Docker 容器和配置。这变得如此盛行,以至于 Docker 团队终极决定基于 Fig 源码制作自己的版本。他们称之为 Docker Compose。简而言之,它使得处置处罚 Docker 容器的编排过程(如启动、关闭和设置容器间的链接和卷)变得非常轻易。
通过本文,您将安装 Docker 和 Docker Compose,并对 Docker Compose 的工作原理有基本的相识。
Docker 和 Docker Compose 概念

利用 Docker Compose 必要将一堆差别的 Docker 概念结合在一起,因此在开始之前,让我们花一分钟时间回顾涉及的各种概念。如果您已经熟悉 Docker 概念,如卷、链接和端口转发,那么您可能想直接跳到下一节。
Docker 镜像

每个 Docker 容器都是 Docker 镜像的当地实例。您可以将 Docker 镜像视为完整的 Linux 安装。通常,最小安装只包含运行镜像所需的最少软件包。这些镜像利用主机系统的内核,但由于它们运行在 Docker 容器内部并且只能看到自己的文件系统,因此完全可以在 Ubuntu 主机上运行 CentOS(或反之亦然)。
大多数 Docker 镜像都是通过 Docker Hub 分发的,这是由 Docker 团队维护的。大多数盛行的开源项目都有对应的镜像上传到 Docker Registry,您可以利用这些镜像来部署软件。在可能的环境下,最好获取“官方”镜像,因为它们由 Docker 团队保证遵循 Docker 最佳实践。
Docker 镜像之间的通讯

默认环境下,Docker 容器与主机机器隔离,这意味着默认环境下主机机器无法访问 Docker 容器内部的文件系统,也无法通过网络与其通讯。不消说,这使得配置和处置处罚运行在 Docker 容器内部的镜像变得困难。
Docker 有三种主要方法来解决这个问题。第一种最常用的方法是让 Docker 指定环境变量,这些环境变量将在 Docker 容器内部设置。然后,运行在 Docker 容器内部的代码将在启动时检查这些环境变量的值,并利用它们来精确配置自身。
另一种常用的方法是 Docker 数据卷。Docker 卷有两种类型 — 内部和共享。
指定内部卷意味着对于您为特定 Docker 容器指定的文件夹,当容器被移除时数据将被持久化。例如,如果您想确保日记文件保留下来,您可能会指定一个内部的 /var/log 卷。
共享卷将 Docker 容器内的文件夹映射到主机机器上的文件夹。这答应您轻松地在 Docker 容器和主机机器之间共享文件,我们将在 Docker 数据卷文章中探究这一点。
与 Docker 容器通讯的第三种方式是通过网络。Docker 答应差别的 Docker 容器之间通过 links 进行通讯,以及端口转发,答应您将 Docker 容器内部的端口转发到主机服务器上的端口。例如,您可以创建一个链接,答应您的 WordPress 和 MariaDB Docker 容器相互通讯,并进行端口转发以将 WordPress 袒露给外部世界,以便用户可以连接到它。
先决条件

要遵循本文,您必要以下内容:


  • Ubuntu 14.04 Droplet
  • 具有 sudo 权限的非 root 用户(《利用 Ubuntu 14.04 进行初始服务器设置》表明了如何设置这一点。)
步骤 1 — 安装 Docker

起首,如果您尚未安装 Docker,请安装它。安装 Docker 的最快方法是下载并安装他们的安装脚本(您将被提示输入 sudo 暗码)。
  1. wget -qO- https://get.docker.com/ | sh
复制代码
上述命令会下载并执行 Docker 团队编写的一个小型安装脚本。如果您不信托第三方脚本,或者想要相识脚本的详细信息,请查看 DigitalOcean Docker 教程或 Docker 自己的安装文档。
如果您的用户配置不精确,利用 Docker 就会很麻烦,因此利用以下命令将您的用户添加到 docker 组中。
  1. sudo usermod -aG docker $(whoami)
复制代码
注销并重新登录到服务器以激活您的新组。
步骤 2 — 安装 Docker Compose

现在您已经安装了 Docker,让我们继承安装 Docker Compose。起首,安装 python-pip 作为先决条件:
  1. sudo apt-get -y install python-pip
复制代码
然后您可以安装 Docker Compose:
  1. sudo pip install docker-compose
复制代码
步骤 3 — 利用 Docker Compose 运行容器

公共 Docker 注册表 Docker Hub 包含一个简朴的 Hello World 镜像。现在我们已经安装了 Docker Compose,让我们用这个非常简朴的例子来测试一下。
起首,为我们的 YAML 文件创建一个目录:
  1. mkdir hello-world
复制代码
然后切换到该目录:
  1. cd hello-world
复制代码
现在利用你喜好的文本编辑器创建 YAML 文件(我们将利用 nano):
  1. nano docker-compose.yml
复制代码
将以下内容放入文件中,保存文件并退出文本编辑器:
  1. my-test:
  2.   image: hello-world
复制代码
第一行将作为容器名称的一部分。第二行指定要利用哪个镜像来创建容器。该镜像将从官方 Docker Hub 堆栈下载。
在 ~/hello-world 目录中,执行以下命令来创建容器:
  1. docker-compose up
复制代码
输出应该以以下内容开头:
  1. [secondary_label Output of docker-compose up
  2. ]Creating helloworld_my-test_1...Attaching to helloworld_my-test_1my-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 正在做的事情:

  • Docker 客户端联系了 Docker 保卫进程。
  • Docker 保卫进程从 Docker Hub 拉取了 “hello-world” 镜像。
  • Docker 保卫进程从该镜像创建了一个新的容器,运行天生当前正在阅读的输出的可执行文件。
  • Docker 保卫进程将该输出流式传输到 Docker 客户端,后者将其发送到您的终端。
如果进程没有自行退出,请按 CTRL-C。
这个简朴的测试并没有展示 Docker Compose 的主要优势之一 —— 可以大概同时启动和关闭一组 Docker 容器。《如何在 Ubuntu 14.04 上利用 Docker Compose 安装 Wordpress 和 PhpMyAdmin》文章展示了如何利用 Docker Compose 运行三个容器作为一个应用程序组。
步骤 4 — 学习 Docker Compose 命令

让我们来相识 docker-compose 工具支持的命令。
docker-compose 命令是基于每个目录的。您可以在一台机器上运行多个 Docker 容器组 —— 只需为每个容器创建一个目录,并在其目录内部为每个容器创建一个 docker-compose.yml 文件。
到目前为止,我们一直在自己运行 docker-compose up
,并利用 CTRL-C 来关闭它。这答应在终端窗口中表现调试消息。然而,当在生产环境中运行时,您会盼望 docker-compose 更像一个服务。一个简朴的方法是在启动会话时添加 -d 选项:
  1. docker-compose up
  2. -d
复制代码
docker-compose 现在将在背景运行。
要表现您的 Docker 容器组(已停止和当前运行的),请利用以下命令:
  1. docker-compose ps
复制代码
例如,以下内容表现 helloworld_my-test_1 容器已停止:
  1. [secondary_label Output of `docker-compose ps
  2. `]        Name           Command   State    Ports -----------------------------------------------helloworld_my-test_1   /hello    Exit 0         
复制代码
运行中的容器将表现 Up 状态:
  1. [secondary_label Output of `docker-compose ps
  2. `]     Name              Command          State        Ports      ---------------------------------------------------------------nginx_nginx_1   nginx -g daemon off;   Up      443/tcp, 80/tcp
复制代码
要停止应用程序组的全部运行中的 Docker 容器,请在与用于启动 Docker 组的 docker-compose.yml 文件雷同的目录中发出以下命令:
  1. docker-compose stop
复制代码
在某些环境下,Docker 容器将在内部卷中存储其旧信息。如果您想重新开始,可以利用 rm 命令完全删除构成容器组的全部容器:
  1. docker-compose rm
复制代码
如果您实行从除了包含 Docker 容器和 .yml 文件的目录之外的目录中运行这些命令,它将抱怨并不会表现您的容器:
  1. [secondary_label Output from wrong directory]
  2.         Can't find a suitable configuration file in this directory or any parent. Are you in the right directory?
  3.         Supported filenames: docker-compose.yml, docker-compose.yaml, fig.yml, fig.yaml
复制代码
步骤 5 — 访问 Docker 容器文件系统(可选)

如果您必要在容器内部的命令提示符下工作,可以利用 docker exec 命令。
Hello World! 示例在运行退却出,因此我们必要启动一个将保持运行的容器,以便我们可以利用 docker exec 访问容器的文件系统。让我们来看看 Docker Hub 上的 Nginx 镜像。
为其创建一个新目录并切换到该目录:
  1. mkdir ~/nginx && cd $_
复制代码
在我们的新目录中创建一个 docker-compose.yml 文件:
  1. nano docker-compose.yml
复制代码
并粘贴以下内容:
  1. nginx:
  2.   image: nginx
复制代码
保存文件并退出。我们只必要利用以下命令将 Nginx 容器作为背景进程启动:
  1. docker-compose up
  2. -d
复制代码
Nginx 镜像将被下载,然后容器将在背景启动。
现在我们必要容器的 CONTAINER ID。列出全部正在运行的容器:
  1. docker ps
复制代码
您将看到雷同以下内容:
  1. [secondary_label Output of `docker ps
  2. `]CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMESe90e12f70418        nginx               "nginx -g 'daemon off"   6 minutes ago       Up 5 minutes        80/tcp, 443/tcp     nginx_nginx_1
复制代码
如果我们想要对该容器内的文件系统进行更改,我们将利用其 ID(在本例中为 e90e12f70418)并利用 docker exec 在容器内启动一个 shell:
  1. docker exec -it e90e12f70418 /bin/bash
复制代码
-t 选项打开一个终端,-i 选项使其交互式。/bin/bash 选项在运行的容器内打开一个 bash shell。请确保利用您的容器 ID。
您将看到雷同于以下内容的容器的 bash 提示符:
  1. root@e90e12f70418:/#
复制代码
从这里,您可以从命令提示符工作。请记住,除非您在保存为数据卷的目录中,否则您的更改将在容器重新启动时消失。另一个留意事项是,大多数 Docker 镜像都是利用非常简化的 Linux 安装创建的,因此您风俗利用的一些命令行实用程序和工具可能不存在。
结论

很好,这就涵盖了 Docker Compose 的基本概念以及如何安装和运行它。查看在 Ubuntu 14.04 上利用 Docker Compose 部署 Wordpress 和 PHPMyAdmin 的教程,相识如何利用 Docker Compose 部署应用程序的更复杂示例。
要获取 docker-compose.yml 文件的完整配置选项列表,请参考 Compose 文件参考。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

前进之路

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表