• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > Docker 容器编排利器Compose(起步篇)

Docker 容器编排利器Compose(起步篇)

作者:一书生VOID的博客 字体:[增加 减小] 来源:互联网

本文主要包含docker,容器编排,Docker,Compose等服务器相关知识,一书生VOID的博客 希望可以进行参考

一个大型的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。

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

等待安装完毕后,执行下面的命令,为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系列之使用Docker Compose编排容器
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Docker实践8:Compose,docker实践compose
  • Docker buildx构建多平台镜像并推送到私有仓库的方法
  • Docker三个基本概念镜像(Image)容器(Container)仓库(Repository)
  • 什么是Docker?为什么要使用Docker
  • docker 开源的应用容器引擎
  • 如何给docker设置http代理
  • docker官方mysql镜像自定义配置详解
  • 详解Docker数据管理(数据卷&数据卷容器)
  • 如何利用Docker容器实现代理转发与数据备份详解
  • 详解Docker Swarm 在持续集成测试中的应用

相关文章

  • IBM KVM三特点:Linux、虚拟化与开源
  • Openstack 创建项目和虚拟机详细介绍
  • 使用docker搭建gitlab详解
  • Docker 提交仓库的方法
  • VMware Ubuntu安装图文教程
  • VirtualBox虚拟机安装CentOS 7图文教程
  • docker 如何搭建私有仓库(ubuntu 14.04,Docker版本1.6.4)详细介绍
  • Docker安装和简单使用入门教程
  • Docker push镜像失败解决方法
  • VMware中CentOS设置静态IP的方法

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 详解Ubuntu 16.04 搭建KVM环境
    • VM12 虚拟机使用桥接模式却连不上网的解决方法(图文讲解)
    • Dockerfile基础分享
    • WIN10下安装Docker的教程
    • 30分钟带你了解Docker(推荐)
    • Docker配置国内加速器加速镜像下载的方法
    • Docker overlay 网络搭建的方法
    • win10安装VMware教程详解
    • docker daemon远程连接设置详解
    • VirtualBox 2.2.0使用主机网络上网配置教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有