Docker容器编排利器Compose怎么用

发布时间:2021-08-21 09:22:48 作者:小新
来源:亿速云 阅读:118

这篇文章将为大家详细讲解有关Docker容器编排利器Compose怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Compose简介

Compose的前身是Fig,Fig被Docker收购之后正式更名为Compose,Compose向下兼容Fig。Compose是一个用于定义和运行多容器Docker应用的工具,只需要一个Compose的配置文件和一个简单的命令就可以创建并运行应用所需的所有容器。在配置文件中,所有容器通过services来定义,并使用docker-compose命令启动或停止容器以及所有依赖容器。

安装Compose

Compose的安装方式有多种,这里推荐使用curl命令安装,在安装之前,要确保你的机器上已经安装了Docker,可以运行sudo docker version命令来确认是否已安装了Docker。截至目前,Compose的最新发布版为1.11.2,下面演示在一台已经安装好Docker的Linux主机上安装Compose。

安装很简单,只需要执行下面的命令即可:

sudo curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

等待安装完毕后,执行下面的命令,为docker-compose添加可执行权限:

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

输入docker-compose --version命令可以查看安装结果。

除了这种安装方式之外,还可以通过Python的pip命令安装或将Compose安装成Docker容器,详情请参见https://docs.docker.com/compose/install/#install-as-a-container。

如果要卸载Compose,可以执行sudo rm /usr/local/bin/docker-compose命令。

Compose入门

下面我们通过一个简单的例子演示Compose的使用步骤,使用Python构建一个Web应用,该应用使用Flask框架,并在Redis中维护一个命中计数(即使你不熟悉Python也没有关系,你甚至不需要安装Python和Redis,我们会从容器中获取这些依赖环境)。

创建工程

首先需要一个文件夹作为项目文件夹:

mkdir composetest
cd composetest

在项目文件夹下创建一个app.py的文件,并将下面的代码拷贝并粘贴到该文件中:

from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
  count = redis.incr('hits')
  return 'Hello World! I have been seen {} times.\n'.format(count)

if __name__ == "__main__":
  app.run(host="0.0.0.0", debug=True)

在项目文件夹下创建一个requirements.txt的文件,并将下面的代码拷贝并粘贴到该文件中:

flask
redis

到此,我们已经完成了新建项目,编码,添加依赖等工作。

创建Dockerfile

下面我们创建一个Dockerfile文件用于构建Docker镜像,该镜像包含了运行该Web应用的所有依赖,包括Python运行环境。

在项目文件夹下创建一个Dockerfile文件,并将下面的内容拷贝并粘贴到该文件中:

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

大概解释一下这个配置文件:

  1. 使用python-3.4-alpine作为基础镜像

  2. 将当前目录添加到镜像中/code目录下

  3. 将/code设置为工作目录

  4. 安装Python依赖

  5. 设置默认执行命令

在Compose文件中定义services

在项目文件夹下创建一个docker-compose.yml文件,并将下面的内容拷贝并粘贴到该文件中:

version: '2'
services:
 web:
  build: .
  ports:
   - "5000:5000"
  volumes:
   - .:/code
 redis:
  image: "redis:alpine"

该配置文件中包含两个services,即web和redis。web会使用当前目录中的Dockerfile文件构建镜像,并将容器的5000端口暴露给主机,然后将项目文件夹挂载到容器中的/code目录下;redis使用官方发布的镜像构建。

构建并运行

执行下面的命令构建并运行容器:

sudo docker-compose up

容器构建完成并启动后,可以在浏览器中输入http://localhost:5000查看结果。页面会打印“Hello World! I have been seen 1 times.”,刷新页面后,计数会累加变成2。

更新应用

由于项目文件夹挂载到了容器中,所以我们可以直接修改项目文件夹的应用,修改的结果立即反应到容器中,而不用重新启动容器。将app.py文件中的hello方法中的返回值修改成如下:

return 'Hello from Docker! I have been seen {} times.\n'.format(count)

保存后刷新浏览器,发现打印结果已经更新。

Compose的其他命令

上面提到的Componse使用命令构建并启动容器,是以前台的方式启动的,如果希望以后台启动,可以添加参数-d,比如下面这样:

sudo docker-compose up -d

docker-compose ps命令可以查看正在运行的容器:

liuwei@liuwei-Ubuntu:~$ sudo docker-compose ps
Name           Command        State      Ports
-------------------------------------------------------------------------------------
composetest_redis_1  docker-entrypoint.sh redis ...  Up   6379/tcp
composetest_web_1   python app.py          Up   0.0.0.0:5000->5000/tcp

如果使用sudo docker-compose up -d命令以后台方式启动,可以用docker-compose stop命令停止。docker-compose down --volumes命令可以停止容器并将其删除, --volumns表示同时删除redis数据文件目录。

有关Compose的更多命令,可以通过sudo docker-compose --help查看。

以上就是Compose的一个基本使用过程,可以发现,Compose将docker run命令整合到了一个docker-compose.yml配置文件中,对于大型Docker集群的管理是很方便的,例可以将多个service组合成更复杂的service组,为每个service指定不同的Dockerfile,然后把它们link在一起。

关于“Docker容器编排利器Compose怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

推荐阅读:
  1. Docker Compose 容器编排 + Consul 集
  2. 如何对Docker容器进行编排

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

docker compose

上一篇:Tomcat整体结构的示例分析

下一篇:Tomcat中Session管理的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》